我正在尝试使用 ansible cloud stack 模块一次设置多个安全组。yaml 文件当前如下所示:
- name: add inbound tcp rules to security group web
cs_securitygroup_rule:
security_group: web
start_port: "{{ item }}"
end_port: "{{ item }}"
loop:
- 80
- 443
问题是安全组的数量可能非常多。因此,此代码块会不断重复,这似乎不是一个好的解决方案。因此,我想将整个过程变成一个循环,并使用字典传递参数。数据结构云如下所示:
cs_security_groups:
web:
- 80
- 443
monitor:
- 9090
- 9100
- 9333
default:
- 22
我根本无法使用任何类型的循环来实现这一点,因为安全组可以有任意数量的端口。是我遗漏了什么,还是这种方法完全错误?
答案1
我差不多解决了这个问题。
- name: add inbound port(s) to the security groups
cs_securitygroup_rule:
security_group: "{{ item.0.key }}"
port: "{{ item.1 }}"
loop: "{{ cs_security_groups | dict2items | subelements('value') }}"
这可行,但可能有更好的解决方案。:-)