Ansible Как зациклить внутри файлов для шаблонов - PullRequest
0 голосов
/ 31 октября 2019

Необходимо перебрать исходные файлы один за другим для всех хостов.

- hosts: epson*
  become: yes

  tasks:
  - name: replace id
    vars:
      id: abc
    template:
      src: epson1.j2
      dest: /home/epson.config
HOSTS FILE
[epson1]
1.1.1.1
[epson2]
1.1.1.1
[epson3]
1.1.1.1
and many more
epson1.j2
create element edge0 {
   state="ENABLED"
   id="{{ id }}"}

epson2.j2
create element edge1 {
   state="ENABLED"
   id="{{ id }}"}

У меня есть много файлов шаблонов, таких как epson1.j2, epson2. J2 и так далее. Прямо сейчас я могу сделать замену шаблона для 1 хоста и для 1 файла. Как я могу сделать для всех файлов для всех хостов.

like - host:epson1, src: epson1.j2, dest: /home/epson.config
host:epson2, src: epson2.j2, dest: /home/epson.config
host:epson3, src: epson3.j2, dest: /home/epson.config

need looping inside src for every hosts

1 Ответ

0 голосов
/ 04 ноября 2019

Вы сможете выполнить это, просто используя магическую переменную инвентарь_хоста .

- hosts: epson*
  become: yes

  tasks:
  - name: replace id
    vars:
      id: abc
    template:
      src: {{ inventory_hostname }}.j2
      dest: /home/epson.config

Воспроизведение будет запускаться один раз для каждого хоста, и будет использоваться правильный .j2. .

...