Buenas , hace un tiempo puse un post de como testar módulos de puppet con docker, pues bien mejorando la receta he creado michelangelo.

Esto es una chorrada pero que nos puede venir muy util a la hora de testar los modulos que es saber que dependencias hay , para ello lo que hacemos es generar el grafico de dependencias a la vez que testamos.

Para hacer todo esto hacemos una modificacion a nuestro proyecto stromboli añadiendo en el dockerfile lo siguiente

FROM iuscommunity/centos6
RUN yum install -y puppet
RUN yum install -y wget
RUN mkdir /opt/modules
ADD puppet.conf /etc/puppet/
ENV modules "/opt/modules"
ENV class "vanilla"
ENTRYPOINT /usr/bin/puppet apply --graph --modulepath=${modules} -e "include ${class}"

Ponemos nuestro fichero de puppet.conf

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
graph = true
graphdir = /tmp

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

Compilamos el nuevo contenedor.

docker build -t puppet_graph .

Una vez compilado lo que hacemos es lanzar el contenedor pero añadiendo un volumen en tmp para poder recuperar los .dot generados

docker run -it -v "path_module":/opt/modules/"name_module" -v /tmp:/tmp -e class="name_module" puppet_graph

Esto nos generara tres .dot en tmp

expanded_relationships.dot

relationships.dot

resources.dot

Aqui podreis ver las dependencias de vuestro modulo.

Hasta aqui bien no pues bueno os pongo un .sh para que hagais esto automaticamente y asi no tener que estar tirando comandos.

#!/bin/bash
if [ $# -eq 0 ] ; then
echo "syntax michelangelo path_module name_module"
else
docker run -it -v ${1}:/opt/modules/${2} -v /tmp:/tmp -e class="${2}" puppet_graph
pushd /tmp
for i in `sudo find . -type f -iname '*.dot' | cut -d '.' -f2 | tr -d /`; do dot -Tpng $i.dot > $i.png ; rm -rf $i.dot ; done
fi

La sintaxys es la siguiente

michelangelo path_module name_module

Os generara unos graficos en png como los siguientes

expanded_relationships

Deja un comentario