Ansible Loop循环控制

Ansible 2.5之前主要使用with_ <lookup>关键字来创建循环,循环关键字基本上类似于with_list,with_items。

Ansible 2.5开始官网推荐使用Loop来进行循环控制。 

 

示例1 Loop数组循环:

复制代码
---
- name: create user
  hosts: dev
  tasks:
    - name: create user
      user:
        name: "{{ item }}"
        state: present
      loop:
      - user01
      - user02
      - user03

    - name: set password
      shell: echo '12345678' | passwd --stdin "{{ item }}"
      loop:
      - user01
      - user02
      - user03
复制代码

 

示例2  vars传递数组给Loop循环

复制代码
---
- name: create user
  hosts: dev
  vars:
     users:
      - user01
      - user02
      - user03
  tasks:
    - name: create user
      user:
        name: "{{ item }}"
        state: present
      loop: "{{ users }}"

    - name: set password
      shell: echo '12345678' | passwd --stdin "{{ item }}"
      loop: "{{ users }}"
复制代码

 

示例3 Loop字典循环:

复制代码
---
- name: create user
  hosts: dev
  tasks: 
  - name: create user and group
    user:
        name: "{{ item.name }}"
        group: "{{ item.groups }}"
    loop:
    - {name: 'user01', groups: 'wheel'}
    - {name: 'user02', groups: 'root'}
复制代码

 

示例4  vars传递字典给Loop循环

复制代码
---
- name: loop test
  hosts: dev
  vars:
    users:
    - user: 'user01'
      group: 'wheel'
    - user: 'user02'
      group: 'root'
  tasks:
    - name: debug
      user:
        name: "{{ item.user }}"
        group: "{{ item.group }}"
      loop: "{{ users }}"  
复制代码

 

示例5 vars传递字典给Loop循环,并使用dict filter

复制代码
---
- name: loop test
  hosts: dev
  vars:
    users:
      user: 'user01'
      groups: 'root'
  tasks:
    - name: debug
      debug:
        msg: "{{ item.key }}  {{ item.value }}"
      loop: "{{ users|dict2items }}"  # dict2items 是 jinjia2 filter
复制代码

 

 

官网参考文档: 

loops: https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html

filters: https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html

posted @   Vincen_shen  阅读(4542)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2018-03-28 Docker 监控平台Prometheus
2018-03-28 Docker 数据收集利器:cadvisor
点击右上角即可分享
微信分享提示