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 boolean |
| Создать резервную копию файла, включая информацию о времени создания, чтобы вы могли восстановить исходный файл, если вы неправильно его перезаписали. |
| block_end_string - добавлен в 2.4 | Значение по умолчанию: "%}" | Строка, обозначающая конец блока. |
| block_start_string - добавлен в 2.4 | Значение по умолчанию: "{%" | Строка, обозначающая начало блока. |
| dest - / обязательно | Место назначения для рендеринга шаблона на удаленной машине. | |
| follow boolean добавлен в 2.4 |
| Этот флаг указывает, что ссылки на файловую систему в пункте назначения, если они существуют, должны быть пройдены. До Ansible 2.4 это было задано по умолчанию как yes. |
| force boolean |
| Значение по умолчанию — yes, что приведет к замене удаленного файла, если содержимое отличается от исходного. Если no, файл будет перенесен только в том случае, если пункта назначения не существует. |
| group - | Имя группы, которая должна владеть файлом/директорией, как это передается команде chown. | |
| lstrip_blocks boolean добавлен в 2.6 |
| Если значение равно True, ведущие пробелы и табуляции удаляются из начала строки в блоке. Установка этого параметра в True требует версию Jinja2 >=2.7. |
| mode - | Режим, который должен иметь файл или директория. Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую нуль, чтобы парсер YAML Ansible знал, что это восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '1777'), чтобы Ansible получил строку и мог выполнить собственное преобразование из строки в число. Передача Ansible числа без выполнения одного из этих правил приведет к десятичному числу, что приведет к непредсказуемым результатам. Начиная с версии 1.8, режим можно указать в символическом формате (например, u+rwx или u=rw,g=r,o=r). Начиная с версии 2.6, режим также может быть специальной строкой preserve. preserve означает, что файлу будут предоставлены те же права, что и исходному файлу. | |
| newline_sequence - добавлен в 2.4 |
| Укажите последовательность символов новой строки, которую следует использовать для шаблонов файлов. |
| output_encoding - добавлен в 2.7 | Значение по умолчанию: "utf-8" | Переопределяет кодировку, используемую для записи файла шаблона, определенного в dest. По умолчанию используется 'utf-8', но можно использовать любую кодировку, поддерживаемую python.Исходный файл шаблона должен всегда быть закодирован в 'utf-8', для единообразия. |
| 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 boolean добавлен в 2.4 |
| Если установлено значение True, первая новая строка после блока удаляется (блок, а не тег переменной!). |
| unsafe_writes boolean добавлен в 2.2 |
| По умолчанию этот модуль использует атомарные операции, чтобы предотвратить повреждение данных или несогласованные чтения из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это предотвращается. Одним из примеров являются файлы, смонтированные в Docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом. Этот параметр позволяет Ansible перейти к небезопасным методам обновления файлов, когда атомарные операции завершаются неудачно (однако он не заставляет 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]
- Этот модуль поддерживается Командой ядра Ansible. [core]
Поддержка Red Hat
Дополнительную информацию о поддержке этого модуля Red Hat можно найти в этой статье базы знаний 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.7/modules/template_module.html