一、简介

通常一个任务会做很多事情,如创建大量的用户,安装很多包,或重复的轮询特定的步骤,直到某种结果条件为止,Ansible为我们提供了此支持。下面是关于循环的一些语句。

with_items     #标准循环

with_nested    #嵌套循环

with_dict          #字典循环(Looping over hashed)

with_file       #循环文件

with_fileglob    #通配符循环文件

with_together    #循环映射

with_subelements  #子元素循环

with_sequence      #生成一系列的数字

with_random_choice   #任意选择

#with_first_found      #选择第一个找到的,不会用

with_lines          #循环程序执行的输出信息with_items:`command_result`.`stdout_lines`

with_flattened      #循环列表中的列表的item

二、实例

---
- hosts: local                        #with_item 和 with_nested 用法vars:Sta: falseUser: [ "Aheahe","yunzhonghe" ]tasks:- name: Standard Loopsdebug: msg="{{ item.name }},{{ item.fun }}"with_items:                  #生成标准循环- { name: Loops, fun: xx }- { name: Conditional, fun: yy }when: Sta- name: Nested Loopsdebug: msg= "name={{ item[0] }},priv={{ item[1] }}"with_nested:                  #嵌套循环- "{{ User }}"                #这里的User 可以直接使用列表。- [ "Student","Engineer","Friends" ]
---
- hosts: local          #with_dict 用法
#  vars_files:
#    hash.ymlvars:users:alice:name: Alice Appleworthtelephone: 123-456-7890bob:name: Bob Bananaramatelephone: 987-654-3210tasks:- name: Print phone recordsdebug: msg="User  item.key  is  item.value.name   item.value.telephone "with_dict: users              #循环列表可以查看输出信息。以获取结果
---
- hosts: local                 #with_file 与 with_fileglob 用法。vars:test_file: falsetasks:- name: test fileshell: echo {{ item }}with_file:         #循环文件的内容- test                          #test文件里面为任意内容。- test1when: test_file- name: Test file Globshell: echo {{ item }}with_fileglob:     #循环文件的通配符。- /home/aheahe/playbook/*
---
- hosts: local                 #with_together用法vars:alpha: [ 'a', 'b', 'c', 'd' ]numbers:  [ 1, 2, 3, 4 ]test: [ 'A', 'B', 'C', 'D' ]tasks:- debug: msg="{{ item.0 }} and {{ item.1 }} and {{ item.2 }}"with_together:                #循环映射信息- "`alpha`"- "`numbers`"- "`test`"
---
- hosts: local         #with_subelement用法vars:users:- name: aliceauthorized:- /tmp/alice/onekey.pub- /tmp/alice/twokey.pubmysql:password: mysql-passwordhosts:- "%"- "127.0.0.1"- "::1"- "localhost"privs:- "*.*:SELECT"- "DB1.*:ALL"- name: bobauthorized:- /tmp/bob/id_rsa.pubmysql:password: other-mysql-passwordhosts:- "db1"privs:- "*.*:SELECT"- "DB2.*:ALL"tasks:- name: Test1shell: echo "name={{ item.name }}"with_items: "`users`"- name: Test2shell: echo "User={{ item.0.name }},key={{ item.1 }}"with_subelements:         #循环子元素。- users- authorized
---
- hosts: localtasks:- name: Learn loop sequencedebug: msg={{ item }}with_sequence: start=0 end=6 stride=2
---
- hosts: local                 # with_random_choice 用法tasks:- name: Learn Randomdebug: msg={{ item }}with_random_choice:- "go through the door"- "drink from the goblet"- "press the red button"- "do nothing"
---
- hosts: local         #with_lines 用法tasks:- name: test resultshell: echo {{ item }}with_lines: /bin/df -Th- name: flattened loop demo                       #with_flatted用法yum: name={{ item }} state=installedwith_flattened:- "`packages_base`"- "`packages_apps`"
----
# file: roles/foo/vars/main.yml
packages_base:- [ 'foo-package', 'bar-package' ]
packages_apps:- [ ['one-package', 'two-package' ]]- [ ['red-package'], ['blue-package']]

转载于:https://blog.51cto.com/amyhehe/1715445

Ansible Loops相关推荐

  1. ansible入门_Ansible入门

    ansible入门 The software development industry has grown over the years, from simple software running i ...

  2. Ansible 入门指南 - ansible-playbook 命令

    上篇文章Ansible 入门指南 - 安装及 Ad-Hoc 命令使用介绍的额是 Ad-Hoc 命令方式,本文将介绍 Playbook 方式. Playbook 译为「剧本」,觉得还挺恰当的. play ...

  3. ansible-playbook之循环(Loops)

    ansible-playbook的循环(Loops) 1.标准的Loops:也是最常用的一种循环 例:当需要安装10个软件包时,不用写10次任务,只需要写一次然后进行循环即可 #注:已经安装的软件系统 ...

  4. Ansible自动化运维笔记3(playbook)

    1.基本语法 playbook文件格式为yaml语法.示例如下: 1.1 nginx.yaml --- - hosts: alltasks:- name: Install Nginx Packagey ...

  5. Ansible 使用变量

    使用变量 虽然自动化的存在是为了更容易使事情可重复,但并非所有系统都完全相同.有些可能需要与其他配置略有不同的配置.在某些情况下,观察到的一个系统的行为或状态可能会影响您配置其他系统的方式.例如,您可 ...

  6. CHAPTER 5 Ansible playbook(二)

    ansible-playbook 5.1 任务控制 5.1.1 Ansible任务控制基本介绍 5.1.2 条件判断(when) 5.1.3 循环控制(with_items) 5.1.3.1 标准lo ...

  7. Ansible免密码登陆

    配置Linux主机无密码访问 生成秘钥 ssh-keygen -t rsaGenerating public/private rsa key pair. Enter file in which to ...

  8. centos7+ansible自动化工具使用

    一.基础介绍 ========================================================================================== 1. ...

  9. 一星期没完成Ansible任务

    这个星期,前4天,我在看Nginx,没有深入Ansible. 这几天我有思考做Ansible的哪个方面,现在我用Ansible可以用,但是没有生产环境,我对基础部分热情不是特别大,应该是基础部分大家在 ...

  10. 《Ansible权威指南 》一 第一篇 Part 1 基础入门篇

    本节书摘来自华章出版社<Ansible权威指南 >一书中的第1章,第1.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 ...

最新文章

  1. c语言函数与编译预处理教学视频,C语言课程第6章 函数及编译预处理.ppt
  2. a=(1,)b=(1),c=(“1”) 分别是什么类型的数据
  3. 【Linux】FrameBuffer操作入门
  4. python函数的传参要求_python中函数传参详解
  5. (1)hibenrate入门例子
  6. BFS迷宫问题模型(具体模拟过程见《啊哈算法》)
  7. 【sdut 1751】 区间覆盖问题
  8. Java教程:Java JDK环境变量配置
  9. ubuntu 1404部署tomcat7
  10. 【python基础学习必备小手册(适合新手)详细教程】
  11. 用一套键盘鼠标同时控制两台电脑
  12. 计算机在数据处理方面的论文,数据挖掘论文3000字范文参考(2)
  13. 1、黑塞矩阵Hessian matrix
  14. 使用Bochs写Hello world
  15. android View的生命周期
  16. java 实现点击率_redis实现点击量/浏览量
  17. Interpreter(解释器)
  18. 使用cmd打开任意软件
  19. JavaScript中md5加密基础使用方法
  20. 大学毕业学技术学什么好

热门文章

  1. 祝各位MM们节日快乐!
  2. 爬虫—分析Ajax爬取今日头条图片
  3. SpringBoot整合Redis及Redis工具类撰写
  4. js通过codeURL画二维码
  5. 前台传来的文件通过流stream转成bytes 再把文件写入数据库 类型是blob
  6. length()函数_掌握Kotlin中的标准库函数: run、with、let、also和apply(转)
  7. 每天学点Python Cookbook(三)
  8. ES5 对象的扩展(Object.preventExtensions)、密封(Object.seal)和冻结(Object.freeze)
  9. MySQL更新死锁问题
  10. Spring Mvc前台访问报404