template - Шаблонизирует файл на удалённом сервере
Обзор
- Шаблоны обрабатываются языком шаблонов Jinja2 (http://jinja.pocoo.org/docs/) — документацию по форматированию шаблонов можно найти в документации по разработчикам шаблонов (http://jinja.pocoo.org/docs/templates/).
- В шаблонах можно использовать шесть дополнительных переменных:
ansible_managed(настраивается в разделеdefaultsмодуляansible.cfg) содержит строку, которая может быть использована для описания имени шаблона, хоста, времени изменения файла шаблона и идентификатора владельца.template_hostсодержит имя узла машины шаблона.template_uid— числовой идентификатор пользователя владельца.template_path— путь к шаблону.template_fullpath— абсолютный путь к шаблону.template_run_date— дата рендеринга шаблона.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes (добавлен в 2.3) | По умолчанию: None | Атрибуты файла или директории. Для получения поддерживаемых флагов обратитесь к справке man для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и при отображении lsattr. алиасы: attr |
| backup |
| Создать резервную копию файла, включая информацию о времени, чтобы можно было восстановить исходный файл, если он был неверно перезаписан. |
| block_end_string (добавлен в 2.4) | По умолчанию: %} | Строка, отмечающая конец блока. |
| block_start_string (добавлен в 2.4) | По умолчанию: {% | Строка, отмечающая начало блока. |
| dest обязательно | Место назначения для рендеринга шаблона на удалённой машине. | |
| follow (добавлен в 2.4) |
| Этот флаг указывает, что ссылки на файловую систему в пункте назначения, если они существуют, должны быть пройдены. До Ansible 2.4 это было жёстко задано как yes. |
| force |
| По умолчанию yes, что означает замену удалённого файла, когда содержимое отличается от исходного. Если no, файл будет передан только в том случае, если пункт назначения не существует. |
| group | По умолчанию: None | Имя группы, которая должна владеть файлом/директорией, как если бы это подавалось в chown. |
| mode | По умолчанию: None | Режим файла или директории. Для тех, кто знаком с /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами (например, 0644 или 01777). Пропуск стартовой нуля приведёт к непредсказуемым результатам. Начиная с версии 1.8, режим может быть указан в символической форме (например, u+rwx или u=rw,g=r,o=r). |
| newline_sequence (добавлен в 2.4) |
| Укажите последовательность символов новой строки для файлов шаблонов. |
| owner | По умолчанию: None | Имя пользователя, который должен владеть файлом/директорией, как если бы это подавалось в chown. |
| selevel | По умолчанию: s0 | Уровень части контекста файла SELinux. Это атрибут MLS/MCS, иногда известный как range. _default функция работает так же, как и для seuser. |
| serole | По умолчанию: None | Роль части контекста файла SELinux, _default функция работает так же, как и для seuser. |
| setype | По умолчанию: None | Тип части контекста файла SELinux, _default функция работает так же, как и для seuser. |
| seuser | По умолчанию: None | Пользователь части контекста файла SELinux. По умолчанию использует политику системы, если применимо. Если установлено _default, будет использоваться часть user политики, если доступна. |
| src обязательно | Путь к форматированному шаблону Jinja2 на контроллере Ansible. Это может быть относительный или абсолютный путь. | |
| trim_blocks (добавлен в 2.4) |
| Если установлено в True, первая новая строка после блока будет удалена (блок, а не тег переменной!). |
| unsafe_writes (добавлен в 2.2) |
| Обычно этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов. Иногда системы настроены или просто сломаны таким образом, что это предотвращается. Один пример — файлы, смонтированные в Docker, которые не могут обновляться атомарно и могут обновляться только небезопасным способом. Этот логический параметр позволяет Ansible использовать небезопасные методы обновления файлов в тех случаях, когда у вас нет другого выбора. Имейте в виду, что это подвержено гонкам и может привести к повреждению данных. |
| validate | По умолчанию: None | Команда валидации, выполняемая перед копированием на место. Путь к файлу для валидации передаётся через '%s', который должен быть присутствовать, как в примере ниже. Команда передаётся безопасно, поэтому такие функции оболочки, как расширение и подстановка, не будут работать. |
| variable_end_string (добавлен в 2.4) | По умолчанию: }} | Строка, отмечающая конец оператора вывода. |
| variable_start_string (добавлен в 2.4) | По умолчанию: {{ | Строка, отмечающая начало оператора вывода. |
Примечания
Примечание
- Для Windows можно использовать win_template, который использует ‘rn’ в качестве
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, что означает, что разработчики этого модуля гарантируют, что не будут вноситься обратные несовместимые изменения в интерфейс.
Поддержка
Дополнительную информацию о поддержке этого модуля Red Hat можно найти в этой статье базы знаний
Автор
- Команда разработчиков Ansible
- Michael DeHaan
Подсказка
Если вы заметите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/modules/template_module.html