Introdução ao Chef Ops

14
Introdução ao Chef Ops @wevtimoteo Lightning Talks - Tech Talk

Transcript of Introdução ao Chef Ops

Page 1: Introdução ao Chef Ops

Introdução ao Chef Ops@wevtimoteo

Lightning Talks - Tech Talk

Page 2: Introdução ao Chef Ops

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.

Page 3: Introdução ao Chef Ops

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

Page 4: Introdução ao Chef Ops

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.

Page 5: Introdução ao Chef Ops

Node• São máquinas que estão sendo gerenciadas pelo

Chef, seja no chef-solo (receita local) ou no chef-server.

Page 6: Introdução ao Chef Ops

Run-List

• É a lista de cookbooks que o node está configurado para rodar

Page 7: Introdução ao Chef Ops

Role

• Permite criar um grupo de cookbooks facilitando a configuração da Run-List

Page 8: Introdução ao Chef Ops

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.

Page 9: Introdução ao Chef Ops

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.

Page 10: Introdução ao Chef Ops

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

Page 11: Introdução ao Chef Ops

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

Page 12: Introdução ao Chef Ops

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"

Page 13: Introdução ao Chef Ops

Adicionando uma máquina ao Chef-server

$ knife bootstrap yourserveraddress -x username -P password --sudo

Page 14: Introdução ao Chef Ops

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