0

我的剧本中有这一行:

- debug: msg="{{ hostvars['127.0.0.1'] }}"

由于某种原因,它只抓住了一些事实,主要是围绕主人的设置。

- hosts: mfg-pc:master
  become: yes
  become_method: sudo
  gather_facts: True
  tasks:
    - debug: msg="{{ hostvars['127.0.0.1'] }}"

收集到的事实示例:

{
    "msg": {
        "ansible_check_mode": false,
        "ansible_connection": "local",
        "ansible_python_interpreter": "/usr/bin/python",
        "ansible_version": {
            "full": "2.2.0.0",
            "major": 2,
            "minor": 2,
            "revision": 0,
            "string": "2.2.0.0"
        },
        "group_names": [
            "ungrouped"
        ],
        "groups": {
            "all": [

不幸的是,它没有获取我得到的完整变量列表:

ansible -m setup 127.0.0.1

我需要完整的事实列表,因为我试图利用主机(Ansible master)时间来为我生成的文件添加时间戳。这种行为似乎与我在其上运行它的另一台机器不一致,我终生无法确定原因。任何指导将不胜感激。

4

2 回答 2

3

你不会从localhost你的剧本中收集事实,所以你不应该期望 Ansible 拥有它们。

您必须添加一个将对setup您执行(隐式)执行的游戏localhost,例如:

---
- hosts: localhost
  connection: local

- hosts: mfg-pc:master
  become: yes
  become_method: sudo
  gather_facts: True
  tasks:
    - debug: msg="{{ hostvars['127.0.0.1'] }}"
于 2016-12-08T07:21:46.117 回答
0

将参数gather_subset检查到您的配置文件ansible.cfg中。要返回所有事实,它必须设置为all

gather_subset = all

如果需要,要本地化您的配置文件ansible.cfg,请键入:

ansible --version

它必须返回这样的一行:

config file = /home/.../ansible.cfg
于 2016-12-08T06:42:30.327 回答