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.