Como acessar o nome do ambiente no Puppetfile

4

Estou usando o R10K com o Puppet. O Puppetfile é basicamente DSL:

Because the Puppetfile format is actually implemented using a Ruby DSL any valid Ruby expression can be used.

Ref: https://github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd

Portanto, com base nisso, posso escrever um código Ruby no Puppetfile . Eu tentei e funciona. Mas o que eu não encontro e sei, é como acessar algumas variáveis.

Por fim, estou tentando fazer algo assim:

mod 'app',
  :git    => 'https://github.com/apps/app.git',
  :branch => ${environment}

De modo que a ramificação do módulo com check-out é igual ao ambiente para o qual foi registrada. Obviouslt ${environment} não é a sintaxe correta e não é um nome de variável real.

Portanto, a melhor resposta para essa pergunta seria como obter uma variável do ambiente e a segunda melhor resposta seria como fazer referência a uma variável (e quais variáveis estão disponíveis) no Puppetfile .

    
por ETL 22.01.2015 / 20:45

1 resposta

4

Claro, 10 minutos depois de eu fazer a pergunta, eu descobri a resposta (tentei resolver isso por horas) ...

No Puppetfile , você tem acesso às variáveis da classe DSL (consulte Classe DLS no GitHub . Assim, você tem acesso a @librarian , que é uma instância da classe Puppetfile (veja puppetfile.rb ) E a partir daí, você tem acesso aos seus atributos.

Portanto, a resposta para obter uma ramificação do nome do ambiente atual é:

mod 'app',
  :git    => 'https://github.com/apps/app.git',
  :branch => @librarian.basedir.split('/').last

Não é elegante e desejo que o puppetfile.rb nos dê acesso direto ao ambiente, mas isso funciona para mim.

    
por 22.01.2015 / 21:15

Tags