Dado o seguinte exemplo de saída de docker ps
:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7e21761c9c44 busybox "top" 22 minutes ago Up 22 minutes agitated_yonath
7091d9c7cc56 nginx "nginx -g 'daemon off" 23 minutes ago Up 23 minutes 80/tcp, 443/tcp fervent_blackwell
Este manual fornecerá uma ideia de como capturar os dados de que você precisa e como executar ações repetidas na lista fornecida. É um exemplo muito simples e você terá que adaptá-lo às suas necessidades. Isso é de propósito:
---
- hosts: localhost
gather_facts: no
tasks:
- name: gather list of containers
shell: docker ps | awk '/{{ item }}/{print $1}'
register: list_of_containers
with_items:
- busybox
#- name: debug
# debug: msg="{{ list_of_containers }}"
- name: run action in container(s)
docker_container:
name: temp-container
image: busybox
command: uptime
cleanup: yes
detach: yes
register: result_of_action
with_items:
- list_of_containers.results.stdout_lines
As partes interessantes são:
-
Reúna a lista de contêineres em um determinado host (
localhost
no meu exemplo). Eu usei uma invocação simples deshell
para poder usarawk
para filtrar a saída. O resultado é armazenado em um registrador. Como a entrada é uma lista, isso terá uma conseqüência direta sobre como recuperar os dados, mais abaixo. Descomente a tarefadebug
entre comparar os dados armazenados no registro com e sem uma lista. -
Itere os resultados do registro (ID do contêiner) e use o módulo
docker_container
para executar uma ação (command
parameter). Você pode usarlinks
evolumes_from
na sua invocação dedocker_container
. Verifique a documentação on-line do módulo para obter detalhes.