localhost 的 hostvars(Ansible master)只抓住了一些事实

hostvars for localhost (Ansible master) only grabbing a few facts

我的剧本中有这行:

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

出于某种原因,它只抓取了少数事实,主要是围绕 master 的设置。

- 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)时间来为我生成的文件添加时间戳。这种行为似乎与我 运行 使用的另一台机器不一致,我无法确定原因。任何指导将不胜感激。

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

gather_subset = all

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

ansible --version

必须returns这样一行:

config file = /home/.../ansible.cfg

您不会在您的剧本中从 localhost 收集事实,因此您不应该期望 Ansible 拥有它们。

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

---
- hosts: localhost
  connection: local

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