использование модуля Ansible set fact для определения постоянных фактов?
Я хочу определить playbook, который устанавливает факты о моих хозяевах, которые могут быть использованы в других пьесах. Модуль set_fact утверждает, что может это сделать ... http://docs.ansible.com/set_fact_module.html -- однако это не работает ... Факты, которые я определяю, доступны после вызова set_fact в рамках запуска play-book-я ожидал бы, что смогу использовать Ansible all-m setup и увидеть факт, определенный где-то в фактах, собранных для каждого хоста ...
Я попытался посмотреть код для модуля set_fact - но все, что я нашел, это строка документации ... https://github.com/ansible/ansible-modules-core/blob/19b328c4df2157b6c0191e9144236643ce2be890/utilities/logic/set_fact.py
3 ответов
во-первых, модуль set_fact устанавливает только факты, доступные во время выполнения. Для настойчивых фактов вам нужно либо:
--Static--
- определите их в один из следующих:
- vars/
- group_vars/
- host_vars/
--Dynamic--
назначьте их хостам, используя ваш язык выбора через динамический Ansible Инвентарь:
последнее-это то, что я обычно выбираю, так как его довольно просто настроить, и факты всегда доступны на всех хостах, даже если вы делаете что-то вроде:
- получение всех фактов для всех хостов при подключении к хосту nagios для создания его файлов конфигурации.
какую версию Ansible вы используете? Начиная с версии 1.8, есть встроенный возможность кэширования фактов, но по умолчанию он отключен. Вам нужно будет включить его в вашем ansible.cfg файл, и вы также должны иметь сервер redis работает, так как это то, что на самом деле кэширует факты.
Если удаленно управляемая система имеет/etc/ansible / facts.D каталог, любые файлы в этом каталоге, заканчивающиеся на .факт, может быть JSON, INI или исполняемые файлы, возвращающие JSON, и они могут поставлять локальные факты в Ansible, начиная с 1.3. Альтернативный каталог можно указать с помощью директивы fact_path play.
http://docs.ansible.com/ansible/playbooks_variables.html#local-facts-facts-d