首页 > 解决方案 > 在 Ansible 中获取“重复的 dict 键”试图遍历变量文件

问题描述

我正在使用 Ansible 2.9 和 AWX 15

我想使用 ansible 自动设置客户端 VPN。许多客户端有多个加密域,所以我需要设置对象组。

在 ASA 上,配置如下所示:

object-group network ClientVPN
   object-network 10.1.1.0 255.255.255.0
   object-network 10.2.2.0 255.255.255.0
   object-network 10.3.3.0 255.255.255.0

我的 ansible 代码如下所示:

    - name: Build object group
  asa_config:
     lines:
       - "object-group network ClientVPN"

- name: Add networks
  asa_config:
     lines:
       - "network-object {{ subnet }}"
     parents:
       - object-group network ClientVPN
  loop: "{{ lookup('file','varfil2.yml',wantlist=True) }}"  

我的 var_file 看起来像:

subnet: 192.1.1.0 255.255.255.0
subnet: 192.2.2.0 255.255.255.0 
subnet: 192.3.3.0 255.255.255.0 

问题是我不知道客户端将拥有多少个“子网”,并且它将以文件的形式交付。可能有 2 个或 20 个。所以我需要能够循环执行任务并创建网络。

我不知道如何对剧本和文件进行编码,以免出现“重复的字典键”错误。

谢谢!

标签: ansible

解决方案


我收到“duplicate dict key”错误的原因是因为我的剧本中有这些行:

vars_file: - 子网-vars.yaml

我的剧本中有这样一行:

循环:“{{查找('文件','subnets.txt').splitlines()}}”

一旦我删除了“vars_file”和调用subnet-vars.yaml 文件的行,剧本就可以正常处理,没有错误。


推荐阅读