Ansible
Теория: Факты
В этом примере у нас есть конфиг для postgresql - templates/postgresql.conf.j2, в котором настраивается множество различных буферов. И мы хотим, чтобы один из них зависел от настроек целевой машины, например, использовал 10% от ее оперативной памяти. Для этого необходимо получить данные о сервере, на котором происходит запуск. В Ansible есть специальный модуль setup. В его задачи входит сбор информации о целевой машине. Запустим и посмотрим, что он из себя представляет:
В выводе мы видим большую структуру данных и сверху слово ansible_facts. В Ansible существует понятие facts (факты). Это и есть информация о тех машинах, на которых происходит запуск. Факты - статическая информация о сервере: операционная система, процессор, память, настройка сети, переменные окружения, интерфейсы и т.д. В плейбуках она оказывается в виде обычных переменных, которые можно использовать и подставлять. Это очень удобно.
Как это работает. Все факты хранятся внутри переменной ansible_facts. Используем ее в шаблоне templates/postgresql.conf.j2 для того, чтобы определить размер нашего буфера:
По умолчанию Ansible регистрирует как переменные факты, которые будут находиться на самом верхнем уровне в переменную с префиксом ansible_. Пример выше можно записать следующим образом:
При запуске плейбуков по умолчанию факты собираются первой задачей. Для ее выполнения ничего дополнительно делать не нужно. Иногда это может мешать, т.к. сбор фактов не моментальная операция. Если для выполнения сценариев информация о целевой машине не нужна, то сбор фактов можно отключить. Для этого в плейбуке под хостами нужно указать значение gather_facts: no:
Теперь факты собираться не будут.






