ansible register 这个功能非常有用。当我们需要判断对执行了某个操作或者某个命令后,如何做相应的响应处理(执行其他 ansible 语句),则一般会用到register 。

举个例子:

我们需要判断sda6是否存在,如果存在了就执行一些相应的脚本,则可以为该判断注册一个register变量,并用它来判断是否存在,存在返回 succeeded, 失败就是 failed.

- name: Create a register to represent the status if the /dev/sda6 exsitedshell: df -h | grep sda6register: dev_sda6_resultignore_errors: Truetags: docker- name: Copy docker-thinpool.sh to all hostscopy: src=docker-thinpool.sh dest=/usr/bin/docker-thinpool mode=0755when: dev_sda6_result | succeededtags: docker

注意:
1、register变量的命名不能用 -中横线,比如dev-sda6_result,则会被解析成sda6_resultdev会被丢掉,所以不要用-
2、ignore_errors这个关键字很重要,一定要配合设置成True,否则如果命令执行不成功,即 echo $?不为0,则在其语句后面的ansible语句不会被执行,导致程序中止。

那我如何去做多种条件的判断呢,比如我还需要判断是否有 docker-thinpool 存在,则还需要为它注册一个变量。

- name: Create a register to represent the status if the docker-thinpool exsitedshell: lsblk | grep docker-thinpoolregister: docker_thinpool_resultignore_errors: Truetags: docker

然后在when中用and或者or来组合判断。比如当两种条件之一成功,都对docker配置文件进行修改:

- name: Special config for docker-thinpool devicemapperlineinfile: dest=/etc/sysconfig/docker regexp=^OPTIONS= line=OPTIONS='--selinux-enabled=false --insecure-registry=10.213.42.254:10500 --log-level=warn --storage-opt dm.basesize={{ dm_base_size }} --storage-opt dm.loopdatasize={{ dm_loop_data_size }} --storage-opt dm.loopmetadatasize={{ dm_loop_meta_size }} --storage-driver=devicemapper --storage-opt=dm.thinpooldev=/dev/mapper/docker-thinpool --storage-opt=dm.use_deferred_removal=true --storage-opt=dm.use_deferred_deletion=true'when: (dev_sda6_result | succeeded) or (docker_thinpool_result | succeeded)tags: docker

ansible register 之用法相关推荐

  1. ansible register 用法

    ansible register 用法 ansible register 这个功能非常有用.当我们需要判断对执行了某个操作或者某个命令后,如何做相应的响应处理(执行其他 ansible 语句),则一般 ...

  2. ansible register when: result | succeeded when: item.rc != 0

    ansible register 这个功能非常有用.当我们需要判断对执行了某个操作或者某个命令后,如何做相应的响应处理(执行其他 ansible 语句),则一般会用到register . 举个例子: ...

  3. ansible中serial用法

    实验环境:ansible2.7 1.默认情况下,Ansible将尝试并行管理playbook中所有的机器.对于滚动更新用例,可以使用serial关键字定义Ansible一次应管理多少主机: - nam ...

  4. 1.11学习配置管理工具 Ansible 的基本用法,包括主机管理、Playbook 编写教程

    目录 简介 主机管理 手动管理 利用 Ansible 管理主机 Playbook 编写 基本结构 常用模块 变量管理 简介 Ansible 是一种基于 Python 编写的配置管理工具,它能够让运维人 ...

  5. ansible之block用法

    block 模块 : 将多个任务组合成一个块,并且可以对这个块做条件判断,以及当块里面的任务失败时,进行失败处理. ---   - hosts: hadoop     remote_user: roo ...

  6. Ansible registers用法

    Ansible registers用来捕捉一个task的输出作为一个变量.在Ansible的其它地方我们可以使用该变量,例如logging等. 这种变量包含了这个任务的返回值.当我们使用不同的模块时, ...

  7. Linux自学笔记——Ansible

    运维工作:系统安装(物理机.虚拟机)à 程序包安装.配置.服务启动 à 批量操作 à 程序发布 à 监控 OS Provisioning: 物理机:PXE.Cobbler 虚拟机:Image Temp ...

  8. Ansible基础和常用模块(一)

    文章目录 1. Ansible 概述 2. Ansible 安装配置 3. Ansible Inventory 清单 4. Ansible ad-hoc 5. Ansible 功能模块 5.1 Ans ...

  9. ansible之安装与简单使用

    http://www.ansible.com.cn/:参照中文文档 安装方式:采用epel源安装 a安装epel源: yum install wget wget dl.fedoraproject.or ...

最新文章

  1. 【Linux】Linux简单操作之管道与重定向
  2. 如何使用工具包 (NLTK) 开发NLP 项目?(附教程)
  3. 面试经典:链表中倒数第k个结点?如何从大量数据中找出高频词?
  4. 2019.4.1考试2019.4.2考试2019.4.4考试
  5. STP 简介----PVST+ RSTP和快速PVST+ (1)
  6. ASP防止SQL注入
  7. 微信php翻译和天气预报整合,微信公众平台天气预报功能开发
  8. MariaDB数据库介绍之一、备份(mysqldump、lvm2快照、xtrabackup)
  9. java对读写文件进行操作
  10. 解决keil4与keil5不兼容问题
  11. 【计算机组成原理】实验2:十六位数据总线实验
  12. 基于Java+Swing+Mysql酒店客房预订管理系统设计
  13. Word里输入上下标五种方法
  14. win10配置系统默认utf-8编码
  15. php 判断中文和英文,PHP如何判断中文还是英文?
  16. OpenCV 微信QRCode二维码
  17. c语言 解元二次函数的源代码,学霸强推,高中数学万能解题方法,对数学一筹莫展的你必看!...
  18. PMP考试有哪些科目
  19. php开发中常用字符串函数总结
  20. 在Linux上运行若依出错,解决若依linux启动ERROR

热门文章

  1. Kubernetes集群中Pod间文件拷贝
  2. 渗透学习-靶场篇-WebGoat靶场(JWT攻击)
  3. 对坐标的曲线积分求做功_曲线积分与曲面积分(前篇 曲线积分-坐标曲线积分-格林公式)...
  4. 打造狼性的呼叫中心外呼团队
  5. 关于Windows在ping虚拟机时出现请求超时的解决问题
  6. QList使用注意(浅拷贝 深拷贝)
  7. C#基于 iTextSharp.text.pdf 实现PDF水印添加功能
  8. [Kafka]为什么使用kafka?
  9. 互联网快讯:极米投影仪获用户青睐;粉笔科技创新OMO模式谋突围;华虹半导体拟科创板上市
  10. android bp文件_理解Android.bp