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:
2. Baixando a estrutura básica do Chef:
# 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:
Configure o arquivo solo.rb:
Adicione as linhas abaixo:
cookbook_path "/opt/chef-repo/cookbooks"
Vamos criar nossa primeira receita de teste:
# knife cookbook create ricardo-nginx
Agora vamos abrir o arquivo recipes/default.rb da nossa receita:
Inclua as linhas abaixo:
action :install
end
Crie o arquivo JSON para execução da receita (/opt/chef-repo/web.json) e adicione a seguinte linha:
Agora, basta executar a receita:
Conferindo:
Testando via curl:
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/