Ansible如何在模板的文件内部循环

问题描述 投票:0回答:1

需要为所有主机一一遍历源文件。

- 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
ansible ansible-2.x ansible-template
1个回答
0
投票

您应该能够简单地通过使用inventory_hostname魔术变量来完成此操作。

- hosts: epson*
  become: yes

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

该播放将为每个主机运行一次,并且将使用正确的.j2

© www.soinside.com 2019 - 2024. All rights reserved.