如何检查是否已安装docker-compose或未使用Ansible?

时间:2020-07-19 05:49:53

标签: docker docker-compose ansible

我正在做一个项目,其中我必须使用Ansible运行docker-compose。

所以如何查找docker-compose是否已存在于主机中,如果不是,我将进行条件检查,然后先使用Ansible在主机上安装docker-compose,然后运行docker-compose。

那么,如何找到主机环境中已经存在的docker-compose?

2 个答案:

答案 0 :(得分:0)

您可以查看此example,与您要查找的内容类似

- name: Check docker-compose installation play
  hosts: localhost
  tasks:
  - name: Check is docer-compose installed
    shell: command -v docker-compose >/dev/null 2>&1
    register: is_docker_compose_install
    ignore_errors: yes
  
  - debug: msg="{{ is_docker_compose_install.rc }}" # it returns rc 0 if installed or 127 if not
  - debug: var=is_docker_compose_install

is_docker_compose_install.rc将返回0(如果已安装)。

输出

ok: [localhost] => {
    "msg": "0"
}

因此,如果仅在安装了compose的情况下才要运行特定命令,则以下内容将起作用

- name: Check docker-compose installation play
  hosts: localhost
  tasks:
  - name: Check is docer-compose installed
    shell: command -v docker-compose >/dev/null 2>&1
    register: is_docker_compose_install
    ignore_errors: yes
  - debug: msg="{{ is_docker_compose_install.rc }}" # it returns rc 1
  - debug: var=is_docker_compose_install
  - name: Run only if compose is installed
    shell: command docker-compose --version
    register: print_version
    ignore_errors: yes
    when: is_docker_compose_install.rc == 0
  - debug: msg="{{ print_version.stdout }}"

输出(如果已安装)

ok: [localhost] => {
    "msg": "docker-compose version 1.25.5, build unknown"
}

答案 1 :(得分:0)

我想进一步说明您的问题:

所以如何查找docker-compose是否已存在于主机中,如果不是,我将进行条件检查,然后先使用Ansible在主机上安装docker-compose,然后运行docker-compose

您无需执行任何操作。

只需创建一个安装docker-compose的任务(我假设使用pip模块),然后使用docker-compose命令创建下一个任务。

大多数Ansible模块(有显着例外)是幂等的,这意味着Ansible将代表您检查目标计算机上是否已存在docker-compose,并在未安装的情况下进行安装。

简而言之,您无需验证或创建任何条件来安装docker-compose,只需使用相应的Ansible模块即可,而Ansible会为您做魔术。