Loops 如何在Ansible uri模块中使用适当的循环
我用这个来触发这个。 现在我想在任务中创建防火墙规则(代码被截断) vars文件如下所示Loops 如何在Ansible uri模块中使用适当的循环,loops,ansible,pfsense,Loops,Ansible,Pfsense,我用这个来触发这个。 现在我想在任务中创建防火墙规则(代码被截断) vars文件如下所示 --- # vars file for creating firewall rules # Authentication pf_hostname: "pfsense.local" pf_user: "admin" pf_password: "pfsense" # Rule 01 pf_fw_type_01: "pass" p
---
# vars file for creating firewall rules
# Authentication
pf_hostname: "pfsense.local"
pf_user: "admin"
pf_password: "pfsense"
# Rule 01
pf_fw_type_01: "pass"
pf_fw_interface_01: "wan"
对于其他规则,我现在如何在没有不必要的冗余(例如循环)的情况下重复任务?
我只想到了以下想法,但对我来说似乎并不理想
loop:
- "{{ item.client-id: {{ pf_user }}, item.type: {{ pf_fw_type_01 }} }}"
- "{{ item.client-id: {{ pf_user }}, item.type: {{ pf_fw_type_02 }} }}"
将规则作为动态参数放入列表中如何?
例如,这里是这样的 变量yml
---
#用于创建防火墙规则的vars文件
#认证
pfu主机名:“pfsense.local”
pf_用户:“管理员”
pf_密码:“pfsense”
规则:
-数字:01
类型:“通过”
pf_fw_接口:“wan”
-编号:02
类型:“通过”
pf_fw_接口:“wan”
剧本
---
-主机:本地主机
收集事实:错误
vars_文件:
-瓦拉斯·伊梅尔
任务:
-调试:
味精:|
{
“客户端id”:“{pf_user}}”,
“客户端令牌”:“{pf_password}}”,
“类型”:“{item.type}}”,
“接口”:“{item.pf_fw_interface}”
}
循环:“{{rules}}”
结果
$ ansible-playbook main.yml
(snip)
PLAY [localhost] *********************************************************************************************************************************************************************
TASK [debug] *************************************************************************************************************************************************************************
ok: [localhost] => (item={'type': 'pass', 'pf_fw_interface': 'wan'}) => {
"msg": {
"client-id": "admin",
"client-token": "pfsense",
"interface": "wan",
"type": "pass"
}
}
ok: [localhost] => (item={'type': 'pass', 'pf_fw_interface': 'wan'}) => {
"msg": {
"client-id": "admin",
"client-token": "pfsense",
"interface": "wan",
"type": "pass"
}
}
(snip)
$ ansible-playbook main.yml
(snip)
PLAY [localhost] *********************************************************************************************************************************************************************
TASK [debug] *************************************************************************************************************************************************************************
ok: [localhost] => (item={'type': 'pass', 'pf_fw_interface': 'wan'}) => {
"msg": {
"client-id": "admin",
"client-token": "pfsense",
"interface": "wan",
"type": "pass"
}
}
ok: [localhost] => (item={'type': 'pass', 'pf_fw_interface': 'wan'}) => {
"msg": {
"client-id": "admin",
"client-token": "pfsense",
"interface": "wan",
"type": "pass"
}
}
(snip)