quarta-feira, 7 de março de 2012

Automação com Chef

Chef é uma ferramenta de Gestão de Configuração, onde é possível configurar as aplicações dos equipamento.

Instalação do Chef Server

Devido à similaridade com o Amazon Linux, utilizarei o CentOS 6. Durante a instalação, configurei o hostname para chef.infradev.com.br.
Caso esteja utilizando o Amazon Linux, configure o repositório do CentOS 6 com enabled=0 e habilite-o no yum install utilizando --enablerepo=base.
Após a instalação do Sistema Operacional, execute os comandos abaixo:
yum update -y
rpm -Uvh http://rbel.co/rbel6
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
yum install -y gcc gcc-c++ automake autoconf make curl dmidecode unzip sudo
yum install -y rubygem-chef-server ruby-shadow --enablerepo=epel
service iptables stop
setup-chef-server.sh
knife configure -i -u admin
O último comando configura o usuário de administração, pressione enter para todas as perguntas, como segue:
[root@chef ~]# knife configure -i -u admin
WARNING: No knife configuration file found
Where should I put the config file? [~/.chef/knife.rb]
Please enter the chef server URL: [http://chef.infradev.com.br:4000]
Please enter the existing admin clientname: [chef-webui]
Please enter the location of the existing admin client's private key: [/etc/chef/webui.pem]
Please enter the validation clientname: [chef-validator]
Please enter the location of the validation key: [/etc/chef/validation.pem]
Please enter the path to a chef repository (or leave blank):
Creating initial API user...
Created client[admin]
Configuration file written to /root/.chef/knife.rb
[root@chef ~]#
Verifique a configuração do cliente
[root@chef ~]# knife client list
  admin
  chef-validator
  chef-webui
[root@chef ~]#
Acesse a url http://chef.infradev.com.br:4040 e logue-se com o usuário "admin" e a senha "chef321go", será solicitado alterar a senha.

Criar conta cliente

[root@chef ~]# knife client create alexandre -n -a -f /etc/chef/alexandre.pem
Created client[alexandre]
[root@chef ~]# knife client show alexandre
_rev:        1-b1f00f0260d6b4adfe7f34417ec3b7e5
admin:       true
chef_type:   client
json_class:  Chef::ApiClient
name:        alexandre
public_key:  -----BEGIN RSA PUBLIC KEY-----
             MIIBCgKCAQEAzehM3rKG2xYKyCpk2jIYZjbMVmjZJU04tBhHRDI4MzBydX1+5A4F
             DywQDRb1WUMYjy2XzpijyPlMSqIEf7f2X49tHyIB2++s4B3WOBzXsy7zCnfvAa4L
             tYi4/Z4IzGG5KoaBd5dEMPyEWC+HnwWHfoQiqHaS5Ojv3YDsF1UE72G/+1OXAcfC
             C0H6tQCYAt2c5boUMjX3GSQAV+0aKvfHjOeunSrtfk4igBgRVQZ2345glnZny1DT
             u4aqF84a4yIsBfKbqHKM1FUaGrdt4IHf7JHiV2cOFqnmufsTB/FO80arwawYM3qD
             1nEWQvgINt3TGNotx1ujLMkCAOoXaadHYwIDAQAB
             -----END RSA PUBLIC KEY-----
[root@chef ~]#
Foi criado um cliente com o nome alexandre.

Estação de Trabalho Windows

  • Baixe e instale o Chef Full Installer.
  • Baixe e descompacte Chef Repository, no meu caso baixou o arquivo opscode-chef-repo-a3bec38.zip.
    Descompacte-o, renomeie o diretório gerado para chef-repo, e mova-o para seu diretório home. %HOMEPATH%\chef-repo
  • Copie de root@chef.infradev.com.br:/etc/chef/ os arquivos validation.pem e alexandre.pem para %HOMEPATH%\chef-repo\.chef
  • Crie o arquivo %HOMEPATH%\chef-repo\.chef\knife.rb com o conteúdo abaixo:
current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                'alexandre'
client_key               "#{current_dir}/alexandre.pem"
validation_client_name   'chef-validator'
validation_key           "#{current_dir}/validation.pem"
chef_server_url          'http://chef.infradev.com.br:4000'
cache_type               'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path [ "#{current_dir}/../cookbooks" ]
  • Verifique a configuração do cliente:
PS C:\Users\Alexandre\chef-repo> knife client list
  admin
  alexandre
  chef-validator
  chef-webui
PS C:\Users\Alexandre\chef-repo>

Instalação do servidor gerenciado

Como na instalação do Chef Server, utilizei o CentOS 6. Durante a instalação, configurei o hostname para chefclient.infradev.com.br.
Após a instalação do Sistema Operacional, execute "na Estação de Trabalho Windows", os comandos abaixo:
PS C:\Users\Alexandre\workspace\chef-repo> knife bootstrap -d rhel6-rbel --ssh-user root --run-list "role[base], " chefclient
Este irá executar o bootstrap rhel6-rbel na máquina chefclient utilizando o usuário root, rodando a role base e registrando-o no chefserver.