Como instalar o Chef Server no Ubuntu 17.04 (Zesty Zapus)

Visão geral
Chef é uma ferramenta livre e open source de gerenciamento de configuração. É escrita em Ruby e Erlang. O Chef integra-se facilmente com provedores de nuvem como AWS, OpenStack ou Rackspace para criar e gerenciar servidores automaticamente. Quando uma organização cresce e o número de nós aumenta, torna-se impraticável gerenciar cada nó manualmente. O ecossistema do Chef tem três componentes principais: Chef Server, estaçõess de trabalho (workstations) e Chef Nodes. Com o Chef, um administrador pode controlar múltiplos nós a partir de um único servidor central.
Definição rápida: Chef Server é o ponto central que armazena cookbooks, políticas, dados e certificados dos clientes (nodes). Workstation é onde você prepara cookbooks e interage com o servidor.
Intenção principal e variantes relacionadas
- Instalar Chef Server no Ubuntu 17.04 (intenção principal)
- Configurar chef-server no Ubuntu
- chef-server-ctl reconfigure passo a passo
- Ativar Chef Manage (console web)
- Criar administrador e organização no Chef
Pré-requisitos
- Instância mínima do Ubuntu 17.04 (Zesty Zapus).
- Privilégios de root. Este guia usa comandos como root; se estiver com um usuário sudo, execute sudo -i antes.
- Um nome de domínio apontando para o servidor (FQDN). Ex.: chef.seudominio.com
- Conexão à internet para baixar pacotes e dependências.
Importante: garanta backups antes de alterações críticas em servidores em produção.
Atualizar o sistema base
Antes de instalar qualquer pacote, atualize repositórios e pacotes:
apt update && apt -y upgrade
Depois de atualizar, prossiga.
Atualizar hostname
O Chef requer um hostname resolvível. Use um FQDN (Fully Qualified Domain Name), por exemplo chef.seudominio.com. Para definir o hostname temporariamente:
hostname 'chef.seudominio.com'
Substitua chef.seudominio.com pelo seu domínio real. Atualize o arquivo /etc/hostname:
echo "chef.seudominio.com" | tee /etc/hostname
Adicione o IP público e o FQDN em /etc/hosts:
echo "192.168.1.1 chef.seudominio.com" >> /etc/hosts
Substitua 192.168.1.1 pelo IP público real do servidor.
Sincronização de tempo (NTP)
Chef é sensível a mudanças no relógio do sistema. Instale e ative NTP (porta 123/UDP):
apt install ntp
systemctl start ntp
systemctl enable ntp
Verifique o status e peers:
ntpq -p
Exemplo de saída (resumida) presente no sistema mostra peers e offsets; confirme que há pelo menos um peer com * indicando sincronização.
Baixar e instalar o Chef Server
Baixe o pacote .deb para Ubuntu (exemplo de versão):
wget https://packages.chef.io/files/stable/chef-server/12.15.8/ubuntu/16.04/chef-server-core_12.15.8-1_amd64.deb
Nota: Verifique a página oficial de downloads do Chef para obter o link mais recente, pois versões e caminhos podem mudar.
Instale o pacote:
dpkg -i chef-server-*.deb
O pacote instala os binários e os serviços do Chef Server, mas é necessário configurar.
Configurar o Chef Server (reconfigure)
Depois da instalação, execute:
chef-server-ctl reconfigure
Esse comando instala e configura todos os componentes necessários. Pode demorar alguns minutos. Ao final, você deverá ver uma mensagem do tipo:
Chef Client finished, 491/1096 resources updated in 03 minutes 13 seconds
Chef Server Reconfigured!
Verifique os serviços:
chef-server-ctl status
Saída esperada (exemplo):
run: bookshelf: (pid 6030) 87s; run: log: (pid 6047) 86s
run: nginx: (pid 5859) 91s; run: log: (pid 6387) 82s
run: oc_bifrost: (pid 5766) 92s; run: log: (pid 5842) 92s
...
Instalar o Console Web (Chef Manage)
O Chef Manage é a interface gráfica para administrar data bags, atributos, run-lists, roles, environments e cookbooks.
chef-server-ctl install chef-manage
chef-server-ctl reconfigure
chef-manage-ctl reconfigure
Se preferir aceitar a licença automaticamente:
chef-manage-ctl reconfigure --accept-license
Após configurar, o console estará disponível por HTTP/HTTPS no endereço do servidor (ou domínio).
Criar usuário administrador e organização
Crie um diretório para armazenar chaves privadas:
mkdir -p ~/.chef
Criar um usuário administrador (exemplo):
chef-server-ctl user-create admin Chef Administrator [email protected] StrongPassword -f ~/.chef/admin.pem
Substitua valores conforme necessário: admin (usuário), Chef (nome), Administrator (sobrenome), email e senha forte. O arquivo ~/.chef/admin.pem conterá a chave privada RSA.
Criar uma organização:
chef-server-ctl org-create my_org 'My Organization' --association_user admin -f ~/.chef/my_org.pem
Substitua my_org pelo nome curto da organização, ‘My Organization’ pelo nome completo e admin pelo usuário associado. O arquivo my_org.pem será usado por workstations e clients para autenticação.
Acessar o Console Web
Abra no navegador:
http://Seu-IP-ou-Domínio
Você verá a tela de login. Use o usuário e senha criados.
Após login, verá o painel de controle (dashboard) do Chef.
Plugins opcionais: Reporting e Push Jobs
Relatórios (Reporting):
chef-server-ctl install opscode-reporting
chef-server-ctl reconfigure
opscode-reporting-ctl reconfigure
opscode-reporting-ctl test
Push Jobs (executar jobs remotos):
chef-server-ctl install opscode-push-jobs-server
chef-server-ctl reconfigure
opscode-push-jobs-server-ctl reconfigure
Esses módulos adicionam funcionalidades: geração de relatórios centralizados e capacidade de disparar jobs contra nodes fora do ciclo de chef-client.
Checklist por função
Administrador de Chef:
- Ter FQDN resolvível e IP apontando para /etc/hosts.
- Garantir NTP configurado e sincronizado.
- Instalar pacotes chef-server e reconfigure.
- Criar usuário administrador e organização.
- Configurar backups periódicos do servidor e das chaves.
Workstation (DevOps/Engenheiro de infraestrutura):
- Instalar ChefDK/Workstation localmente.
- Armazenar chaves ~/.chef/ (admin.pem, my_org.pem) com permissões restritas.
- Testar upload de cookbooks e policyfiles.
Node (cliente):
- Instalar chef-client.
- Configurar client.rb com FQDN do servidor e chef-validator ou PEM correspondente.
- Executar chef-client e verificar registro no servidor.
Mini-metodologia de implantação (5 passos)
- Preparar host: hostname, /etc/hosts, firewall básico.
- Sincronizar tempo (NTP).
- Baixar e instalar o pacote chef-server-core.
- Executar chef-server-ctl reconfigure e validar serviços.
- Criar usuário e organização; configurar workstation e nodes.
Critérios de aceitação
- O comando chef-server-ctl status mostra serviços em execução.
- É possível acessar a interface web com o usuário administrador.
- As chaves .pem foram geradas e estão acessíveis em ~/.chef/.
- Nodes conseguem autenticar e registrar-se no servidor após configuração.
Solução de problemas comum
Problema: chef-server-ctl reconfigure falha ou trava.
Soluções:
- Verifique logs em /var/log/chef-server/ e arquivos de log dos serviços mencionados.
- Confirme DNS/resolução e /etc/hosts corretos.
- Confirme que NTP está sincronizado (ntpq -p) e horário consistente.
- Reinicie serviços isolados com chef-server-ctl restart
.
Comando para reiniciar um serviço específico:
chef-server-ctl restart nginx
Verifique espaço em disco e permissões de arquivos. Se a reconfigure falhar devido a pacotes Ruby/Erlang, revise dependências e versões do sistema.
Rollback/Desinstalação rápida (nota):
- Não existe um rollback automático completo; planeje backups dos diretórios /var/opt/chef-server, /etc/chef-server e das chaves antes de remover.
- Para remover pacotes manualmente: dpkg -r
e limpar diretórios, mas só em ambientes de teste.
Modelo de decisão (fluxograma)
flowchart TD
A[Iniciar pré-checagem] --> B{Hostname e DNS OK?}
B -- Sim --> C{NTP sincronizado?}
B -- Não --> F[Corrigir hostname/DNS]
C -- Sim --> D[Instalar pacote chef-server]
C -- Não --> G[Configurar NTP e aguardar sync]
D --> H[chef-server-ctl reconfigure]
H --> I{Reconfigure OK?}
I -- Sim --> J[Criar usuário e organização]
I -- Não --> K[Revisar logs e resolver erros]
Segurança e boas práticas
- Armazene as chaves .pem com permissões restritas (chmod 600).
- Use senhas fortes para contas administrativas.
- Habilite TLS/HTTPS no nginx por trás do Chef para tráfego seguro (letsencrypt/CA interna).
- Faça backups regulares dos dados do servidor (cookbooks, data bags, PostgreSQL embutido).
Alternativas e quando não usar Chef
- Se a infraestrutura for muito pequena (1–3 servidores), ferramentas mais simples como Ansible (sem agent) podem ser mais rápidas de adotar.
- Em ambientes que exigem execução episódica sem servidor central, Ansible ou scripts podem ser preferíveis.
- Chef é indicado quando você precisa de gestão centralizada, políticas e escala.
Resumo final
Seguindo este guia, você terá o Chef Server instalado e configurado no Ubuntu 17.04, com console web ativo, usuário/organização criados e plugins opcionais instaláveis. Garanta sincronização de tempo, hostname resolvível, e mantenha backups das chaves e dos dados.
Notas importantes:
- Verifique sempre a página oficial do Chef para links de download atualizados.
- Teste em ambiente de homologação antes de aplicar em produção.
Perguntas frequentes
Q: Posso usar este guia em outras versões do Ubuntu?
A: Os passos são similares, mas pacotes e links podem variar. Consulte a página de downloads do Chef para o pacote correspondente à sua versão.
Q: O que devo fazer se o chef-manage-ctl reconfigure falhar?
A: Revise logs em /var/log/chef-manage e /var/log/chef-server, verifique permissões de arquivos e aceite a licença com –accept-license se necessário.
Q: Onde encontro as chaves geradas?
A: No diretório informado durante a criação (ex.: ~/.chef/admin.pem e ~/.chef/my_org.pem). Proteja-as e faça backup.
Materiais semelhantes

Chrome não abre no Windows — 7 soluções rápidas

Ícone de Configurações ausente no menu Iniciar — correções

Barras de rolagem largas no Windows 10 e 11

Atualizações automáticas de segurança Ubuntu 16.04

Restringir permissões de apps Android
