ansible-playbook流程控制-when条件判断
时间: 2023-09-30 22:04:18 浏览: 101
在 Ansible Playbook 中,可以使用 `when` 条件语句来进行流程控制,使得某些任务只在满足特定条件时才会执行。
`when` 语句可以在任务级别或者角色级别上定义。语法格式如下:
```yaml
- name: task name
when: condition
# task content
```
其中,`condition` 是一个布尔表达式,如果为真,则执行该任务,否则跳过该任务。常用的条件表达式包括:
- `var == value`: 变量等于某个值
- `var != value`: 变量不等于某个值
- `var in list`: 变量在列表中
- `var not in list`: 变量不在列表中
- `var is defined`: 变量已经定义
- `var is undefined`: 变量未定义
例如,在以下 Playbook 中,只有当变量 `deploy_mode` 的值为 `production` 时,才会执行 `deploy` 任务:
```yaml
- hosts: web_servers
tasks:
- name: deploy
command: /usr/bin/deploy_app.sh
when: deploy_mode == "production"
```
需要注意的是,`when` 语句只对当前任务有效,如果想要对整个 Playbook 生效,需要在每个任务上都添加 `when` 条件语句。为了避免这种重复的工作,可以将条件语句定义在全局变量中,然后在任务中引用该变量。例如:
```yaml
- hosts: web_servers
vars:
deploy_mode: production
tasks:
- name: deploy
command: /usr/bin/deploy_app.sh
when: deploy_mode == "production"
```
这样,只需要在全局变量中定义一次 `deploy_mode` 的值,就可以在所有的任务中使用了。
阅读全文