Este grupo redactor ha estado mucho tiempo buscando para dar solución a tus preguntas, te dejamos la solución por esto esperamos serte de mucha apoyo.
Solución:
Después de discutir con algunos desarrolladores muy útiles sobre el proyecto ansible github, una mejor manera de hacer esto es así:
- name: add container to inventory
add_host:
name: [container-name]
ansible_connection: docker
changed_when: false
- name: run command in container
delegate_to: [container-name]
raw: bash
Si tiene Python instalado en su imagen, puede usar el módulo de comando o cualquier otro módulo en lugar de raw.
Si desea hacer esto en un host docker remoto, agregue:
ansible_docker_extra_args: "-H=tcp://[docker-host]:[api port]"
al bloque add_host.
Consulte la documentación de Ansible para ver un ejemplo más completo.
Debería poder ejecutar un script (con su secuencia de comando en él) con docker exec
:
docker exec container-name bash -l -c /path/to/script > /path/to/log
(Ver también “¿Por qué tengo que usar bash -l -c
dentro de mi contenedor?”)
/path/to/script
debe ser accesible por su proceso de Ansible./path/to/log
es una ruta dentro del contenedor, que podría compartirse en un volumen.
Puede ejecutar comandos dentro de los contenedores docker usando el módulo de comando. Por ejemplo, este código se ejecutará echo "Hello remote machine"
dentro de mi_contenedor en la máquina remota:
tasks:
- name: Execute commands in docker container
command: docker exec -it my_container bash -c 'echo "Hello remote machine"'
Para ejecutar el mismo comando dentro de la máquina local, solo use el local_action
bandera:
tasks:
- name: Execute commands in docker container
local_action: command docker exec -it my_container bash -c 'echo "Hello local machine"'
Te mostramos comentarios y valoraciones
Recuerda que puedes compartir esta noticia si te ayudó.