【问题标题】:facts.d folder not working as expectedfact.d 文件夹未按预期工作
【发布时间】:2017-09-08 13:43:03
【问题描述】:

似乎无法从 fact.d 文件夹中发现事实。这是我的设置。提到的所有文件都在我安装了 ansible 的 OSX 机器上。针对远程机器运行剧本

文件:/work/myproject/ansible.cfg

[default]
fact_path=/work/myproject/facts.d

文件:/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 

文件:/work/myproject/test.yml(剧本)

- name: Testing
  gather_facts: true
  hosts: all
  user: root
  roles:
    - role: test

命令输出:ansible-playbook -i hosts test.yml --limit=dev

....
.... 'myvar' is undefined
....

似乎不能像我期望的那样在任务中使用 {{myvar}}。

谁能发现问题,或者至少建议一些命令/工具来诊断问题?

【问题讨论】:

  • 我取得了一些进展。我可以使用 {{ ansible_local.info.myvar }} 访问变量。这就是工作的意思吗?我希望能够仅使用 {{myvar}} 访问变量(这是行不通的)

标签: ansible


【解决方案1】:

所有提到的文件都在我安装了 ansible 的 OSX 机器上

facts.d 目录应该在托管主机上。

来自docs

如果远程管理系统有 /etc/ansible/facts.d 目录,则此目录中以 .fact 结尾的任何文件都可以是 JSON、INI 或返回 JSON 的可执行文件,并且这些可以在 Ansible 中提供本地事实。可以使用 fact_path 播放指令指定备用目录。

更新回答评论:

关于访问 fact.d 事实的文档摘录:

这些数据可以在模板/剧本中访问:{{ ansible_local.preferences.general.asdf }}

【讨论】:

  • 感谢您澄清这一点,您是正确的。我在远程机器上有 fact.d 文件夹。我发现还有另一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-17
相关资源
最近更新 更多