ansible.builtin.template – Создание шаблона файла на целевом хосте
Примечание
Этот модуль является частью ansible-base и включен во все установки Ansible. В большинстве случаев вы можете использовать короткое имя модуля template, даже не указывая ключевое слово collections:. Несмотря на это, мы рекомендуем использовать FQCN для удобной ссылки на документацию модуля и для предотвращения конфликтов с другими коллекциями, которые могут иметь одинаковое имя модуля.
Краткое описание
- Шаблоны обрабатываются с помощью языком шаблонов Jinja2.
- Документацию по форматированию шаблонов можно найти в документации для разработчиков шаблонов.
- Дополнительные переменные, перечисленные ниже, могут использоваться в шаблонах.
-
ansible_managed(настраивается через разделdefaultsвansible.cfg) содержит строку, которая может использоваться для описания имени шаблона, хоста, времени изменения файла шаблона и идентификатора владельца. -
template_hostсодержит имя узла машины шаблона. -
template_uid— это числовой идентификатор пользователя владельца. -
template_path— это путь к шаблону. -
template_fullpath— это абсолютный путь к шаблону. -
template_destpath— это путь к шаблону в удаленной системе (добавлено в версии 2.8). -
template_run_date— это дата, когда был обработан шаблон.
Примечание
Этот модуль имеет соответствующий плагин действия.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes строка добавлено в версии 2.3 ansible.builtin | Атрибуты результирующего файла или каталога. Чтобы получить поддерживаемые флаги, посмотрите страницу руководства для chattr в целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и отображается командой lsattr. Оператор = предполагается по умолчанию, в противном случае необходимо включить операторы + или - в строку.псевдонимы: attr | |
| backup булево |
| Создать резервную копию файла, включая информацию о временной метке, чтобы вы могли восстановить исходный файл, если вы каким-то образом неправильно его перезаписали. |
| block_end_string строка добавлено в версии 2.4 ansible.builtin | Значение по умолчанию: "%}" | Строка, обозначающая конец блока. |
| block_start_string строка добавлено в версии 2.4 ansible.builtin | Значение по умолчанию: "{%" | Строка, обозначающая начало блока. |
| dest путь / обязательно | Местоположение для отображения шаблона на удаленной машине. | |
| follow булево добавлено в версии 2.4 ansible.builtin |
| Определяет, следует ли следовать символическим ссылкам. Если установлено значение yes, символические ссылки будут следовать, если они существуют.Если установлено значение no, символические ссылки не будут следовать.До Ansible 2.4 это было жестко закодировано как yes. |
| force булево |
| Определяет, когда файл передается, если место назначения уже существует. Если установлено значение yes, замените удаленный файл, если содержимое отличается от исходного.Если установлено значение no, файл будет передан только в том случае, если место назначения не существует. |
| group строка | Имя группы, которой должен принадлежать файл/каталог, как это передается в chown. | |
| lstrip_blocks булево добавлено в версии 2.6 ansible.builtin |
| Определяет, когда следует удалять ведущие пробелы и табуляцию. Если установлено значение 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 ansible.builtin |
| Укажите последовательность символов перевода строки для использования в файлах шаблонов. |
| output_encoding строка добавлено в версии 2.7 ansible.builtin | Значение по умолчанию: "utf-8" | Переопределяет кодировку, используемую для записи файла шаблона, определенного dest.По умолчанию используется utf-8, но может использоваться любая кодировка, поддерживаемая python.Исходный файл шаблона всегда должен быть закодирован с использованием utf-8, для однородности. |
| owner строка | Имя пользователя, которому должен принадлежать файл/каталог, как это передается в chown. | |
| selevel строка | Часть уровня контекста файла 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 ansible.builtin |
| Определяет, когда следует удалять новые строки из блоков. Если установлено значение yes, первая новая строка после блока удаляется (блок, а не тег переменной!). |
| unsafe_writes булево добавлено в версии 2.2 ansible.builtin |
| Влияет на то, когда использовать атомарную операцию для предотвращения повреждения данных или несогласованного чтения из целевого файла. По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованного чтения из целевых файлов, но иногда системы настроены или просто сломаны таким образом, что это предотвращается. Одним из примеров являются файлы, смонтированные в docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом. Эта опция позволяет Ansible вернуться к небезопасным методам обновления файлов, когда атомарные операции завершаются неудачей (однако это не заставляет Ansible выполнять небезопасную запись). ВАЖНО! Небезопасная запись подвержена условиям гонки и может привести к повреждению данных. |
| validate строка | Команда проверки, запускаемая перед копированием на место. Путь к файлу для проверки передается через '%s', который должен присутствовать, как в примерах ниже. Команда передается безопасно, поэтому функции оболочки, такие как расширение и каналы, работать не будут. | |
| variable_end_string строка добавлено в версии 2.4 ansible.builtin | Значение по умолчанию: "}}" | Строка, обозначающая конец инструкции вывода. |
| variable_start_string строка добавлено в версии 2.4 ansible.builtin | Значение по умолчанию: "{{" | Строка, обозначающая начало инструкции вывода. |
Примечания
Примечание
- Для Windows вы можете использовать ansible.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.
См. также
См. также
- ansible.builtin.copy
-
Официальная документация по модулю ansible.builtin.copy.
- ansible.windows.win_copy
-
Официальная документация по модулю ansible.windows.win_copy.
- ansible.windows.win_template
-
Официальная документация по модулю ansible.windows.win_template.
Примеры
- name: Template a file to /etc/file.conf
ansible.builtin.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)
ansible.builtin.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
ansible.builtin.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
ansible.builtin.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
ansible.builtin.template:
src: /mine/sudoers
dest: /etc/sudoers
validate: /usr/sbin/visudo -cf %s
- name: Update sshd configuration safely, avoid locking yourself out
ansible.builtin.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
Авторы
- Ansible Core Team
- 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.10/collections/ansible/builtin/template_module.html