Controle de versão Foreman & Puppet

8

Acabei de configurar o Foreman pela primeira vez e não sei como colocar todas as minhas configurações sob controle de versão. Eu sei que posso usar o Git para cada módulo que instalo no meu Puppet master, mas preferiria uma solução mais holística que englobe não apenas módulos, mas também quais classes estão associadas a cada host e quaisquer variáveis ​​definidas nos hosts. Todas as sugestões serão muito bem-vindas, juntamente com os fluxos de trabalho relacionados. Caso seja relevante, eu tenho a configuração do GitLab como um servidor Git central no local e planejo configurar um servidor de CI como o Jenkins em breve.

GeneBean
fonte
você encontrou o que estava procurando? Ainda estou procurando uma abordagem holística para gerenciar modelos e confs do Foreman. mgmt. Notei que esta pergunta tem zero respostas aceitas.
harperville

Respostas:

2

Existe um plug-in para manter sua definição de infraestrutura no Foreman, praticamente uma versão serializada de seus dados no Git, e fazer upload (e alterar sua infraestrutura) de alterações. Talvez isso seja útil para você

https://github.com/marianitadn/foregit

eLobato
fonte
À primeira vista, isso pode ser exatamente o que eu estava procurando! Vou dar uma olhada mais em breve e aceitar como resposta, se for. Obrigado!
GeneBean
0

Com o foreman, você deve poder visualizar todas as classes, juntamente com qualquer variável de configuração atribuída nos detalhes do host. Veja: http://theforeman.org/manuals/1.4/index.html .

ullrich
fonte
Mas como aplico o controle de versão a todas essas informações?
GeneBean
0

Não sei se entendi sua pergunta, mas você encontrou o "bibliotecário fantoche" https://github.com/rodjek/librarian-puppet ? Lá você pode definir quais versões / sha1 dos módulos fantoches você gostaria de usar.

ullrich
fonte
Informações muito úteis (e algo que provavelmente colocarei em uso), mas não o que estou procurando. Eu estou olhando para aplicar a versão a todas as coisas feitas no Foreman e Puppet, não apenas nos módulos. Isso esclarece o que estou tentando fazer?
GeneBean
0

Caso alguém esteja lendo isso mais tarde: Com o puppet, você pode definir qual versão do pacote / software você gostaria de instalar com a declaração "version => XYZ".

Gene, tentei o meu melhor, mas ainda não entendi sua pergunta. Desculpe por isso :(

ullrich
fonte
Não tem problema, eu realmente aprecio a tentativa.
GeneBean
0

Eu acho que o que você procura é muito simples.

As configurações do Puppet estão em /etc/puppet. A opção mais simples é apenas executar

git init /etc/puppet/

você pode adicionar o Gitlab como um controle remoto e empurrá-lo.

Como alternativa, você pode tentar algo parecido com o que descrevo aqui, que não é centrado no Foreman, mas não vejo razão para que você não possa usá-lo como inspiração.

chriscowley
fonte
0

Você também pode considerar o etckeeper, o que faz automaticamente

Você pode até escrever um invólucro 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

Eu estou trabalhando com isso por um tempo e tudo bem para as minhas necessidades.

arriscado
fonte
0

Eu acho que você só precisa configurar um repositório no git, onde cada ramo do repositório git será mapeado para um ambiente fantoche e quando você quiser alterar algo no fantoche, basta clonar o repositório, fazer alterações e enviá-lo para o ramo correspondente. Você também precisa configurar um gancho git que será acionado quando você enviar suas alterações ao repositório git, para que ele atualize o ambiente mapeado no servidor fantoche. Você pode fazer tudo isso manualmente ou apenas através deste módulo de marionetes.

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

Ijaz Ahmad Khan
fonte