我正在尝试在我的 ansible 剧本中制定一个条件“何时”。如果没有安装docker,请安装docker。所以我有一个剧本,其中有一个角色和一些任务。我想做一些类似的事情
when: docker != not exist
或者
when: docker == false
当我进行设置时,从安装了 docker 的系统中我得到以下信息:
"ansible_docker0": {
"active": true,
"device": "docker0",
"features": {
When no docker :
SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false
Run Code Online (Sandbox Code Playgroud)
您可以通过尝试一个简单的命令来检查是否安装了某些东西,注册输出,使用安装任务output.failed部分中的when:来仅在检查失败时运行。
以docker为例。
任务中的版本命令:
- name: Check If Docker Is Installed
command: docker --version
register: docker_valid
ignore_errors: yes
Run Code Online (Sandbox Code Playgroud)
如果您不包含ignore_errors: yes并且没有安装它,那么运行该任务的 playbook 将退出,我们要继续。
您可以使用调试模块将注册的变量打印到输出
- name: Debug Docker Output
debug:
var: docker_valid
Run Code Online (Sandbox Code Playgroud)
docker_vaild.failed由于存在 when 子句,下一个任务仅在返回 true 时运行。在未安装 docker 时将其添加到when:要运行的每个任务中。如果安装了 docker,那么这些任务将被跳过。
- name: Install Docker pre-requisites
yum:
name: yum-utils
state: latest
when: docker_valid.failed
...
Run Code Online (Sandbox Code Playgroud)
使用该格式您可以安装 docker 或任何您需要的东西。
要反转条件,请添加not子句when:。
- name: Run Task If Docker is Already Installed
debug:
msg: "will run if docker is installed"
when: not docker_valid.failed
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6717 次 |
| 最近记录: |