gpt4 book ai didi

Ansible:使用 with_items 模块时如何跳过一些空项目?

转载 作者:行者123 更新时间:2023-12-04 10:32:11 27 4
gpt4 key购买 nike

我想使用带有 with_items 的 iptables 模块来循环这些规则

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -s 127.0.0.0/8 -j DROP

如您所见,它们有不同类型的源(源地址、输入接口(interface)、输出接口(interface)),在使用 with_item 时可能会导致问题。

这是我的 Ansible 代码
- name: Drop packet from loopback IP
iptables:
chain: "{{ item.chain }}"
source: "{{ item.source }}"
in_interface: "{{ item.in_interface }}"
out_interface: "{{ item.out_interface }}"
jump: " {{ item.jump }}"
with_items:
- { chain: INPUT, in_interface: lo, jump: ACCEPT }
- { chain: OUTPUT, out_interface: lo, jump: ACCEPT }
- { chain: INPUT, source: 127.0.0.0/8, jump: DROP }

每个项目中都有一些缺失的字段。

例如第一个是 source 和 out_interface,因为它显然只有 in_interface。所以,我的问题是如何处理那些空字段?

万分感谢

最佳答案

Q: "How can I handle that empty fields?"



答:使用 default(omit)筛选。例如
- name: Drop packet from loopback IP
iptables:
chain: "{{ item.chain }}"
source: "{{ item.source|default(omit) }}"
in_interface: "{{ item.in_interface|default(omit) }}"
out_interface: "{{ item.out_interface|default(omit) }}"
jump: " {{ item.jump }}"
with_items:
- { chain: INPUT, in_interface: lo, jump: ACCEPT }
- { chain: OUTPUT, out_interface: lo, jump: ACCEPT }
- { chain: INPUT, source: 127.0.0.0/8, jump: DROP }

关于Ansible:使用 with_items 模块时如何跳过一些空项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60362585/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com