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

如何使用Ansible检查docker compose是否已安装?,docker,docker-compose,ansible,Docker,Docker Compose,Ansible,我正在做一个项目,我必须使用Ansible运行docker compose 所以,如何找到docker compose是否已经存在于主机中,如果没有,我将执行条件检查,然后首先使用Ansible在主机上安装docker compose,然后运行docker compose 那么,如何找到主机环境中已经存在的docker compose呢?您可以对此进行研究,这与您正在寻找的内容类似 - name: Check docker-compose installation play hosts: l

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

所以,如何找到docker compose是否已经存在于主机中,如果没有,我将执行条件检查,然后首先使用Ansible在主机上安装docker compose,然后运行docker compose

那么,如何找到主机环境中已经存在的docker 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 0 if installed or 127 if not
  - debug: var=is_docker_compose_install
是docker\u compose\u安装。如果安装,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"
}
你可以看看这个,这与你正在寻找的相似

- 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
是docker\u compose\u安装。如果安装,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"
}

我想就你的问题进一步阐述一下:

所以,如何找到docker compose是否已经存在于主机中,如果没有,我将执行条件检查,然后首先使用Ansible在主机上安装docker compose,然后运行docker compose

你不需要做这些

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

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


简单地说,安装docker compose无需验证或创建任何条件,只需使用相应的Ansible模块,Ansible就会为您带来奇迹。

我想进一步阐述您的问题:

所以,如何找到docker compose是否已经存在于主机中,如果没有,我将执行条件检查,然后首先使用Ansible在主机上安装docker compose,然后运行docker compose

你不需要做这些

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

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

简单地说,安装docker compose不需要验证或创建任何条件,只需使用相应的Ansible模块,Ansible就会为您带来奇迹