Chef - Sacos de Dados

Os sacos de dados do Chef podem ser definidos como uma coleção arbitrária de dados que pode ser usada com livros de receitas. Usar sacos de dados é muito útil quando não se deseja codificar os atributos nas receitas nem armazená-los nos livros de receitas.

Método de trabalho

Na configuração a seguir, estamos tentando nos comunicar com o URL do endpoint http. Para isso, precisamos criar uma bolsa de dados, que conterá os detalhes da URL do endpoint e usará em nossa receita.

Step 1 - Crie um diretório para nossa bolsa de dados.

mma@laptop:~/chef-repo $ mkdir data_bags/hooks

Step 2- Crie um item de saco de dados para o compartimento de solicitação. É preciso ter certeza de que está usando um URL requestBin definido.

vipi@laptop:~/chef-repo $ subl data_bags/hooks/request_bin.json { 
   "id": "request_bin", 
   "url": "http://requestb.in/1abd0kf1" 
}

Step 3 - Crie uma bolsa de dados no servidor Chef

vipin@laptop:~/chef-repo $ knife data bag create hooks 
Created data_bag[hooks]

Step 4 - Carregue a bolsa de dados para o servidor Chef.

vipin@laptop:~/chef-repo $ knife data bag from file hooks requestbin.json 
Updated data_bag_item[hooks::RequestBin]

Step 5 - Atualize a receita padrão do livro de receitas para receber o livro de receitas necessário de um saco de dados.

vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/recipes/default.rb 
hook = data_bag_item('hooks', 'request_bin') 
http_request 'callback' do 
   url hook['url'] 
end

Step 6 - Envie o livro de receitas modificado para o servidor Chef.

vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook 
Uploading my_cookbook [0.1.0]

Step 7 - Execute o cliente Chef no nó para verificar se o bin de solicitação http é executado.

user@server:~$ sudo chef-client 
...TRUNCATED OUTPUT... 
[2013-02-22T20:37:35+00:00] INFO: http_request[callback] 
GET to http://requestb.in/1abd0kf1 successful 
...TRUNCATED OUTPUT...

Como funciona

Saco de dados é uma coleção nomeada de entradas de dados de estrutura. É necessário definir a entrada de dados e chamar o item do saco de dados no arquivo JSON. Também é possível pesquisar por itens de saco de dados de dentro das receitas para usar os dados armazenados nos sacos de dados.

Criamos uma bolsa de dados chamada ganchos. Um data bag é um diretório dentro do repositório Chef. Usamos faca para criá-lo no servidor.