Run Ansible Playbook inside Docker container?

Hi All,

I like to know if someone is using Ansible to provisioning inside a Docker container… and how use this?

I has all my infrastructure in Playbooks, now l like to use this to create Dockers for each of my microservices… but I can’t found some alternatives…

As we know Ansible use SSH but de best practice of Docker is NOT use SSH to login into container… for this reason my doubt…

Some idea or advices about how use this?

Thanks
Alejandro

Sure, the general pattern I follow is thus:

1. I use a base docker image that already has ansible installed.
2. In your Dockerfile, use the COPY command to copy your ansible files
(playbook yaml, files, etc.) into the container. Something like:

COPY ansible/ /tmp/ansible/

3. After the copy, in your Dockerfile, run ansible-playbook on the
files you copied into the container in the previous step:

RUN ansible-playbook /tmp/ansible/foo.yml -i /tmp/ansible/hosts

In this case, /tmp/ansible/hosts just contains:

[local]
127.0.0.1

And in the playbook, I specify:

- hosts: local
  connection: local

4. After the playbook completes, remove the ansible files you copied
in during step 2.

Thank you! This got me up and going fast.

I hadn’t thought of using Ansible to create Docker images before, but this is an interesting way to do this, instead of using a complicated Dockerfile to manage each variety of service.

I might want to figure out a way to be able to build an image for each group in your hosts file.