Spec-Zone.ru › Ansible 2.4

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
нет
Имя группы, которой должен принадлежать файл/каталог, как указано для команды chown.
mode
нет
Режим файла или каталога. Для тех, кто знаком с /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами (например, 0644). Опускание ведущей нули, скорее всего, приведёт к непредвиденным результатам. Начиная с версии 1.8, режим может быть указан в символической форме (например, u+rwx или u=rw,g=r,o=r).
newline_sequence
(добавлен в 2.4)
нет \n
  • \n
  • \r
  • \r\n
Укажите последовательность символов новой строки для файлов шаблонов.
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
(добавлен в 2.4)
нет нет
  • да
  • нет
Если установлено значение True, первая новая строка после блока будет удалена (блок, а не тег переменной!).
unsafe_writes
(добавлен в 2.2)
нет
  • да
  • нет
Обычно этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов. Иногда системы настроены или просто не работают так, что это невозможно. Пример — файлы, смонтированные через Docker, которые не могут быть обновлены атомарно и могут быть обновлены только небезопасным способом.
Этот булев параметр позволяет Ansible перейти к небезопасным методам обновления файлов в тех случаях, когда у вас нет другого выбора. Имейте в виду, что это подвержено проблемам гонок и может привести к повреждению данных.
validate
нет None
Команда проверки, выполняемая перед копированием в место назначения. Путь к проверяемому файлу передается через '%s', который должен присутствовать, как показано в примере ниже. Команда передаётся безопасно, поэтому такие функции оболочки, как расширение и конвейеры, не будут работать.
variable_end_string
(добавлен в 2.4)
нет }}
Строка, обозначающая конец инструкции печати.
variable_start_string
(добавлен в 2.4)
нет {{
Строка, обозначающая начало инструкции печати.

Примеры

# 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

Примечания

Примечание

  • Для 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:, если вы предпочитаете шаблон в строчном виде как часть книги сценариев.

Статус

Этот модуль помечен как stableinterface, что означает, что разработчики этого модуля гарантируют, что не будет вноситься обратная совместимость с интерфейсом.

Информация о техническом обслуживании

Дополнительную информацию о поддержке этого модуля компанией Red Hat см. в knowledge base article<https://access.redhat.com/articles/rhel-top-support-policies>

Для получения помощи в разработке модулей, если вы так заинтересованы, прочитайте Справочная информация по сообществу и участие, Тестирование 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.4/template_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API