r10k: fluxo de trabalho de mesclagem adequado com git

4

Atualmente, estou executando o Puppet no modo sem mestre. Estou usando o r10k para implantação de módulos e ambientes.

Versão simplificada: O repositório de controle do r10k possui duas ramificações: testing e produção . Mudanças na produção serão distribuídas automaticamente para servidores de produção. Mudanças nos testes para alguns servidores de teste.

Agora, se eu estou mudando as coisas no teste, às vezes eu tenho que mudar o repositório de controle do r10k também. Um exemplo comum seria o Puppetfile , que atualmente se parece com isso em produção :

forge 'forge.puppetlabs.com'

# Forge modules
mod 'puppetlabs/stdlib'
mod 'puppetlabs/concat'
mod 'saz/ssh'

# Custom modules
mod 'ownmodule1',
        :git => 'https://git.example.org/configuration/ownmodule1.git',
        :ref => 'production'
mod 'ownmodule2',
        :git => 'https://git.example.org/configuration/ownmodule2.git',
        :ref => 'production'

A configuração dos módulos personalizados pode ter esta aparência na ramificação testing :

mod 'ownmodule1',
        :git => 'https://git.example.org/configuration/ownmodule1.git',
        :ref => 'testing'
mod 'ownmodule2',
        :git => 'https://git.example.org/configuration/ownmodule2.git',
        :ref => 'testing'

Agora, um commit em testing pode ter esta aparência:

+mod 'ownmodule3,
+        :git => 'https://git.example.org/configuration/ownmodule3.git',
+        :ref => 'testing'

Se eu mesclar isso a produção , e não tiver cuidado, ownmodule3 será adicionado à produção com o teste em> branch, o que poderia ser fatal. Isso também impede a fusão automatizada quando todos os testes forem bem-sucedidos.

Como posso modificar meus repositórios ou fluxo de trabalho para evitar a mesclagem acidental de alterações específicas de ramificações?

    
por M. Glatki 07.07.2016 / 10:35

2 respostas

1

Desde o r10k 2.4.0 , É possível ter os módulos puppet correspondentes à ramificação no repositório de controle. No ramo testing , o Puppetfile da minha pergunta pode ser assim:

mod 'ownmodule1',
  :git => 'https://git.example.org/configuration/ownmodule1.git',
  :ref => :control_branch

Isso resultaria na ramificação testing do módulo ownmodule a ser usada com r10k deploy . Isso é bastante confiável. Com :default_branch , você pode especificar um ramo de fallback.

    
por 26.09.2016 / 15:17
2

A substituição de nomes de ambiente codificados usados como referências em seu Puppetfile com uma variável substituída pelo nome do ambiente atual ajudaria a tornar seu Puppetfile mesclável entre filiais.

Pseudo código:

mod 'ownmodule1',
  :git => 'https://git.example.org/configuration/ownmodule1.git',
  :ref => ${environment}

Para o código real , consulte esta resposta , mas não garanto que será trabalhar na sua configuração, é um pouco hacky.

Mas, é claro, para fazer seus ambientes implantarem adequadamente após essa alteração, você teria que criar production branch em seus módulos junto com testing e iniciá-los com algum código mínimo, não operacional, mas compilando para novos módulos .

PS Se esta resposta for útil e você decidir fazer uma upvote, favor recalque a resposta vinculada também.

    
por 14.08.2016 / 22:29