Control de versiones Foreman & Puppet

8

Acabo de configurar Foreman por primera vez y no estoy seguro de cómo poner todas mis configuraciones bajo control de versión. Sé que puedo usar Git para cada módulo que instalo en mi Puppet master, pero preferiría una solución más holística que abarque no solo los módulos, sino también qué clases están asociadas con cada host y cualquier variable establecida en los hosts. Cualquier sugerencia sería muy apreciada junto con los flujos de trabajo relacionados. En caso de que sea relevante, tengo la configuración de GitLab como un servidor Git central en el sitio y planeo configurar un servidor CI como Jenkins pronto.

GeneBean
fuente
encontraste lo que estabas buscando? Todavía estoy buscando un enfoque integral para administrar las plantillas y conf de Foreman. mgmt. Noté que esta pregunta tiene cero respuestas aceptadas.
Harperville

Respuestas:

2

Hay un complemento para mantener su definición de infraestructura en Foreman, más o menos una versión serializada de sus datos en Git, y cargar (y cambiar su infraestructura) los cambios. Tal vez eso sea útil para ti

https://github.com/marianitadn/foregit

eLobato
fuente
A primera vista, ¡esto puede ser exactamente lo que estaba buscando! Lo comprobaré más pronto y aceptaré como respuesta si es así. ¡Gracias!
GeneBean
0

Con foreman, debería poder ver todas las clases junto con cualquier variable de configuración asignada en los detalles del host. Ver: http://theforeman.org/manuals/1.4/index.html .

ullrich
fuente
Pero, ¿cómo aplico el control de versiones a toda esa información?
GeneBean
0

No estoy seguro si entiendo su pregunta, pero ¿se encontró con "bibliotecario de marionetas" https://github.com/rodjek/librarian-puppet ? Allí puede definir qué versiones / sha1 de los módulos de marionetas le gusta usar.

ullrich
fuente
Información muy útil (y algo que probablemente usaré) pero no lo que estoy buscando. Estoy buscando aplicar la versión a todas las cosas que se hacen en Foreman y Puppet, no solo a los módulos. ¿Eso aclara lo que estoy tratando de hacer?
GeneBean
0

En caso de que alguien lea esto más tarde: con Puppet puede definir qué versión de paquete / software desea instalar con la declaración "version => XYZ".

Gene, hice todo lo posible pero aún no recibo tu pregunta. Lo siento por eso :(

ullrich
fuente
No hay problema, realmente aprecio el intento.
GeneBean
0

Creo que lo que buscas es muy simple.

Las configuraciones de Puppet están en /etc/puppet. La opción más simple es simplemente ejecutar

git init /etc/puppet/

luego puede agregar Gitlab como control remoto y presionarlo.

Alternativamente, podría intentar algo como lo que describo aquí que no está centrado en Foreman, pero no veo ninguna razón por la que no pueda usarlo como inspiración.

chriscowley
fuente
0

También puede considerar etckeeper, que lo hace automáticamente

Incluso podrías escribir una envoltura como

vi puppet_wrapper.sh

#!/bin/bash
# variables
ETCKEEPER=`which etckeeper`
ETCKEEPER_MSG=$1
PUPPET=`which puppet`
PUPPET_CMD=$2

# Msg would be your commit msg
etckeeper commit $ETCKEEPER_MSG

# PUPPET_CMD e.g. apply
puppet $PUPPET_CMD

Estoy trabajando con esto por un tiempo y está bien para mis necesidades.

risker
fuente
0

Creo que solo necesita configurar un repositorio en git donde cada rama del repositorio de git se asignará a un entorno de títeres y cuando desee cambiar algo en títere, simplemente clone el repositorio, realice cambios y empújelo a la rama correspondiente. También debe configurar un gancho de git que se activará cuando envíe sus cambios al repositorio de git para que actualice el entorno mapeado en el servidor de marionetas. Puede hacer todo esto manualmente o solo a través de este módulo de marionetas.

https://github.com/theforeman/puppet-puppet

Ijaz Ahmad Khan
fuente