跳到主要内容

ansible任务控制-判断语句when

ansible任务控制中的判断语句when使用场景为依据不同的环境执行不同的动作,例如操作系统是centos与ubuntu,我们可能需要在不同的操作系统上执行不同的操作,这个时候就会用到when

使用示例,在2个主机上执行不同的命令

编辑yml文件,判断当主机明是devops01时才操作

cat > task_when.yml << EOF
- hosts: all
tasks:
- name: devops01 test
file:
name: /opt/devops01
state: directory
when: (ansible_fqdn == "devops01")
EOF

执行yml文件,可以看到只有主机名为devops01的机器执行了,其余主机均为skip状态

$ ansible-playbook task_when.yml 

PLAY [all] *********************************************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************************************
ok: [devops02]
ok: [devops03]
ok: [devops01]

TASK [devops01 test] ***********************************************************************************************************************************
skipping: [devops02]
skipping: [devops03]
changed: [devops01]

PLAY RECAP *********************************************************************************************************************************************
devops01 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
devops02 : ok=1 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
devops03 : ok=1 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0