似乎无法从facts.d文件夹中发现事实。这是我的设置。提到的所有文件都在我安装了ansible的OSX机器上。针对远程计算机运行playbook
file:/work/myproject/ansible.cfg
[default]
fact_path=/work/myproject/facts.d
file:/work/myproject/facts.d/info.fact(静态文件)
myvar=myvalue
命令输出:ansible --version
ansible 2.4.0
config file = /work/myproject/ansible.cfg
configured module search path = Default w/o overrides
python version = 2.7.13
file:/work/myproject/test.yml(playbook)
- name: Testing
gather_facts: true
hosts: all
user: root
roles:
- role: test
命令输出:ansible-playbook -i hosts test.yml --limit = dev
....
.... 'myvar' is undefined
....
似乎无法像我期望的那样在任务中使用{{myvar}}。
有人能发现问题,或者至少建议一些命令/工具来诊断问题吗?
答案 0 :(得分:2)
提到的所有文件都在我安装了ansible的OSX机器上
但facts.d
目录应位于托管主机。
来自docs:
如果远程管理系统具有/etc/ansible/facts.d目录,则此目录中以.fact结尾的任何文件都可以是JSON,INI或返回JSON的可执行文件,以及这些可以在Ansible中提供当地事实。可以使用fact_path play指令指定备用目录。
更新回复评论:
关于访问facts.d fact的文档摘录:
此数据可以在模板/剧本中访问:
{{ ansible_local.preferences.general.asdf }}