Ansible
Теория: Переменные
Одна из ключевых возможностей, которую предоставляет Ansible, это переменные. Они позволяют описывать конфигурационные параметры в одном месте и переиспользовать их многократно, что очень удобно.
В данном примере есть две задачи, где в путях для dest используется одна и та же директория /var/tmp/www/. Мы можем избежать дублирования и описать ключ vars, внутри которого перечислить названия переменных и их значения:
Ansible использует популярный питоновский шаблонизатор Jinja 2. Подстановка переменных в нем работает следующим образом. Перед тем, как разбирать YAML-файл, он прогоняет его через шаблонизатор, который заменяет конструкции {{название переменной}} значениями этих переменных. Для переменной необходимо использовать кавычки, чтобы YAML распознавался корректно. Использование переменной без кавычек приведет к ошибке ERROR! Syntax Error while loading YAML.:
Теперь разберем отличия между template и copy. Одна задача копирует nginx.conf, а вторая index.html. Но в случае с nginx.conf это не простое копирование. Это именно темплэйтинг. Он позволяет прогонять через Jinja 2 пользовательские файлы (не плэйбуки) и выполнять в них подстановки. Это значит, что переменные можно использовать не только в самом плэйбуке. Так удобно работать с конфигурационными файлами (но не только). Например, переменная root_dir в файле nginx.conf.j2:
будет заменена значением из секции vars из плейбука:
Результат работы такого плейбука не изменится, но внутри произойдет подстановка нужного значения.
Из полезного: если мы случайно ошибемся в названии переменной, то Ansible нам подскажет, что была использована неопределенная переменная.






