Arrays Ansible循环:如何使用with_序列作为索引在数组中循环

Arrays Ansible循环:如何使用with_序列作为索引在数组中循环,arrays,loops,ansible,.when,ansible-template,Arrays,Loops,Ansible,.when,Ansible Template,我有多个相同长度的数组。我需要循环遍历长度并调用元素。我尝试了下面的一个,但失败了。你能告诉我这件事哪里做错了吗。或者有没有更好的方法循环遍历数组元素 tasks: - name: Set facts set_fact: SERIAL_NUMBER: ['2342', '4455', '5643'] PASSWORD: ['xxx', 'yyy', 'zzz'] EXP_DATE: ['06-10-18', '07-01-19', '06-01

我有多个相同长度的数组。我需要循环遍历长度并调用元素。我尝试了下面的一个,但失败了。你能告诉我这件事哪里做错了吗。或者有没有更好的方法循环遍历数组元素

  tasks:
  - name: Set facts
    set_fact:
      SERIAL_NUMBER: ['2342', '4455', '5643']
      PASSWORD: ['xxx', 'yyy', 'zzz']
      EXP_DATE: ['06-10-18', '07-01-19', '06-01-18']
      LICENSE_TYPE: "evaluation"

 - name: Execute the script to apply evaluation license
    lineinfile:
      dest: "/root/test.txt"
      line: "{{ SERIAL_NUMBER[{{ item }}] }} {{ PASSWORD[{{ item }}] }} {{ EXP_DATE[{{ item }}] }}"
      create: yes
    with_sequence: start=0 end={{ SERIAL_NUMBER|length }}
    when: "{{ LICENSE_TYPE }}" == "evaluation"
我甚至尝试了以下方法来代替行:。但是没有运气

line: "{{ SERIAL_NUMBER[item]int % SERIAL_NUMBER|length }} {{ PASSWORD[item]int % PASSWORD|length }} {{ EXP_DATE[item]int % EXP_DATE|length }}"
我在这里看到两个问题

  • 在花括号{{{}}内使用花括号调用的数组元素
  • 第二种是在本例中使用“when”

  • 谢谢。

    您可以将
    查询
    函数与
    一起使用
    在同一循环迭代中获得每个数组的第一个元素

    when语法应为:

    when: LICENSE_TYPE == "evaluation"
    
    请检查以下任务(使用
    debug
    模块仅演示提供给循环的数据
    query
    ):

    输出:

    PLAY [localhost] ****************************************************************************************************************************************************************************************************
    
    TASK [Set facts] ****************************************************************************************************************************************************************************************************
    ok: [localhost]
    
    TASK [Execute the script to apply evaluation license] ***************************************************************************************************************************************************************
    ok: [localhost] => (item=None) => {
        "msg": "SERIAL_NUMBER: 2342, PASSWORD: xxx, EXP_DATE: 06-10-18"
    }
    ok: [localhost] => (item=None) => {
        "msg": "SERIAL_NUMBER: 4455, PASSWORD: yyy, EXP_DATE: 07-01-19"
    }
    ok: [localhost] => (item=None) => {
        "msg": "SERIAL_NUMBER: 5643, PASSWORD: zzz, EXP_DATE: 06-01-18"
    }
    
    PLAY RECAP **********************************************************************************************************************************************************************************************************
    localhost 
    

    希望对您有所帮助

    您可以试试这个。祝你好运

      tasks:
      - name: Set facts
        set_fact:
          SERIAL_NUMBER: ['2342', '4455', '5643']
          PASSWORD: ['xxx', 'yyy', 'zzz']
          EXP_DATE: ['06-10-18', '07-01-19', '06-01-18']
          LICENSE_TYPE: "evaluation"
    
     - name: Execute the script to apply evaluation license
        lineinfile:
          dest: "/root/test.txt"
          line: "{{ SERIAL_NUMBER[index] }} {{ PASSWORD[index] }} {{ EXP_DATE[index] }}"
          create: yes
        loop: "{{ SERIAL_NUMBER|flatten(levels=1) }}"
        loop_control:
          index_var: index
        when: "{{ LICENSE_TYPE }}" == "evaluation"
    

    错误消息:
    TASK[执行脚本以应用评估许可证]***************************************************************************************************************************************************************************************************************************致命:[10.75.44.199]:失败!=>{“msg”:“模板字符串时出现模板错误:应为标记“:”,获得“}”。字符串:{{SERIAL_NUMBER[{{item}]}}}}
    您应该为代码添加解释。它可以很简短。
      tasks:
      - name: Set facts
        set_fact:
          SERIAL_NUMBER: ['2342', '4455', '5643']
          PASSWORD: ['xxx', 'yyy', 'zzz']
          EXP_DATE: ['06-10-18', '07-01-19', '06-01-18']
          LICENSE_TYPE: "evaluation"
    
     - name: Execute the script to apply evaluation license
        lineinfile:
          dest: "/root/test.txt"
          line: "{{ SERIAL_NUMBER[index] }} {{ PASSWORD[index] }} {{ EXP_DATE[index] }}"
          create: yes
        loop: "{{ SERIAL_NUMBER|flatten(levels=1) }}"
        loop_control:
          index_var: index
        when: "{{ LICENSE_TYPE }}" == "evaluation"