一、条件语句
条件判断语句,就是根据某些变量的值来控制Ansible的执行流程。控制某些主机执行某些操作与不执行某些操作。根据某些操作结果,判断是否执行其它操作等等。
Ansible的条件判断语句只有 when 语句,结合变量使用才能显示出它的价值。when的用法:在想要进行判断的语句下面添加when语句即可进行条件判断.
二、示例
支持判断的操作符
1、比较操作符
== != > >= < <=
2、逻辑运算符
and or not
tasks: #简单的判断 - name: "shutdown Debian flavored systems" command: /sbin/shutdown -t now when: ansible_os_family == "Debian"
tasks: #组合形式的判断 - name: "shutdown CentOS 6 and Debian 7 systems" command: /sbin/shutdown -t now when: (ansible_distribution == "CentOS" and ansible_distribution_major_version == "6") or (ansible_distribution == "Debian" and ansible_distribution_major_version == "7")
tasks: #基于某些task的结果,执行相应的task - command: /bin/false register: result ignore_errors: True - command: /bin/something when: result|failed - command: /bin/something_else when: result|success - command: /bin/still/something_else when: result|skipped
tasks: #如果一些变量没有定义,可以使用Jinja2的define测试。,来执行一些操作
- shell: echo "I've got '{{ foo }}' and am not afraid to use it!"
when: foo is defined
- fail: msg="Bailing out. this play requires 'bar'"
when: bar is undefinedtasks: #有时一些变量的返回结果是字符串,但是你想对它做一些数学运算 - shell: echo "only on Red Hat 6, derivatives, and later" when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int >= 6
--- #对是否执行一些外部任务进行条件判断- hosts: local
vars:
test: true
tasks:
- name: Test test
debug: msg="Hello When"
when: test
- include: pre.yml #根据条件判断,是否include某个外部任务文件。
when: test
roles:
- { role: /home/aheahe/roles/test, when: test } #结合条件判断,是否加载某个Role
可以看出条件判断主要就是结合变量使用。
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得
100積分直接送
付費(fèi)專(zhuān)欄免費(fèi)學(xué)
大額優(yōu)惠券免費(fèi)領(lǐng)