目录
ansible register
ansible register 这个功能非常有用。当我们需要判断对执行了某个操作或者某个命令后,如何做相应的响应处理(执行其他 ansible 语句),则一般会用到register 。
实例1
我们需要判断sda6是否存在,如果存在了就执行一些相应的脚本,则可以为该判断注册一个register变量,并用它来判断是否存在,存在返回 succeeded, 失败就是 failed.
- name: Create a register to represent the status if the /dev/sda6 exsited
shell: df -h | grep sda6
register: dev_sda6_result
ignore_errors: True
tags: docker
- name: Copy docker-thinpool.sh to all hosts
copy: src=docker-thinpool.sh dest=/usr/bin/docker-thinpool mode=0755
when: dev_sda6_result | succeeded
tags: docker
注意:
1、register变量的命名不能用 -中横线,比如dev-sda6_result,则会被解析成sda6_result,dev会被丢掉,所以不要用-
2、ignore_errors这个关键字很重要,一定要配合设置成True,否则如果命令执行不成功,即 echo $?不为0,则在其语句后面的ansible语句不会被执行,导致程序中止。
//我如何去做多种条件的判断呢,比如我还需要判断是否有 docker-thinpool 存在,则还需要为它注册一个变量。
- name: Create a register to represent the status if the docker-thinpool exsited
shell: lsblk | grep docker-thinpool
register: docker_thinpool_result
ignore_errors: True
tags: docker
//然后在when中用and或者or来组合判断。比如当两种条件之一成功,都对docker配置文件进行修改:
- name: Special config for docker-thinpool devicemapper
lineinfile: 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
标签:dm,--,register,ansible,sda6,thinpool,docker
From: https://www.cnblogs.com/liwenchao1995/p/16737989.html