Может ли переменная инвентаря в Ansible зависеть от факта?
А именно у меня есть переменная в group_vars/all/cars.yml
что я хотел бы установить значение, зависящее от ansible_fqdn
. Подобно:
---
ссылка: "http: // {{ansible_fqdn}}: 8070 / api"
Я пробовал это, и иногда кажется, что это работает, а иногда нет, давая мне буквальное выражение ansible_fqdn без его замены.
Ansible group_vars файлы предназначены для определения переменных с соответствующими значениями, которые могут зависеть от других переменные определено ранее. Как таковые они действуют как константы что твой учебник можно использовать в зависимости от некоторых условий (дистрибутив ОС, версия ОС, ...).
Факты относятся к узлам, на которых действует ваш playbook, их можно использовать внутри пьесы но недоступны в group_vars файлы.
Теперь, возвращаясь к вашему варианту использования, можно определить факт динамично в playbook и используйте его в своих задачах:
- name: define the link fact based on ansible_fqdn
set_fact: link="http://{{ ansible_fqdn }}:8070/api"
- debug: msg="link = {{ link }}"
- debug: var=link
Пожалуйста, посмотрите Вот Больше подробностей.