如何检查docker是否安装 - ansible - centos

Mih*_*hgo 3 yaml ansible

我正在尝试在我的 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)

bea*_*dha 5

您可以通过尝试一个简单的命令来检查是否安装了某些东西,注册输出,使用安装任务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)