使用loop_var Ansible循环多个变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用loop_var Ansible循环多个变量相关的知识,希望对你有一定的参考价值。

我需要在URI模块中有一个循环,它可以同时运行一个任务。我尝试过类似下面的示例,但它不起作用,因为只考虑最后一个值:

- uri:
      method: PATCH
      url: https://10.10.10.10/api/xyz
      status_code: 200, 201
      force_basic_auth: yes
      user: user
      password: pass
      return_content: yes
      validate_certs: no
      body_format: "json"
      body:
       replace:
         data:
              - enabled: "{{ x.enabled }}"
                if_name: "{{ x.name }}"
              - enabled: "{{ y.enabled }}"
                if_name: "{{ y.name }}"
  loop: "{{ vm.params | default([]) | flatten(levels=1) }}"
  loop_control:
       loop_var: x
       loop_var: y

有没有办法用loop,loop_control和loop_var实现这一点,或者将它与将来不会被弃用的其他模块一起使用?

答案
site.yml -
---
- hosts: 
  tasks:
    - include_tasks: main.yml
      with_items: 
        - "{{  vm.params | default([]) | flatten(levels=1)  }}"
      loop_control:
        loop_var: x

main.yml -
---
- uri:
      method: PATCH
      url: https://10.10.10.10/api/xyz
      status_code: 200, 201
      force_basic_auth: yes
      user: user
      password: pass
      return_content: yes
      validate_certs: no
      body_format: "json"
      body:
       replace:
         data:
              - enabled: "{{ x.enabled }}"
                if_name: "{{ x.name }}"

I'm not using the 'y' variable in here as that is not possible based on the code you put on.

以上是关于使用loop_var Ansible循环多个变量的主要内容,如果未能解决你的问题,请参考以下文章

note-ansible 视频笔记

如何使用 ansible 在一个循环中挂载多个磁盘

Ansible嵌套循环,如何基于外部变量设置内部循环变量

Ansible 中任务执行控制

Ansible:在循环中生成变量

ansible中的多个嵌套循环