Chef - Configuração Solo

Chef-Solo é uma ferramenta de código aberto executada localmente e permite provisionar máquinas convidadas usando livros de receitas do Chef sem a complicação de qualquer configuração de cliente e servidor Chef. Isso ajuda a executar livros de receitas em um servidor criado por você mesmo.

Antes de executar o Chef-Solo na máquina local, é necessário instalar os dois arquivos a seguir na máquina local.

  • Solo.rb - Este arquivo informa ao Chef sobre onde encontrar livros de receitas, funções e pacotes de dados.

  • Node.json - Este arquivo define a lista de execução e qualquer atributo específico do nó, se necessário.

Configuração solo.rb

A seguir estão as etapas para configurar solo.rb.

Step 1 - Crie um arquivo solo.rb dentro do chef repo.

current_dir       = File.expand_path(File.dirname(__FILE__)) 
file_cache_path   "#{current_dir}" 
cookbook_path     "#{current_dir}/cookbooks" 
role_path         "#{current_dir}/roles" 
data_bag_path     "#{current_dir}/data_bags"

Step 2 - Adicione o arquivo ao repo git.

$ git add solo.rb

Step 3 - Crie um arquivo node.json dentro do chef repo com o seguinte conteúdo.

{ 
   "run_list": [ "recipe[ntp]" ] 
}

Step 4 - Pegue o livro de receitas NTP dentro do repositório do chef usando uma faca.

[email protected]:~/chef-repo $ knife cookbook site install ntp 
Installing ntp to /Users/mma/work/chef-repo/cookbooks 
…TRUNCATED OUTPUT… 
Cookbook ntp version 1.3.0 successfully installed

Step 5 - Adicione o arquivo node.json ao Git.

$ git add node.json

Step 6 - Confirme e envie os arquivos para o git repo.

[email protected]:~/chef-repo $ git commit -m "initial setup for Chef Solo" 
[email protected]:~/chef-repo $ git push 
Counting objects: 4, done. 
Delta compression using up to 4 threads. 
...TRUNCATED OUTPUT... 
To [email protected]:mmarschall/chef-repo.git 
b930647..5bcfab6 master -> master

Executando o livro de receitas no nó

Step 1 - Faça login no nó onde se deseja provisionar o Chef-Solo.

Step 2 - Clone o repositório Chef na máquina.

$ git clone $URL_PATH

Step 3 - cd para o chef repo.

$ cd chef-repo

Finalmente, execute o Chef-Solo para convergir o nó -

$ sudo chef-solo -c solo.rb -j node.json 
[2017-20-08T22:54:13+01:00] INFO: *** Chef 11.0.0 *** 
[2017-20-08T22:54:13+01:00] INFO: Setting the run_list to 
["recipe[ntp]"] from JSON 
...TRUNCATED OUTPUT... 
[2012-12-08T22:54:16+01:00] INFO: Chef Run complete in 2.388374 
seconds 
[2012-12-08T22:54:16+01:00] INFO: Running report handlers

solo.rb configura Chef-Solo para procurar seus livros de receitas, funções e pacotes de dados dentro do diretório atual: o repositório Chef.

Chef-Soloobtém sua configuração de nó de um arquivo JSON. Em nosso exemplo, o chamamos de node.json. Se você for gerenciar vários servidores, precisará de um arquivo separado para cada nó. Em seguida, Chef-Solo apenas executa uma execução de Chef com base nos dados de configuração encontrados em solo.rb e node.json.