template – Шаблон для вывода файла на удаленный сервер
Краткое описание
- Шаблоны обрабатываются с помощью языка шаблонов Jinja2.
- Документацию по форматированию шаблонов можно найти в Документации по дизайну шаблонов.
- Дополнительные переменные, перечисленные ниже, могут быть использованы в шаблонах.
-
ansible_managed(настраивается через разделdefaultsразделаansible.cfg) содержит строку, которая может быть использована для описания имени шаблона, хоста, времени изменения файла шаблона и идентификатора владельца. -
template_hostсодержит имя узла машины шаблона. -
template_uid— это числовой идентификатор пользователя владельца. -
template_path— это путь к шаблону. -
template_fullpath— это абсолютный путь к шаблону. -
template_destpath— это путь шаблона на удаленной системе (добавлено в версии 2.8). -
template_run_date— это дата, когда шаблон был сгенерирован.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes строка | Атрибуты, которые должны иметь результирующий файл или директория. Для получения поддерживаемых флагов см. страницу справки для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и при отображении с помощью lsattr. Оператор = предполагается по умолчанию, в противном случае необходимо включить операторы + или - в строку.псевдонимы: attr | |
| backup логическое значение |
| Создать резервную копию файла, включая информацию о времени создания, чтобы можно было восстановить исходный файл, если произошла ошибка при его записи. |
| block_end_string строка добавлен в 2.4 | Значение по умолчанию: "%}" | Строка, обозначающая конец блока. |
| block_start_string строка добавлен в 2.4 | Значение по умолчанию: "{%" | Строка, обозначающая начало блока. |
| dest путь / обязательно | Расположение для рендеринга шаблона на удаленной машине. | |
| follow логическое значение добавлен в 2.4 |
| Определить, следует ли следовать символическим ссылкам. Если установлено yes, символические ссылки будут следовать, если они существуют.Если установлено no, символические ссылки не будут следовать.До Ansible 2.4, это было жестко закодировано как yes. |
| force логическое значение |
| Определить, когда файл передаётся, если целевой файл уже существует. Если установлено yes, заменить удалённый файл, если содержимое отличается от исходного.Если установлено no, файл будет передан только в том случае, если целевой файл не существует. |
| group строка | Имя группы, которая должна владеть файлом/директорией, как в команде chown. | |
| lstrip_blocks логическое значение добавлен в 2.6 |
| Определить, когда следует удалять ведущие пробелы и табуляции. Если установлено yes, ведущие пробелы и табуляции удаляются из начала строки блока.Эта функциональность требует Jinja 2.7 или более поздней версии. |
| mode строка | Права доступа, которые должен иметь результирующий файл или директория. Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны добавить ведущую ноль, чтобы парсер YAML Ansible понял, что это восьмеричное число (например, 0644 или 01777) или заключить его в кавычки (например, '644' или '1777'), чтобы Ansible получил строку и мог выполнить преобразование из строки в число.Передача Ansible числа без соблюдения одного из этих правил приведёт к десятичному числу, что приведёт к непредсказуемым результатам. Начиная с Ansible 1.8, режим может быть указан в символическом формате (например, u+rwx или u=rw,g=r,o=r). | |
| 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, будет использоваться часть политики level, если она доступна. |
| serole строка | Роль части контекста файла SELinux. Если установлено _default, будет использоваться часть политики role, если она доступна. | |
| setype строка | Тип части контекста файла SELinux. Если установлено _default, будет использоваться часть политики type, если она доступна. | |
| seuser строка | Пользовательская часть контекста файла SELinux. По умолчанию используется политика system, где это применимо.Если установлено _default, будет использоваться часть политики user, если она доступна. | |
| src путь / обязательно | Путь к файлу шаблона Jinja2 на контроллере Ansible. Это может быть относительный или абсолютный путь. Файл должен быть закодирован в utf-8, но output_encoding можно использовать для управления кодировкой выходного шаблона. | |
| trim_blocks логическое значение добавлен в 2.4 |
| Определить, следует ли удалять символы новой строки из блоков. Если установлено yes, первая новая строка после блока удаляется (блок, а не тег переменной!). |
| unsafe_writes логическое значение |
| Влияние на использование атомной операции для предотвращения повреждения данных или несогласованного чтения из целевого файла. По умолчанию этот модуль использует атомные операции для предотвращения повреждения данных или несогласованного чтения из целевых файлов, но иногда системы настроены или просто неисправны таким образом, что это невозможно. Одним примером являются файлы, смонтированные с помощью Docker, которые не могут быть обновлены атомно изнутри контейнера и могут быть записаны только небезопасным способом. Этот параметр позволяет Ansible переходить к небезопасным методам обновления файлов при сбое атомных операций (хотя это не заставляет Ansible выполнять небезопасные записи). ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных. |
| validate строка | Команда проверки, которая должна быть выполнена перед копированием в место назначения. Путь к файлу, который нужно проверить, передаётся через '%s', который должен присутствовать, как в приведённых ниже примерах. Команда передаётся безопасно, поэтому функции оболочки, такие как расширение и трубы, не будут работать. | |
| variable_end_string строка добавлен в 2.4 | Значение по умолчанию: "}}" | Строка, обозначающая конец оператора печати. |
| variable_start_string строка добавлен в 2.4 | Значение по умолчанию: "{{" | Строка, обозначающая начало оператора печати. |
Примечания
Примечание
- Вы можете использовать модуль copy с параметром
content:если предпочитаете шаблон внутри, как часть сценария. - Для 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 рекурсивно оцениваются.
- Чтобы найти символы порядка байтов в файлах, используйте
Format-Hex <file> -Count 16в Windows иod -a -t x1 -N 16 <file>в Linux.
См. также
См. также
- copy – Копирование файлов на удалённые узлы
- Официальная документация по модулю copy.
- win_copy – Копирование файлов на удалённые узлы в Windows
- Официальная документация по модулю win_copy.
- win_template – Шаблонизация файла на удалённый сервер
- Официальная документация по модулю win_template.
Примеры
- name: Template a file to /etc/files.conf
template:
src: /mytemplates/foo.j2
dest: /etc/file.conf
owner: bin
group: wheel
mode: '0644'
- name: Template a file, 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
- name: Copy a version of named.conf that is dependent on the OS. setype obtained by doing ls -Z /etc/named.conf on original file
template:
src: named.conf_{{ ansible_os_family }}.j2
dest: /etc/named.conf
group: named
setype: named_conf_t
mode: 0640
- name: Create a DOS-style text file from a template
template:
src: config.ini.j2
dest: /share/windows/config.ini
newline_sequence: '\r\n'
- name: 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
- name: 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. [core]
Поддержка Red Hat
Дополнительная информация о поддержке этого модуля Red Hat доступна в этой статье базы знаний Red Hat.
Авторы
- Команда Ansible Core
- 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.9/modules/template_module.html