Вот мой шаблон, содержащий некоторые заполнители для замены:
{{ __PLACEHOLDER1__ }} to test.
{{ __PLACEHOLDER2__ }} to test.
{{ __PLACEHOLDER3__ }} to test.
Вот файл yaml, который содержит значения для этих заполнителей:
__PLACEHOLDER1__: placeholder replaced 1
__PLACEHOLDER2__: placeholder replaced 2
__PLACEHOLDER3__: placeholder replaced 3
Наконец, вот моя пьеса:
- hosts: localhost
become: true
become_method: sudo
become_user: "{{ deployer }}"
vars:
ansible_become_pass: "{{ deployer_pass }}"
root_dir: "."
vars_files:
- "{{ deployer_sec }}"
- "{{ placeholder_vals }}"
tasks:
- name: 'Grab files with placeholders in {{ root_dir }}'
find:
pattern: "*.template"
path: "{{ root_dir }}"
recurse: yes
register: files_with_placeholders
- name: 'Replace placeholders'
template:
src: "{{ item.path }}"
dest: "{{ (item.path | splitext)[0] }}"
with_items: "{{ files_with_placeholders.files }}"
Пока все хорошо ... но что, если бы у меня был такой шаблон:
{{ PLACEHOLDER1 }} to test.
{{ PLACEHOLDER2 }} to test.
{{ PLACEHOLDER3 }} to test.
Перед запуском моей книги воспроизведения мне нужно было преобразовать заполнители в шаблоне, чтобы они соответствовали переменным, определенным в файле yaml:
{{ PLACEHOLDER1 }} should become {{ __PLACEHOLDER1__ }}
{{ PLACEHOLDER2 }} should become {{ __PLACEHOLDER1__ }}
{{ PLACEHOLDER3 }} should become {{ __PLACEHOLDER1__ }}
Как заменить оригинальные заполнители новыми заполнителями до обработки шаблона?