I have been working with Ansible and all of the vSphere modules an enormous amount recently. As part of that work, I’ve extended the functionality of the Docker container I use for all of my development work. The container can be downloaded from Docker Hub and consumed by anyone — there is no proprietary information within the container.
The updated version includes two vSAN Python modules required for an updated vSAN Ansible module I am working on. In addition, the container now pulls the upstream NSX-v Ansible module from VMware, instead of my cloned repo on GitHub.com/virtualelephant. The reason being, all of the code I’ve written for NSX-v is now in the upstream module.
The full docker file can be obtained on GitHub.
1 # Dockerfile for creating an Ansible Control Server with 2 # the VMware modules necessary to build a complete Kubernetes 3 # stack. 4 # Blog details available: http://virtualelphant.com 5 6 FROM ubuntu:artful 7 MAINTAINER Chris Mutchler <[email protected]> 8 9 RUN \ 10 apt-get -y update && \ 11 apt-get -y dist-upgrade && \ 12 apt-get -y install software-properties-common python-software-properties vim && \ 13 apt-add-repository ppa:ansible/ansible 14 15 # Install packages needed for NSX modules in Ansible 16 RUN \ 17 apt-get -y update && \ 18 apt-get -y install ansible python-pip python-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev npm git && \ 19 pip install --upgrade pyvmomi && \ 20 pip install pysphere && \ 21 pip install nsxramlclient && \ 22 npm install -g https://github.com/yfauser/raml2html && \ 23 npm install -g raml-fleece 24 25 # Get NSXRAML 26 27 # Add additional Ansible modules for NSX and VM folders 28 RUN \ 29 git clone -b 6.4 https://github.com/vmware/nsxraml.git /opt/nsxraml && \ 30 git clone https://github.com/vmware/nsxansible && \ 31 git clone https://github.com/vmware/ansible-modules-extras-gpl3.git && \ 32 rm -rf nsxansible/library/__init__.py && \ 33 cp nsxansible/library/*.py /usr/lib/python2.7/dist-packages/ansible/modules/cloud/vmware/ && \ 34 git clone https://github.com/openshift/openshift-ansible-contrib && \ 35 /bin/cp openshift-ansible-contrib/reference-architecture/vmware-ansible/playbooks/library/vmware*.py /usr/lib/python2.7/dist-packages/ansible/modules/cloud/vmw are/ 36 37 # Add vSAN Python API modules - must be done after pyVmomi installation 38 COPY vsanmgmtObjects.py /usr/lib/python2.7/ 39 COPY vsanapiutils.py /usr/lib/python2.7/ 40 41 # Setup container to properly use SSH bastion host for Ansible 42 RUN mkdir /root/.ssh 43 RUN chmod 740 /root/.ssh 44 COPY config /root/.ssh/config 45 COPY ansible.cfg /etc/ansible/ 46 47 # Edit MOTD to give container consumer info 48 COPY motd /etc/motd 49 RUN echo '[ ! -z "$TERM" -a -r /etc/motd ] && cat /etc/issue && cat /etc/motd' >> /etc/bash.bashrc
I am still mounting a local volume that contains the Ansible playbooks within it. For reference, I run the container with the following command:
$ docker run -it --rm --name ansible-sddc -v /PATH/TO/ANSIBLE:/opt/ansible virtualelephant/ubuntu-ansible
If you run into an issues with the Docker container, please let me know on Twitter. Enjoy!