L'esecuzione del libro di gioco in un contenitore finestra mobile potrebbe non essere l'approccio migliore a meno che i server di stage e di produzione non siano anche contenitori Docker. L'immagine di ubuntu Docker è ridotta e presenta alcune differenze rispetto a un'installazione completa. Un'opzione migliore potrebbe essere quella di eseguire il playbook in una macchina virtuale Ubuntu che corrisponde alle installazioni di staging e produzione.
Detto questo, per eseguire il playbook ansible all'interno del contenitore è necessario scrivere un Dockerfile che esegue il proprio playbook. Ecco un Dockerfile campione:
# Start with the ubuntu image
FROM ubuntu
# Update apt cache
RUN apt-get -y update
# Install ansible dependencies
RUN apt-get install -y python-yaml python-jinja2 git
# Clone ansible repo (could also add the ansible PPA and do an apt-get install instead)
RUN git clone http://github.com/ansible/ansible.git /tmp/ansible
# Set variables for ansible
WORKDIR /tmp/ansible
ENV PATH /tmp/ansible/bin:/sbin:/usr/sbin:/usr/bin
ENV ANSIBLE_LIBRARY /tmp/ansible/library
ENV PYTHONPATH /tmp/ansible/lib:$PYTHON_PATH
# add playbooks to the image. This might be a git repo instead
ADD playbooks/ /etc/ansible/
ADD inventory /etc/ansible/hosts
WORKDIR /etc/ansible
# Run ansible using the site.yml playbook
RUN ansible-playbook /etc/ansible/site.yml -c local
Il file di inventario ansible sarebbe simile
[local]
localhost
allora si può solo docker build .
(dove .
è la radice della directory in cui i tuoi Playbook e Dockerfile vivono), poi docker run
sull'immagine risultante.
Michael DeHaan, CTO di Ansible, ha un'informativa blog post on this topic.
fonte
2014-07-14 15:29:48
Grazie. Quindi, in pratica, si distribuisce "localmente" all'interno del contenitore docker, piuttosto che il contenitore è "host". Non ci ho pensato. Domani darò una scorsa a vedere come si inserisce nel mio caso d'uso. Anche grazie per l'idea che potrebbe non essere l'approccio migliore! Lo prenderà in considerazione. – Andre
@Andre Hai ottenuto qualche risultato? –