我正在做一个项目,其中我必须使用Ansible运行docker-compose。
所以如何查找docker-compose是否已存在于主机中,如果不是,我将进行条件检查,然后先使用Ansible在主机上安装docker-compose,然后运行docker-compose。>
那么,如何找到主机环境中已经存在的docker-compose?
答案 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会为您做魔术。