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.