zoukankan      html  css  js  c++  java
  • ansible register 之用法

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

    举个例子:

    我们需要判断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_resultdev会被丢掉,所以不要用-
    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
  • 相关阅读:
    WPF中样式中事件处理
    模板方法
    WPF 中ComboBox绑定DataSet
    装饰模式
    【转帖】c#项目的打包部署教材图文
    WPF中用比例设置长度或宽度
    在WFP中完美使用winform的控件
    一个WPF软件作品新鲜出炉,欢迎拍砖
    建造者模式(生成器模式)
    Windows Presentation Foundation 中的 Pack URI
  • 原文地址:https://www.cnblogs.com/qianggezhishen/p/7349309.html
Copyright © 2011-2022 走看看