Ansible 设置条件以访问不同主机的不同变量
我的/ansible/hosts文件中当前配置了两台主机。但是,我希望这两台主机有两个不同的变量,但使用相同的jinja2模板来访问它。如何应用条件语句 My./var/main.yaml如下所示:Ansible 设置条件以访问不同主机的不同变量,ansible,jinja2,Ansible,Jinja2,我的/ansible/hosts文件中当前配置了两台主机。但是,我希望这两台主机有两个不同的变量,但使用相同的jinja2模板来访问它。如何应用条件语句 My./var/main.yaml如下所示: --- - name: Variables for R1 when: "{{ ansible_host }}" == '198.51.100.4' routers_all: - {OSPF: 'Yes', OSPF_area: '0', OSPF_id: '1', hostname:
---
- name: Variables for R1
when: "{{ ansible_host }}" == '198.51.100.4'
routers_all:
- {OSPF: 'Yes', OSPF_area: '0', OSPF_id: '1', hostname: R1}
int_details_R1:
- {int: Loopback1, ip: 10.0.0.1, mask: 255.255.255.255}
- {int: FastEthernet0/0, ip: 198.51.100.3, mask: 255.255.255.0}
- {int: FastEthernet1/0, ip: 198.51.101.3, mask: 255.255.255.0}
- {int: FastEthernet2/0, ip: 198.51.102.3, mask: 255.255.255.0}
- name: Variables for R2
when: "{{ ansible_host }}" == '198.51.100.5'
routers_all:
- {OSPF: 'Yes', OSPF_area: '0', OSPF_id: '2', hostname: R2}
int_details_R2:
- {int: Loopback1, ip: 20.0.0.1, mask: 255.255.255.255}
- {int: FastEthernet0/0, ip: 198.51.100.4, mask: 255.255.255.0}
- {int: FastEthernet1/0, ip: 198.51.101.4, mask: 255.255.255.0}
文件结构-
automation@automation:~/lab8/ANSIBLE/RTR-TEMPLATE$ tree
.
├── ospf.yaml
└── roles
└── router
├── tasks
│ └── main.yaml
├── templates
│ └── router.j2
└── vars
└── main.yaml
使用。创建目录~/lab8/ANSIBLE/RTR-TEMPLATE/host\u vars,并使用特定于主机的变量创建文件
~/lab8/ANSIBLE/RTR-TEMPLATE/host\u vars/198.51.100.4
routers_all:
- {OSPF: 'Yes', OSPF_area: '0', OSPF_id: '1', hostname: R1}
int_details_R1:
- {int: Loopback1, ip: 10.0.0.1, mask: 255.255.255.255}
- {int: FastEthernet0/0, ip: 198.51.100.3, mask: 255.255.255.0}
- {int: FastEthernet1/0, ip: 198.51.101.3, mask: 255.255.255.0}
- {int: FastEthernet2/0, ip: 198.51.102.3, mask: 255.255.255.0}
~/lab8/ANSIBLE/RTR-TEMPLATE/host\u vars/198.51.100.5
routers_all:
- {OSPF: 'Yes', OSPF_area: '0', OSPF_id: '2', hostname: R2}
int_details_R2:
- {int: Loopback1, ip: 20.0.0.1, mask: 255.255.255.255}
- {int: FastEthernet0/0, ip: 198.51.100.4, mask: 255.255.255.0}
- {int: FastEthernet1/0, ip: 198.51.101.4, mask: 255.255.255.0}
这些变量将由默认的vars插件添加,如中所述。我无法为您提供确切的jinja实现,但您可以作为参考。