Chef 11 atributos do nó disponíveis e pedidos

1

No Chef 10, tenho várias funções que definem atributos de nós personalizados, como

"appname": "my_rails_app"

O atributo é usado para carregar variáveis específicas do aplicativo em um livro de receitas de wrapper. Existem diferentes variáveis e número de variáveis para cada aplicativo Rails, por exemplo.

app = Chef::EncryptedDataBagItem.load('deploy', node.appname)

No Chef 11, minha execução falha porque 'node.appname' não é definido até que um Chef bem-sucedido seja executado. Isso significa que a criação do servidor se tornou um processo de 2 etapas - lançamento com função básica e depois com o livro de receitas do wrapper de inicialização.

Eu entendo por que esse comportamento foi alterado, mas estou curioso para saber como resolvê-lo sem reescrever meus livros de receitas e ainda aderir ao DRY.

UPDATE

Obrigado, isso é interessante, mas não tenho certeza se isso funciona. Por exemplo, o livro de receitas genérico de implantação, que também depende do nome do aplicativo, está incluído na receita my_rails_app. Então, uma corrida parece

Função - onde o atributo é definido

"appname": "my_rails_app"

Livro de receitas do wrapper de aplicativos - carregar variáveis

include_recipe "deploy"
app = Chef::EncryptedDataBagItem.load('deploy', node.appname)

Implante o livro de receitas - carregue as chaves SSH

app = Chef::EncryptedDataBagItem.load('deploy', node.appname)

O livro de receitas é o que mata o Chef.

    
por upbeat.linux 12.09.2013 / 11:12

1 resposta

2

Os atributos padrão já definidos nos arquivos de atributo de um livro de receitas podem ser resolvidos novamente durante um cliente chef executado com node.from_file :

# set the attribute
node.set[:appname] = "my_rails_app"

# optionally reload node so attribute is available during this chef-client run
node.from_file( run_context.resolve_attribute('your-railapp-cookbook', 'default') )

# and log it. 
Chef::Log.info( "appname [#{node[:appname]}]" )

Esta é uma seção extraída das minhas respostas sobre o uso de atributos :

Se você estiver fazendo isso, talvez seja necessário pensar em salvar o nó de volta para o servidor se este for um ponto de verificação suficientemente importante em seu processo para garantir chamadas extras de volta ao servidor do chef.

    
por 12.09.2013 / 11:46