首页 > 其他 > 详细

ansible——playbook conditions条件判断

时间:2020-04-08 01:30:27      阅读:89      评论:0      收藏:0      [点我收藏+]

有些时候,我们需要进行一些条件判断才决定是否执行某个操作,在playbook里面when语句帮我们解决了这个问题。

比如,如果节点的操作的系统为Debian那么就关机。

tasks:
  - name: "shut down Debian flavored systems"
    command: /sbin/shutdown -t now
    when: ansible_facts[os_family] == "Debian"

当然还可以进行更加复杂的操作,and和or的逻辑判断。
如果系统是centos6或者是Debian7,那么就关机。

tasks:
  - name: "shut down CentOS 6 and Debian 7 systems"
    command: /sbin/shutdown -t now
    when: (ansible_facts[distribution] == "CentOS" and ansible_facts[distribution_major_version] == "6") or
          (ansible_facts[distribution] == "Debian" and ansible_facts[distribution_major_version] == "7")

如果同时需要多个条件,那么可以这样:

tasks:
  - name: "shut down CentOS 6 systems"
    command: /sbin/shutdown -t now
    when:
      - ansible_facts[distribution] == "CentOS"
      - ansible_facts[distribution_major_version] == "6"

其实等价于下面:

tasks:
  - name: "shut down CentOS 6 and Debian 7 systems"
    command: /sbin/shutdown -t now
    when: (ansible_facts[distribution] == "CentOS" and ansible_facts[distribution_major_version] == "6")

有时候你会得到一个变量,它是一个字符串,你可以对其进行数学运算:

tasks:
  - shell: echo "only on Red Hat 6, derivatives, and later"
    when: ansible_facts[os_family] == "RedHat" and ansible_facts[lsb][major_release]|int >= 6

你还可以根据变量值,来判断:
变量值:

vars:
  epic: true

判断:

tasks:
    - shell: echo "This certainly is epic!"
      when: epic

还可以循环:

tasks:
    - command: echo {{ item }}
      loop: [ 0, 2, 4, 6, 8, 10 ]
      when: item > 5

配合变量寄存器:

- name: test play
  hosts: all

  tasks:

      - shell: cat /etc/motd
        register: motd_contents

      - shell: echo "motd contains the word hi"
        when: motd_contents.stdout.find(hi) != -1

 

ansible——playbook conditions条件判断

原文:https://www.cnblogs.com/yangmingxianshen/p/12657225.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!