Introdução ao Chef Ops
-
Upload
weverton-couto-timoteo -
Category
Technology
-
view
286 -
download
0
Transcript of Introdução ao Chef Ops
Introdução ao Chef Ops@wevtimoteo
Lightning Talks - Tech Talk
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.
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
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.
Node• São máquinas que estão sendo gerenciadas pelo
Chef, seja no chef-solo (receita local) ou no chef-server.
Run-List
• É a lista de cookbooks que o node está configurado para rodar
Role
• Permite criar um grupo de cookbooks facilitando a configuração da Run-List
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.
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.
Criando um cookbook$ knife cookbook create COOKBOOK_NAME (options)
• cookbook/attributes • cookbook/CHANGELOG.md • cookbook/definitions • cookbook/files/default • cookbook/libraries • cookbook/metadata.rb • cookbook/providers • cookbook/README.md (or .rdoc) • cookbook/recipes/default.rb • cookbook/resources • cookbook/templates/default
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
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"
Adicionando uma máquina ao Chef-server
$ knife bootstrap yourserveraddress -x username -P password --sudo
Referências
• Learn Chef - http://learn.chef.io/
• Chef Style DevOps Kungfu - ChefConf 2015 - https://www.youtube.com/watch?v=_DEToXsgrPc
• DevOps Kungfu - https://github.com/chef/devops-kungfu