template – Шаблон для вывода файла на удаленный сервер
Краткое описание
- Шаблоны обрабатываются с помощью языка шаблонов Jinja2.
- Документацию по форматированию шаблонов можно найти в Документации по дизайну шаблонов.
- Дополнительные переменные, перечисленные ниже, могут быть использованы в шаблонах.
-
ansible_managed(настраивается через разделdefaultsразделаansible.cfg) содержит строку, которая может быть использована для описания имени шаблона, хоста, времени изменения файла шаблона и идентификатора владельца. -
template_hostсодержит имя узла машины шаблона. -
template_uid— это числовой идентификатор пользователя владельца. -
template_path— это путь к шаблону. -
template_fullpath— это абсолютный путь к шаблону. -
template_destpath— это путь шаблона на удаленной системе (добавлено в версии 2.8). -
template_run_date— это дата, когда шаблон был сгенерирован.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes строка добавлен в 2.3 | Атрибуты, которые должны быть у результирующего файла или каталога. Для получения поддерживаемых флагов обратитесь к странице руководства для 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, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую цифру 0, чтобы парсер 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 логическое значение добавлен в 2.2 |
| Влияет на использование атомарных операций для предотвращения повреждения данных или несогласованных чтений из целевого файла. По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто работают некорректно, что препятствует этому. Примером является файлы, смонтированные в 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]
Поддержка Red Hat
Дополнительную информацию о поддержке этого модуля компанией Red Hat можно найти в этой статье базы знаний 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.8/modules/template_module.html