template - Шаблонизирует файл на удалённом сервере
Описание
- Шаблоны обрабатываются с помощью языка шаблонов Jinja2 (http://jinja.pocoo.org/docs/) — документация по форматированию шаблонов доступна в документации по проектированию шаблонов (http://jinja.pocoo.org/docs/templates/).
- В шаблонах можно использовать шесть дополнительных переменных:
ansible_managed(настраивается в разделеdefaultsansible.cfg) содержит строку, которая может быть использована для описания имени шаблона, хоста, времени изменения файла шаблона и идентификатора владельца.template_hostсодержит имя узла машины, на которой находится шаблон.template_uid— числовой идентификатор пользователя владельца.template_path— путь к шаблону.template_fullpath— абсолютный путь к шаблону.template_run_date— дата рендеринга шаблона.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes (добавлен в 2.3) | Атрибуты файла или каталога. Для получения поддерживаемых флагов см. страницу руководства chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и в выводе lsattr. псевдонимы: attr | |
| backup bool |
| Создать резервную копию файла, включая информацию о времени, чтобы вы могли восстановить исходный файл, если вы случайно его повредили. |
| block_end_string (добавлен в 2.4) | Значение по умолчанию: "%}" | Строка, обозначающая конец блока. |
| block_start_string (добавлен в 2.4) | Значение по умолчанию: "{%" | Строка, обозначающая начало блока. |
| dest обязательно | Место назначения для рендеринга шаблона на удалённой машине. | |
| follow bool (добавлен в 2.4) |
| Этот флаг указывает, что ссылки на файловую систему в месте назначения, если они существуют, должны быть прослежены. До Ansible 2.4 это было жёстко задано значением yes. |
| force bool |
| По умолчанию yes, что будет заменять удалённый файл, если содержимое отличается от исходного. Если no, файл будет передан только в том случае, если место назначения не существует. |
| group | Имя группы, которой должен принадлежать файл/каталог, как это передаётся команде chown. | |
| lstrip_blocks bool (добавлен в 2.6) |
| Если это значение установлено в True, ведущие пробелы и табуляции удаляются из начала строки блока. Для установки этого параметра в True требуется версия Jinja2 >=2.7. |
| mode | Режим файла или каталога. Для тех, кто знаком с /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо указать ведущую ноль, чтобы Ansible знал, что это восьмеричное число (например, 0644 или 01777), или заключить его в кавычки (например, '644' или '0644'), чтобы Ansible получил строку и мог выполнить собственное преобразование строки в число. Передача Ansible числа без соблюдения одного из этих правил приведёт к десятичному числу, что приведёт к нежелательным результатам. Начиная с версии 1.8, режим может быть указан в символическом формате (например, u+rwx или u=rw,g=r,o=r). Начиная с версии 2.6, режим также может быть специальной строкой preserve. preserve означает, что файлу будут заданы те же разрешения, что и исходному файлу. | |
| newline_sequence (добавлен в 2.4) |
| Укажите последовательность символов новой строки для файлов шаблонов. |
| owner | Имя пользователя, которому должен принадлежать файл/каталог, как это передаётся команде chown. | |
| selevel | Значение по умолчанию: "s0" | Часть контекста файла SELinux. Это атрибут MLS/MCS, иногда называемый range. Функция _default работает как для seuser. |
| serole | Часть роли контекста файла SELinux, функция _default работает как для seuser. | |
| setype | Часть типа контекста файла SELinux, функция _default работает как для seuser. | |
| seuser | Часть пользователя контекста файла SELinux. По умолчанию будет использоваться политика системы, если применимо. Если установлено значение _default, будет использоваться часть user политики, если она доступна. | |
| src обязательно | Путь к отформатированному шаблону Jinja2 на контроллере Ansible. Это может быть относительный или абсолютный путь. | |
| trim_blocks bool (добавлен в 2.4) |
| Если это значение установлено в True, первая новая строка после блока удаляется (блок, а не тег переменной!). |
| unsafe_writes bool (добавлен в 2.2) |
| Обычно этот модуль использует атомарные операции, чтобы предотвратить повреждение данных или несогласованные чтения из целевых файлов. Иногда системы настроены или просто неисправны, что предотвращает это. Одним из примеров являются файлы, смонтированные в Docker; их нельзя обновлять атомарно, и это можно сделать только ненадёжным способом. Этот логический параметр позволяет Ansible перейти к небезопасным методам обновления файлов в тех случаях, когда у вас нет другого выбора. Имейте в виду, что это подвержено гонкам и может привести к повреждению данных. |
| validate | Команда проверки, выполняемая перед копированием в место назначения. Путь к файлу для проверки передаётся через '%s', который должен присутствовать, как в примере ниже. Команда передаётся безопасно, поэтому такие возможности оболочки, как расширение и конвейеры, не будут работать. | |
| variable_end_string (добавлен в 2.4) | Значение по умолчанию: "}}" | Строка, обозначающая конец инструкции печати. |
| variable_start_string (добавлен в 2.4) | Значение по умолчанию: "{{" | Строка, обозначающая начало инструкции печати. |
Примечания
Примечание
- Для Windows вы можете использовать win_template, который использует ‘\r\n’ в качестве
newline_sequence. - Включение строки с датой в шаблоне приведёт к тому, что шаблон будет помечен как изменённый каждый раз.
- Начиная с версии Ansible 0.9, шаблоны загружаются с помощью
trim_blocks=True. - Кроме того, вы можете переопределить настройки Jinja2, добавив специальный заголовок в файл шаблона. Например,
#jinja2:variable_start_string:'[%', variable_end_string:'%]', trim_blocks: False, который изменяет маркеры интерполяции переменных на [% var %] вместо {{ var }}. Это лучший способ предотвратить оценку элементов, которые выглядят как Jinja2, но не должны быть такими. raw/endraw в Jinja2 не будут работать так, как ожидается, потому что шаблоны в Ansible рекурсивно оцениваются. - Вы можете использовать модуль
copyс опциейcontent:, если вы предпочитаете шаблон встраиваемым, как часть плейбука.
Примеры
# Example from Ansible Playbooks
- template:
src: /mytemplates/foo.j2
dest: /etc/file.conf
owner: bin
group: wheel
mode: 0644
# The same example, but using symbolic modes equivalent to 0644
- template:
src: /mytemplates/foo.j2
dest: /etc/file.conf
owner: bin
group: wheel
mode: "u=rw,g=r,o=r"
# Create a DOS-style text file from a template
- template:
src: config.ini.j2
dest: /share/windows/config.ini
newline_sequence: '\r\n'
# Copy a new "sudoers" file into place, after passing validation with visudo
- template:
src: /mine/sudoers
dest: /etc/sudoers
validate: '/usr/sbin/visudo -cf %s'
# Update sshd configuration safely, avoid locking yourself out
- template:
src: etc/ssh/sshd_config.j2
dest: /etc/ssh/sshd_config
owner: root
group: root
mode: '0600'
validate: /usr/sbin/sshd -t -f %s
backup: yes
Статус
Этот модуль помечен как stableinterface, что означает, что разработчики этого модуля гарантируют, что не будут внесены обратные несовместимые изменения в интерфейс.
Техническое обслуживание
Этот модуль помечен как core, что означает, что он поддерживается основной командой Ansible. Дополнительную информацию см. в разделе Техническое обслуживание и поддержка модулей.
Список других модулей, которые также поддерживаются основной командой Ansible, см. в этом месте.
Поддержка
Для получения дополнительной информации о поддержке этого модуля компанией Red Hat, обратитесь к этой статье базы знаний.
Автор
- Команда разработчиков Ansible
- Майкл ДеХан
Подсказка
Если вы заметите какие-либо проблемы в этом документе, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/modules/template_module.html