Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将dict与csv一起使用时可能出现错误:";该任务包括一个带有未定义变量的选项。错误是';dict对象';没有属性';模式';_Csv_Ansible - Fatal编程技术网

将dict与csv一起使用时可能出现错误:";该任务包括一个带有未定义变量的选项。错误是';dict对象';没有属性';模式';

将dict与csv一起使用时可能出现错误:";该任务包括一个带有未定义变量的选项。错误是';dict对象';没有属性';模式';,csv,ansible,Csv,Ansible,由于数据的性质,我试图让我的剧本在使用dict的同时使用csv[每个任务要求一行数据的不同部分,所以我不能使用列表?]。 BD和EPG在每个文件中始终只显示一次,必要时可用作密钥 我得到一个错误“任务包含一个带有未定义变量的选项”。由于变量(模式)在csv文件中显示为列标题,因此我必须有某种语法问题 我试图做的是通过csv文件一次循环一行,并让模式:“{{item.schema}}”计算为模式列下的特定行值,等等 剧本: tasks: - name: Read CSV

由于数据的性质,我试图让我的剧本在使用dict的同时使用csv[每个任务要求一行数据的不同部分,所以我不能使用列表?]。 BD和EPG在每个文件中始终只显示一次,必要时可用作密钥

我得到一个错误“任务包含一个带有未定义变量的选项”。由于变量(模式)在csv文件中显示为列标题,因此我必须有某种语法问题

我试图做的是通过csv文件一次循环一行,并让模式:“{{item.schema}}”计算为模式列下的特定行值,等等

剧本:

tasks:
      - name: Read CSV
        read_csv:
        # Name of the csv
         path: ./Create_EPGs_and_BDs.csv
         dialect: excel
         key: bd
        # Creates register value to be used later
        register: csv_data
    
    #
    ##################################################
    #Creates BD in MSO Template
    ##################################################
    #
      - name: Add a new BD
        cisco.mso.mso_schema_template_bd:
         <<: *aci_login
         state: present
         schema: "{{ item.schema }}"
         template: "{{ item.template }}"
         bd: "{{ item.bd }}"
         vrf:
            name: "{{ item.vrf }}"
        loop: "{{ csv_data.dict|dict2items }}"
    
    #
    ##################################################
    #Creates EPG in MSO Template
    ##################################################
    #
      - name: Add a new EPG
        cisco.mso.mso_schema_template_anp_epg:
         <<: *aci_login
         state: present
         schema: "{{ item.schema }}"
         template: "{{ item.template }}"
         anp: "{{ item.app_profile }}"
         epg: "{{ item.epg }}"
         bd:
          name: "{{ item.bd }}"
        loop: "{{ csv_data.dict|dict2items }}"
任务:
-名称:读取CSV
阅读(csv):
#csv的名称
路径:./Create_EPGs_和_BDs.csv
方言:excel
关键字:bd
#创建稍后使用的寄存器值
寄存器:csv_数据
#
##################################################
#在MSO模板中创建BD
##################################################
#
-名称:添加新的BD
cisco.mso.mso_模式_模板_bd:

dict2items
将把您的
dict
转换成一个dict列表,形状类似于
[{“key”:“该行的bd值”,“value”:{“schema”:“schema1”,…},…},…},…]

因此,您只需在
和它引用的dict键之间添加
.value

-名称:添加新的BD
cisco.mso.mso_模式_模板_bd:

请不要发布文本图像(或指向文本图像的链接)。只需在你的问题中包含数据。非常感谢对数据结构的深入了解,这就是我所缺少的。现在一切都好了,谢谢!