그래서 나는 3 개의 호스트에서 플레이 북을 실행하고 싶습니다. 각 호스트는 3 개의 파일 (모두 같은 이름)이 필요합니다.Iniable에는 with_items와 호스트 변수를 동시에 사용할 수있는 방법이 있습니까?
파일이있을거야
- lacpbond.100
- lacpbond.200
- lacpbond.300
각 파일은 기반으로 들어가는 고유 IP 주소를 가지고 vars/파일.
이 작업은> this-과 같은
- name: configure subinterface bonds
template: src="ifcfg-lacpbondsub.j2" dest=/etc/sysconfig/network-scripts/ifcfg-lacpbond.{{item.vlan}}
with_items:
- { vlan: "100" }
- { vlan: "200" }
- { vlan: "300" }
tags:
- bonding
server01:
loopbacks:
ipv4: "10.0.0.100"
SVIS:
100:
ipv4: "192.168.0.1"
prefix: "28"
200:
ipv4: "192.168.1.1"
prefix: "28"
300:
ipv4: "192.168.2.1"
prefix: "28"
처럼 보인다 문제. with_items와 vars를 동시에 사용하는 방법을 잘 모르겠습니다. 따라서 with_items를 사용하여 어떤 변수를 사용하지 않을지 결정할 수 있습니다.이 방법으로 게임의 복잡성을 크게 줄일 수 있습니다.
여기 템플릿 파일 ->
{% set host = interfaces[ansible_hostname] -%}
{% set VLAN = item.vlan -%}
DEVICE=lacpbond.{{item.vlan}}
IPADDR={{host.SVIS.{{item.vlan}}.ipv4}}
ONBOOT=yes
BOOTPROTO=none
VLAN=yes
과 같은 작업을 수행하는 방법을 모르겠습니다. 그렇지 않으면 내가 3 템플릿과 3 작업이 필요합니다 .... 그리고 만약 내가 더 많은 파일을 필요로하는이 확장되지 않습니다 ....
'{{host.SVIS ...',하지만 당신은 호스트를''인터페이스 [ansible_hostname]' '으로 설정하고 있기 때문에 혼란 스럽습니다. 그래서 그것은 사전이 아닌 문자열입니다. – larsks
나는 그렇게 생각하지 않는다. 예를 들어 내 템플릿의 경우 단지 this-> ' '{{item.vlan}} 는 {{host.SVIS.100.ipv4는}}' 그것은 generate-합니다> '(100), 192.168 내가하려고하면 .0.1' 는하지만 하나가 '{{host.SVIS가 [item.vlan] .ipv4}} 는 {{인터페이스 [ansible_hostname] .SVIS [item.vlan] .ipv4}}' 가 실패 => { "failed": true, "item": { "vlan": "100"}, "with"-> '실패 : [server01] (item = {u'vlan ': u'100'}) msg ":"AnsibleUndefinedVariable : 'dict 객체'에는 속성이 없습니다. ''} onl y는 그 폴더에서 변수와 항목 변수를 결합하면 고장 .../vars에서 항목을 선택 with_items를 사용하려고 노력하고 –