On Mon, 20 Apr 2015 11:19:06 +0200
Arnau Bria <
arnau...@gmail.com> wrote:
> > modulepath = site:modules:$basemodulepath
> >
> > Todos los modulos publicos y/o que tienen ciclo de vida proprio
> > acaban dentro de 'modules' (la mayoria del forge, otros desde git
> > con tags), y los modulos 100% privados estan dentro de 'site' que
> > esta entonces en el mismo repositorio git que 'hieradata' (con
> > mucha conf) y 'manifests' (casi vacio, los stages, overrides de
> > parametros globales y poco mas).
>
> Podrías explicar con un pooc más de detalle? yo estaba poniendo los
> módulo básico en /etc/puppet/modules (de tal modo que, y por ejemplo,
> stdlib sólo está una vez en /etc/puppet/modules ) y luego, encada en
> entonro lo que me interesa. Pero veo que tu haces distinciones y me
> gustaría ver el porque.
Si por ejemplo quieres probar alguna version nueva de un modulo del
forge, te creas un branch 'testing', actualizas tu Puppetfile, push
git... y ya esta (con el hook adecuado).
En tu puppet master tendras 'production/modules/' y 'testing/modules/'
con todo duplicado al identico menos ese modulo, mas nuevo en 'testing'.
Tiene sentido que los environments puppet no comparten nada para poder
probar cualquier cosa diferente entre uno e otro. Por ejemplo gracias
al environment.conf uno puede tener el future parser activado e otro no.
Lo otro que comentaba de 'site', es que ahi estan otros modulos que no
son publicos y que forman parte del mismo repositorio que el
Puppetfile. Basicamente una agrupacion en un repo unico de lo que se
suelen llamar el repo de 'control' y los repos de 'profiles', 'roles',
etc. Mi experiencia es que funciona bien asi si hay poca gente
manejando todo el codigo y si todo acaba rapido en el branch
'production'.
> [...]
> > Y por supuesto, un hook desde el servidor GitLab donde se publican
> > los branches del repo para que r10k vaya creando/borrando los
> > environments de Puppet de forma automatica.
>
> web hook? probaste reaktor? que ejecutas de r10k? vi que había hooks
> que eran más eficaces que otros....
Suelo crear un hook casero por ssh... 5-10 lineas de shell y ya esta.
Para un cliente mio, he creado un hook bastante mas complejo porque se
tratan de cienes de environments (entonces es async + usa hardlink
antes de rsync hacia los puppet masters para ahorrar espacio y tiempo).
> hay una cosa que dice el rn0lson ese de r10k y que me tiene mosqueado.
> En:
>
http://rnelson0.com/2015/04/15/improved-r10k-deployment-patterns/
> el primer workflow que describe (con n-mil pasos) dice:
>
> - Run r10k to deploy the new environment
> - Test/fix/push/r10k loop till everything is okay
>
> a mi (supongo que por lo simple de mi configuración actual) r10k no me
> falla nuca... que problemas puede haber?
No creo que hable de fallos de r10k, si no de fallos en los cambios de
codigo : Se prueba, se encuentran problemas, se corrigen en los
manifests y entonces se tiene que hacer otros commit+push de git con
ejecuccion de r10k para poder volver a probar.
A mi este ciclo no me ha convencido nunca, porque uno acaba con un
monton de commits feos e inutiles, y se pierde mucho tiempo.
Para entornos pequenyos (2-3 personas), se puede tener permisos de
escritura dentro de uno de los branches de prueba (feo pero
eficiente!). Para entornos mas grandes, no he encontrado nada mejor que
Vagrant con puppet+r10k todo preparado para functionar con 'puppet
apply', es lo ideal y menos frustrante. La unica pega es que no sirve
para exported resources.
Matthias
--
Matthias Saou ██ ██
██ ██
Web:
http://matthias.saou.eu/ ██████████████
Mail/XMPP:
matt...@saou.eu ████ ██████ ████
██████████████████████
GPG: 4096R/E755CC63 ██ ██████████████ ██
8D91 7E2E F048 9C9C 46AF ██ ██ ██ ██
21A9 7A51 7B82 E755 CC63 ████ ████