詳細検索

Recarregando variáveis do ambiente usando o chef's ruby_block

Avatar
por komi
3 min de leitura

Recarregando variáveis do ambiente usando o chef's ruby_block
Traduzido do 日本語 • Ver original

Olá. Aqui é a Komiya.

À medida que você automatiza várias coisas no Chef, acho que haverá casos em que você vai querer usar valores ou variáveis que foram alteradas no meio. Chegará um momento em que você vai querer resolver um fenômeno estranho que não é idempotente, como na primeira vez que não funciona, mas na segunda vez que funciona. Nesse caso, se você conseguir um valor com ohai, terá que usá-lo ou criar seu próprio plugin ohai, escrever ruby_block, ou chamá-lo com notifies ou algo como :"imediatamente.

Não sei do que você está falando! Se você acha assim, o link abaixo está escrito sobre a ordem em que o Chef é executado, então acho que seria uma boa ideia dar uma olhada. Equívoco de que as receitas do Chef são executadas de cima a baixo | Blog Engine Yard JP

Isso pode ser cruel, então por favor, consulte o seguinte.

Modelo "/etc/profile.d/rbenv.sh"
  not_if "grep rbenv /etc/profile.d/rbenv.sh" 
  fonte: "rbenv.sh.erb" 
  Ação :Criar
  notifica :create, "ruby_block[initialize_rbenv]", :imediatamente
fim

ruby_block "initialize_rbenv" fazem
  bloquear fazer
    ENV['RBENV_ROOT'] = nó[:rbenv][:raiz]
    ENV['CAMINHO'] = "#{nó[:rbenv][:raiz]}/bin:#{nó[:rbenv][:raiz]}/calços:#{nó[:ruby_build][:bin_path]}:#{ENV['CAMINHO']}" 
  fim

  Ação :Nada
fim

Para explicar um pouco, parece que o processamento que assume mudanças durante a receita não é fácil no chef, e o processamento escrito em ruby é feito antes da convergência, então parece que as mudanças no meio não podem ser reconhecidas naquele momento. O recurso ruby_block (para que tenha sucesso na segunda vez) parece rodar ao mesmo tempo que o timing de convergência. Se você quiser rodar apenas quando um recurso específico for processado, pode especificar o timing para os notifies desse recurso. Nesse caso, se você não especificar nada para a ação do recurso ruby_block, definir a configuração de perfil no recurso modelo e especificar :imediatamente como notifies, o reload da variável será realizado imediatamente. (Se você usar notifies ao separar receitas, será difícil executá-las individualmente com -o.) )

O que é legal no PATH é que o processamento pelo ruby-build no recurso bash que está programado para ser executado depois disso vai funcionar ♪ corretamente a partir da primeira aplicação de receita He(^o^He)(ノ^o^)ノ♪. No entanto, se você fizer isso com ruby-build ou chef, vai levar tempo porque não só será colocado com os recursos do pacote, mas também fará rodar, então pessoalmente quis deixar para o empacotador ou para rpm self-made.

Para mais informações sobre como recarregar o nome do host em Ohai, por favor visite o link abaixo. Nunca criei meu próprio plugin para o Ohai. chef-solo - Como usar o nome do host em Ohai - Qiita

Também usei o seguinte como referência. Muito obrigado. Dicas ao escrever uma receita no chef sem conhecer Ruby - Rodando recursos no ruby_block do blog chef - Qiita Parece útil se você está chamando recursos em um script rubi.

Obrigado por ler.

Related Articles