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

时间:2016-12-08 01:34:29

标签: ansible ansible-facts

我的剧本中有这一行:

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

2 个答案:

答案 0 :(得分:1)

你不会在你的剧本中收集来自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'] }}"

答案 1 :(得分:0)

将参数 gather_subset 检入配置文件 ansible.cfg 。要返回所有事实,必须将其设置为 all

Action

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

gather_subset = all

必须返回如下所示的行:

ansible --version