小编gur*_*der的帖子

使用 ansible 停止所有现有的 docker 容器

我正在创建一个 ansible 角色来在我托管不同 docker 容器的 VM 上执行操作系统和配置更新。

在角色开始时,我想停止所有 docker 容器(如果有的话)。我发现这个线程在这里输入链接描述,但它有点旧,所以我试图打开一个新问题。希望没关系。

最简单的方法是这样的:

- name: Stop docker containers
  shell: |
    docker stop $(docker ps -aq)
Run Code Online (Sandbox Code Playgroud)

不幸的是,当主机没有 docker 容器时,我收到错误消息。我认为使用“ignore_errors:yes”并不是一个好方法。所以我试过了

- name: Get info on docker host and list images
  docker_host_info:
    containers: yes
  register: containers_to_stop

- name: Stop docker containers
  shell: |
    docker stop $(docker ps -aq)
  when: containers_to_stop.containers != 0
Run Code Online (Sandbox Code Playgroud)

但还是和第一部分一样。当主机没有 docker 容器时出现错误。

因此,在链接线程中,我尝试使用“docker_container”模块,如下所示:

- name: Get info on docker host and list images
  docker_host_info:
    containers: yes
  register: containers_to_stop

- name: …
Run Code Online (Sandbox Code Playgroud)

ansible docker

3
推荐指数
1
解决办法
1687
查看次数

当一个列表可能为空时,在 Ansible 中合并两个列表

实际上,我遇到了一个问题,将 Ansible 中的两个列表合并为一个新列表,以防其中一个列表为空或不为空。

编辑:

默认定义了一个列表

standardvolumes: '/usr/share/zoneinfo:/usr/share/zoneinfo:ro'
Run Code Online (Sandbox Code Playgroud)

另一个列表可以在主机组的 group_vars.yml 中定义。

volumes:
    - '/usr/data:/data'
    - '/usr/data2:/data2'
    - '/usr/data3:/data3'
Run Code Online (Sandbox Code Playgroud)

在任务中我列出了列表:

  - name: Combine volume lists
    set_fact:
      volumestostart: '{{ standardvolumes|default([]) + volumes|default([]) }}'
Run Code Online (Sandbox Code Playgroud)

在玩时我收到此错误:

TASK [do-docker-deployment : Combine volume lists] *****************************
fatal: [shs_de_postd_server1]: FAILED! => {"msg": "Unexpected templating type error occurred on ({{ standardvolumes|default([]) + volumes|default([]) }}): coercing to Unicode: need string or buffer, list found"}
Run Code Online (Sandbox Code Playgroud)

所以我尝试重新定义我的默认列表:

standardvolumes: 
  - '/usr/share/zoneinfo:/usr/share/zoneinfo:ro'
Run Code Online (Sandbox Code Playgroud)

但后来我收到了 docker 格式错误:

failed: [shs_de_postd_server1] (item={u'key': u'qit', u'value': {u'cgrouptype': u'blech', u'nexususer': u'cbs-qit-user', u'notstartable': …
Run Code Online (Sandbox Code Playgroud)

list ansible

2
推荐指数
1
解决办法
4149
查看次数

标签 统计

ansible ×2

docker ×1

list ×1