Skip to content

Docker setup

Move into the folder:

$ cd ansible-sc_pack-public

Build

$ docker build -t shimmercat-python-ansible-alpine .

Test

$ docker run --name ansible-playbook --rm shimmercat-python-ansible-alpine --version

which should return something like this:

ansible-playbook 2.8.0
  config file = None
  configured module search path = ['/ansible/library']
  ansible python module location = /usr/local/lib/python3.7/site-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.7.3 (default, May 11 2019, 02:00:41) [GCC 8.3.0]

Running Ansible Playbook

$ docker run --rm -it -v <PATH_TO_LOCAL_PLAYBOOKS_DIR>:/ansible/playbooks shimmercat-python-ansible-alpine <PLAYBOOK_FILE>

For example, the command to run the ansible-playbook 1-all-in-one.yml, in production, from the top-level directory using the pwd command:

$ docker run --rm -it  -v $(pwd):/ansible/playbooks shimmercat-python-ansible-alpine -i inventories/production 1-all-in-one.yml

As Ansible is interacting with the external machines, you'll need to mount a SSH key pair for the duration of the play:

$ docker run --rm -it \
    -v ~/.ssh/id_rsa:/root/.ssh/id_rsa \
    -v ~/.ssh/id_rsa.pub:/root/.ssh/id_rsa.pub \
    -v $(pwd):/ansible/playbooks \
    shimmercat-python-ansible-alpine -i inventories/production <PLAYBOOK_FILE>

Ansible helper wrapper

Shell script named ansible_helper.sh that wraps a Docker image containing Ansible:

$ ./ansible_helper.sh -i inventories/production <PLAYBOOK_FILE>