ansible 循环与条件判断when
普通循环
with_itemes 变量组 { item } 循环变量
示例
- name: 覆盖配置文件
copy: src=/root/{{ item }} dest=/root/test/{{ item }}
with_items:
- a.txt
- b.txt
- c.txt
- d.txt
- shell (目录)
##会依次将abcd 四个txt文件和 shell目录拷贝到目标文件夹下
引用sc的一个示例:
字典循环
#添加用户 - name: add users
user: name={{ item }} state=present groups=wheel
with_items:
- testuser1
- testuser2 - name: add users
user: name={{ item.name }} state=present groups={{ item.groups }}
with_items:
- { name: 'testuser1', groups: 'test1' }
- { name: 'testuser2', groups: 'test2' }
示例二
users:
alice:
name: Alice Appleworth
telephone: 123-456-7890
bob: #key
name: Bob Bananarama #value1
telephone: 987-654-3210 #value2 tasks:
- name: Print records
debug: msg="User {{ item.key }} is {{ item.value.name }} ({{ item.value.telephone }})"
with_dict: "{{ users }}"
示例三
执行结果
嵌套循环
---
- name: test
hosts: test
tasks:
- name: test
command: "echo name={{ item[0] }} priv={{ item[1] }}"
with_nested:
- [ 'alice', 'bob' ]
- [ 'clientdb', 'employeedb', 'providerdb' ] ##item[0]是循环的第一个列表的值['alice','bob'];item[1]是第二个列表的值。
打印结果:
文件循环
inventory循环(with_inventory_hostnames)
# show all the hosts in the inventory
- debug: msg={{ item }}
with_inventory_hostnames: all # show all the hosts matching the pattern, ie all but the group www
- debug: msg={{ item }}
with_inventory_hostnames: all:!www
with_fileglob:
---
- hosts: test
gather_facts: False
tasks:
- name: display value ##列举某个目录下的某些文件
debug: msg="file is {{ item }}"
with_fileglob:
- /root/*.zip
条件判断when与register变量
register官网示例
register 可接受多个task的结果作为变量临时存储,示例:
---
- hosts: test
gather_facts: False
tasks:
- name: display value
shell: "{{ item }}"
with_items:
- hostname
- uname
register: ret
- name: display loops
debug: msg="{% for i in ret.results %} {{ i.stdout }} {% endfor %}"
执行结果:
when 官网示例
其它示例:
判断分支是否在git分支列表,如果不在,运行某个脚本
- command: chdir=/path/to/project git branch
register: git_branches - command: /path/to/project/git-clean.sh
when: "('release-v2' no in git_branches.stdout)"
判断某个文件是否存在
- stat: path=/etc/hosts
register: host_file - copy: src=/path/to/local/file dest=/path/to/remote/file
when: host_file.stat.exists == false
其它示例
changed_when && failed_when
对命令运行结果进行判断。
示例
比如判断某个软件是否安装成功 - name: install git
yum: name=git state=latest
register: git_install changed_when: " 'nothing to install or upgrade' not in git_install.stdout" #表示输出的结果中没有 notthing to install ..才返回change结果
ignore_errors: true 屏蔽错误信息
ansible 循环与条件判断when的更多相关文章
- python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
python3.5 manage.py runserver python Django教程 之模板渲染.循环.条件判断.常用的标签.过滤器 一.Django模板渲染模板 1. 创建一个 zqxt_tm ...
- Ansible系列(六):循环和条件判断
本文目录:1. 循环 1.1 with_items迭代列表 1.2 with_dict迭代字典项 1.3 with_fileglob迭代文件 1.4 with_lines迭代行 1.5 with_ne ...
- PHP和JS在循环、条件判断中的不同之处
一.条件判断: php中算 false 的情况 1. boolean:false 2. 整形:0 3.浮点型:0 4.字符串:"" "0"(其他都对) 5.空 ...
- Java 控制语句:循环、条件判断
基础很重要,基础很重要,基础很重要.重要的事情说三遍,. 程序设计中的控制语句主要有三种:顺序.分支和循环.我们每天写的代码,除了业务相关,里面会包含大量的控制语句.但是控制语句的基本使用,是否有些坑 ...
- Ansible Playbook 使用条件判断语句
先介绍一下 gather_facts 参数,该参数用于指定在执行任务前,是否先执行 setup 模块获取主机相关信息,以便给后面的任务使用 [root@localhost ~]# ansible 19 ...
- Go语言之循环与条件判断
一.for循环 Go 语言中没有 while 循环,只有一个 for 循环 for 变量初始化;条件;变量自增/自减 { 循环体内容 } 1.基本使用 for i := 0; i < 10; i ...
- ansible实践3-playbook条件判断
--- - hosts: testhost user: root gather_facts: True tasks: - name: use when shell: t ...
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、s witch、case 等关键字以及条件判断语句(A?B:C)和不用循环/goto/递归输出1~100的10种写法
来源:据说是某一年某个公司的面试题 题目:求1+2+…+n, 要求不能使用乘除法.for.while.if.else.s witch.case 等关键字以及条件判断语句(A?B:C) 分析:这题本来很 ...
- shell条件判断与流程控制
一 条件判断式语句 1.按文件类型进行判断 测试类型 作用 -b 文件 判断文件是否存在,并且是否为块设备文件(是块设备文件为真) -c 文件 判断文件是否存在,并且是否为字符设备文件(是字符设备设备 ...
随机推荐
- 【SE】Week3 : 四则运算式生成评分工具Extension&Release Version(附加题)
[附加题]第四阶段目标 - 界面模块,测试模块和核心模块的松耦合. 写到这里我只想吐槽一句,哪天我能写出功能复杂且真正松耦合的模块,我应该就不用写代码了吧[手动再见.. 当然这只是强调下松耦合和代码复 ...
- SQL 别名
Sql中添加别名有三种方式:
- Use curl with uuid(uuidgen) under shell
#!set uuidtmp = uuid.tmp #!uuidgen > $uuidtmp #!set uuid=<$uuidtmp #!rm $uuidtmp #!echo $uuid ...
- Array与Object
typeof([ ])的返回值是object,因为数组叫做数组对象. Array有length属性,而Object没有length属性,所以可以根据length属性来判断数据属于数组还是对象. Arr ...
- ThreadPoolExecutor使用详解
ThreadPoolExecutor机制 一.概述 1.ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线 ...
- php 文件上传 $_FILES 错误码
假设文件上传字段的名称file_name,则: $_FILES['file_name']['error']有以下几种类型 1.UPLOAD_ERR_OK 其值为 0,没有错误发生,文件上传成功. 2. ...
- 虚拟机使用不同CPU配置时内存性能的差异
第一款机器的配置: CPU(s): 8On-line CPU(s) list: 0-7Thread(s) per core: 1Core(s) per socket: 4座: 2NUMA 节点: 1 ...
- CAP定理与BASE理论
1. CAP定理 C:Consistency,一致性 A:Availability,可用性 P:Partition tolerance,分区容错性 CAP定理,指的是在一个分布式系统中,一致性.可用性 ...
- dfs和bfs(链式前向星实现)
dfs代码: #include<iostream>#include<Algorithm>#include<cstring>#include<cstdio> ...
- Play on Words HDU - 1116(欧拉路判断 + 并查集)
题意: 给出几个单词,求能否用所有的单词成语接龙 解析: 把每个单词的首字母和尾字母分别看作两个点u 和 v,输入每个单词后,u的出度++, v的入度++ 最后判断是否能组成欧拉路径 或 欧拉回路,当 ...