我正在尝试使用我的Playbook有条件地运行命令。该命令取决于给定客户的类型值设置为“PBSTP”。如果将类型设置为其他任何内容,则不应运行该播放。我目前正在尝试使用此配置,但它告诉我条件失败,因为dict对象不包含'type'的值。 有没有办法做到这一点?
- command: cp -r /home/pb/scripts /home/{{ item }}/scripts
with_items: "{{ customers }}"
when: customers['type'] == "PBSTP"
在给定的示例中,我希望'SESH'客户端不会像'TEST-BANK'客户端那样获得脚本的目录副本。 谢谢!
TEST-BANK:
type: PBSTP
accept: 32506
connect: 33506
ipaddr:
- 192.167.203.92
subtype: INBOUND
SESH:
type: SPOT
accept: 32508
connect: 33508
ipaddr:
- 192.167.203.63
subtype: TIERED
答案 0 :(得分:1)
您尝试将when
条件应用于customers
dict(它包含密钥TEST-BANK
,SESH
等。)
您希望在循环迭代中将条件应用于当前项:
- command: cp -r /home/pb/scripts /home/{{ item.key }}/scripts
with_dict: "{{ customers }}"
when: item.value['type'] == "PBSTP"
另请注意,您应该使用with_dict
,因为with_items
只会为您提供密钥而不是它的值。