ansible playbooks loop循环
在一个task中循环某个操作
1、标准循环
- name: add several usersuser:name: "{{ item }}"state: presentgroups: "wheel"loop:- testuser1- testuser2#如果已经在变量文件中,定义了yaml列表,可以这么写loop: "{{ somelist }}"
- name: optimal yumyum:name: "{{list_of_packages}}"state: present- name: non optimal yum, not only slower but might cause issues with interdependenciesyum:name: "{{item}}"state: presentloop: "{{list_of_packages}}"
- name: add several usersuser:name: "{{ item.name }}"state: presentgroups: "{{ item.groups }}"loop:- { name: 'testuser1', groups: 'wheel' }- { name: 'testuser2', groups: 'root' }
2、复杂的循环
- name: give users access to multiple databasesmysql_user:name: "{{ item[0] }}"priv: "{{ item[1] }}.*:ALL"append_privs: yespassword: "foo"loop: "{{ query('nested', [ 'alice', 'bob' ], [ 'clientdb', 'employeedb', 'providerdb' ]) }}"
3、使用lookup 与 用loop查询
loop: "{{ query('nested', ['alice', 'bob'], ['clientdb', 'employeedb', 'providerdb']) }}"loop: "{{ lookup('nested', ['alice', 'bob'], ['clientdb', 'employeedb', 'providerdb'], wantlist=True) }}"
4、Do-Until循环
- shell: /usr/bin/fooregister: resultuntil: result.stdout.find("all systems go") != -1retries: 5delay: 10
5、使用loop中的register
- shell: "echo {{ item }}"loop:- "one"- "two"register: echo
{"changed": true,"msg": "All items completed","results": [{"changed": true,"cmd": "echo \"one\" ","delta": "0:00:00.003110","end": "2013-12-19 12:00:05.187153","invocation": {"module_args": "echo \"one\"","module_name": "shell"},"item": "one","rc": 0,"start": "2013-12-19 12:00:05.184043","stderr": "","stdout": "one"},{"changed": true,"cmd": "echo \"two\" ","delta": "0:00:00.002920","end": "2013-12-19 12:00:05.245502","invocation": {"module_args": "echo \"two\"","module_name": "shell"},"item": "two","rc": 0,"start": "2013-12-19 12:00:05.242582","stderr": "","stdout": "two"}]}
- name: Fail if return code is not 0fail:msg: "The command ({{ item.cmd }}) did not have a 0 return code"when: item.rc != 0loop: "{{ echo.results }}"
- shell: echo "{{ item }}"loop:- one- tworegister: echochanged_when: echo.stdout != "one"
6、循环inventory
# show all the hosts in the inventory- debug:msg: "{{ item }}"loop: "{{ groups['all'] }}"#show all the hosts in the current play- debug:msg: "{{ item }}"loop: "{{ ansible_play_batch }}"
# show all the hosts in the inventory- debug:msg: "{{ item }}"loop: "{{ query('inventory_hostnames', 'all') }}"# show all the hosts matching the pattern, ie all but the group www- debug:msg: "{{ item }}"loop: "{{ query('inventory_hostnames', 'all!www') }}"
7、循环控制
# main.yml- include: inner.yml- include_tasks: inner.ymlloop:- 1- 2- 3loop_control:loop_var: outer_item# inner.yml- debug:msg: "outer item={{ outer_item }} inner item={{ item }}"loop:- a- b- c
- name: create serversdigital_ocean:name: "{{ item.name }}"state: presentloop:- name: server1disks: 3gbram: 15Gbnetwork:nic01: 100Gbnic02: 10Gb...loop_control:label: "{{ item.name }}"
# main.yml- name: create servers, pause 3s before creating nextdigital_ocean:name: "{{ item }}"state: presentloop:- server1- server2loop_control:pause: 3
- name: count our fruitdebug:msg: "{{ item }} with index {{ my_idx }}"loop:- apple- banana- pearloop_control:index_var: my_idx
8、loops和 includes (2.0版本)
# main.yml- include_tasks: inner.ymlloop:- 1- 2- 3# inner.yml- set_fact:outer_item: "{{ item }}"- debug:msg: "outer item={{ outer_item }} inner item={{ item }}"loop:- a- b- cNote
ansible playbooks loop循环的更多相关文章
- 3、Ansible playbooks(Hosts、Users、tasks、handlers、变量、条件测试(when、迭代)、templates)
Ansible playbooks playbook是由一个或多个“play”组成的列表.play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色.从根本上来讲 ...
- ansible playbook loop 翻译
ansible源文档地址 有时候你想多次重复一个任务. 在计算机编程中,这叫做循环. 常见的 Ansible 循环包括使用文件模块更改几个文件和 / 或目录的所有权,使用用户模块创建多个用户,并重复一 ...
- MySQL中的while、repeat、loop循环
循环一般在存储过程和存储函数中使用频繁,这里只给出最简单的示例 while delimiter $$ create procedure test_while() begin declare sum i ...
- oracle for loop循环以及游标循环
1. for in loop形式 DECLARE CURSOR c_sal IS SELECT employee_id, first_name || last_name ename, salar ...
- Oracle PL/SQL之LOOP循环控制语句
在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...
- PL/SQL中LOOP循环控制语句
在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...
- Oracle loop循环无法插入数据
以下的测试基于scott用户下的emp表 首先用while循环进行测试,向emp表插入999条数据 declare i emp.empno; begin loop insert into emp(em ...
- [转载]Oracle PL/SQL之LOOP循环控制语句
在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...
- Oracle LOOP循环控制语句
在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...
随机推荐
- Rails5 任务注释
任务注释 格式 # TODO: ... # FIXME: ... # OPTIMIZE ... 查看 rails notes 个别查看 rails notes:todo rail ...
- bzoj 1645: [Usaco2007 Open]City Horizon 城市地平线【线段树+hash】
bzoj题面什么鬼啊-- 题目大意:有一个初始值均为0的数列,n次操作,每次将数列(ai,bi-1)这个区间中的数与ci取max,问n次后元素和 离散化,然后建立线段树,每次修改在区间上打max标记即 ...
- bzoj 1642: [Usaco2007 Nov]Milking Time 挤奶时间【dp】
这不就是个n方dp吗--看了眼洛谷题解简直神仙打架 我全程没用到n-- 把休息时间并入产奶时间,注意"结束时间不挤奶",所以ei=ei+r-1,注意这个-1! 然后按r排序,设f[ ...
- python实现对excel数据进行修改/添加
import osimport xlrdfrom xlutils.copy import copydef base_dir(filename=None): return os.path.join(os ...
- Syntax error on token ";", , expected 错误
eclipse错误提示如图: 错误代码如图: 一开始百思不得其解,后来终于发现问题的原因所在,java中变量的声明可以不在方法中,但语句只能出现在方法中,可以再声明变量的时候就赋初值,但如果要单独赋值 ...
- 公司5:JrVue表格
组件名称:jr-dynamic-query-table 组件布局 table组件名称: jr-dynamic-query-table 分页组件名称: el-pagination <div re ...
- Storm概念学习系列之storm的优化
不多说,直接上干货!
- Storm编程入门API系列之Storm的定时任务实现
概念,见博客 Storm概念学习系列之storm的定时任务 Storm的定时任务,分为两种实现方式,都是可以达到目的的. 我这里,分为StormTopologyTimer1.java 和 Sto ...
- MySQL 四种事务隔离级别详解及对比--转
http://www.jb51.net/article/100183.htm 接的隔离级别.它的语法如下: ? 1 SET [SESSION | GLOBAL] TRANSACTION ISOLATI ...
- 【转载】Hadoop分布式文件系统HDFS的工作原理详述
转载请注明来自36大数据(36dsj.com):36大数据 » Hadoop分布式文件系统HDFS的工作原理详述 转注:读了这篇文章以后,觉得内容比较易懂,所以分享过来支持一下. Hadoop分布式文 ...