O documento discute o Chef, uma ferramenta de provisionamento que automatiza a configuração de infraestrutura. Ele explica os conceitos-chave do Chef como provisionamento, nodes, run-lists, roles e cookbooks e descreve como criar e testar cookbooks e adicionar nodes ao Chef server.
2. O que é provisionamento?
• Em linhas curtas: disponibilizar ou "prover" algo.
Exemplo de provisionamento de um web server: !
Instalar e configurar nginx, assim como todas as
dependências que ele possa ter, tornando-o
pronto para uso.
3. O que é Chef?
• Uma ferramenta de provisionamento, desenvolvida
para "programar"/automatizar a infra.
• Sendo assim é possível preparar uma máquina em
questão de segundos.
• DevOps
4. Idempotência
• É considerado idempotente se o resultado de uma
ação realizada com sucesso é independente do
número de vezes que é executada.
• No caso do `chef` seria: não importa quantas vezes
o chef-client rode, o resultado será o mesmo.
5. Node
• São máquinas que estão sendo gerenciadas pelo
Chef, seja no chef-solo (receita local) ou no chef-
server.
6. Run-List
• É a lista de cookbooks que o node está
configurado para rodar
8. Chef-server
• Através de uma interface web, permite
gerenciamento dos nodes, configuração da run-
list de cada node ou role.
• Também atua como repositório de receitas para o
chef-client.!
• Possui um sistema de gerenciamento de usuários
para gerir toda a infra automatizada.
9. Chef Development Kit
• Comando chef na linha de comando
• Berkshelf (como se fosse um Gemfile, porém de receitas)
• Framework de testes: Test Kitchen
• ChefSpec, ferramenta de testes unitários para cookbooks
• Foodcritic, uma ferramenta de linting e análise de código
para cookbooks.
• Chef Client, Knife e Chef Zero.
11. Testando uma receita
• Através do Vagrant:
Vagrant.configure("2") do |config|!
config.vm.box = "precise64"!
config.vm.provision :chef_solo do |chef|!
chef.cookbooks_path = "~/src/toolkit-chef/cookbooks"!
chef.add_recipe("toolkit")!
end!
config.vm.network :forwarded_port, guest: 80, host: 11180!
end
12. Enviando um cookbook para
o Chef-Server
$ knife upload environments/production.json
$ knife upload cookbooks_dir
.chef/knife.rb!
!
validation_key "#{current_dir}/mycompany.pem"!
chef_server_url "https://mychef-server.com"
13. Adicionando uma máquina
ao Chef-server
$ knife bootstrap yourserveraddress -x username -P password --sudo