Conhecendo o Chef e automatizando seu trabalho
Hoje em dia muito tem se falado sobre automatização de infraestrutura. Isto está bastante relacionado com o conceito de DevOps, que bem resumidamente posso dizer que é a integração entre desenvolvimento e operação na administração da infraestrutura de TI. Trabalhando juntos, devs e ops com foco no resultado com agilidade e desempenho. A infraestrutura passa a ser gerenciada e orquestrada via código utilizando ferramentas que viabilizam isto.
Como o objetivo deste post não é falar sobre DEVOPS, eu deixo um link que traz uma excelente explicação sobre o assunto. É sem dúvida o artigo mais completo que eu já lí sobre o tema, de autoria de Guto Carvalho: http://gutocarvalho.net/octopress/2013/03/16/o-que-e-um-devops-afinal/
O Chef é uma das ferramentas que viabilizam o gerenciamento e orquestração automatizada. Existem outras ferramentas similares que você já deve ter ouvido falar, como Puppet, Ansible, Rex, Salt , CFEngine, entre outras por aí.
O Chef utilizada receitas (cookbooks) para a execução das tarefas. Desta forma nos cookbooks estão todas as configurações necessárias para aplicar no seu servidor.
Assim como o Puppet por exemplo, o Chef pode trabalhar no modelo cliente-servidor e no modo apenas cliente, chamado Chef-Solo. Aqui vou abordar sobre o Chef-Solo.
No meu pequeno laboratório, eu utilizo Vagrant. É simples e rápido. Como usar o Vagrant fica pra outro post.
1. Instalando o Chef-Solo:
# curl -L https://www.opscode.com/chef/install.sh | bash
2. Baixando a estrutura básica do Chef:
# wget http://github.com/opscode/chef-repo/tarball/master
# tar -zxvf master
# mv opscode-chef-repo-f9d4b0c/ /opt/chef-repo
# mkdir /opt/chef-repo/.chef
Verifique no diretório “/opt/chef-repo/” a estrutura criada.
Crie e configure o cookbook path, para isso execute o seguinte procedimento:
# vi /opt/chef-repo/.chef/knife.rb
cookbook_path \[ ‘/opt/chef-repo/cookbooks’ ]
Configure o arquivo solo.rb:
# vi /opt/chef-repo/solo.rb
Adicione as linhas abaixo:
file_cache_path “/opt/chef-solo”
cookbook_path “/opt/chef-repo/cookbooks”
Vamos criar nossa primeira receita de teste:
# cd /opt/chef-repo/cookbooks
# knife cookbook create ricardo-nginx
Agora vamos abrir o arquivo recipes/default.rb da nossa receita:
# vim /opt/chef-repo/cookbooks/ricardo-nginx/recipes/default.rb
Inclua as linhas abaixo:
package “nginx” do
action :install
end
Crie o arquivo JSON para execução da receita (/opt/chef-repo/web.json) e adicione a seguinte linha:
{ “run_list”: [ “recipe[ricardo-nginx]” ] }
Agora, basta executar a receita:
# chef-solo -c /opt/chef-repo/solo.rb -j /opt/chef-repo/web.json
Conferindo:
```bash
# ps fax | grep nginx
Testando via curl:
# curl -I localhost
Este realmente foi um post bem básico. O Chef é uma das ferramentas que ainda estou estudando, e não tenho mesmo muito conhecimento e informação para compartilhar. Em breve novas posts com minhas novas descobertas 😀
Dica de leitura: http://www.ibm.com/developerworks/br/library/a-devops2/
Deixe um comentário