Loops 如何在Ansible uri模块中使用适当的循环

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文件如下所示

---
# 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)