Como instalar o Chef Infra Server no Debian 11/Debian 10
A empresa de automaçãoCHEF existe desde 2008, reunindo desenvolvedores e administradores de sistemas. CHET Infa é uma ferramenta IaC (Infraestrutura como Código) de código aberto que facilita a administração, configuração e alocação de recursos em uma rede. Desde o seu primeiro lançamento, a base de fãs do CHEF cresceu imensamente, com empresas como Cheezburger, Facebook, Indiegogo, Etsy adotando-o.
CHEF infra, escrito nas linguagens Ruby e Erlang possui uma arquitetura simples que consiste no seguinte:
- Estação de trabalho – Este é um computador onde você escreve os livros de receitas do Chef e administra seus nós. Todas as configurações são desenvolvidas aqui.
- Chef server – atua como hub para todos os nós e livros de receitas. Todas as configurações são carregadas aqui para pós-desenvolvimento
- Nós – São máquinas clientes gerenciadas pelo servidor Chef. Normalmente eles têm o cliente Chef instalado neles.
- Livros de receitas – contêm valores e dados sobre o estado desejado de um nó. Eles contêm recursos, receitas, atributos, templates, bibliotecas, metadados e tudo que auxilia na concepção de um sistema funcional.
Abaixo está um diagrama para ajudar a entender a arquitetura CHEF.
O CHEF Infa é preferido em automação porque:
- Alta disponibilidade – o servidor Chef Infa é altamente disponível com tolerância a falhas, resultados de pesquisa imediatos e consistentes e dados precisos em tempo real sobre sua infraestrutura.
- Console de gerenciamento gráfico para o Chef Infra Server que facilita a administração.
- Conformidade – Chef Automate cria relatórios personalizáveis que identificam problemas de conformidade, riscos de segurança e software desatualizado.
- Taxonomia integrada para todos os recursos básicos necessários em um sistema, bem como um mecanismo definido para estender esta taxonomia usando a linguagem Ruby
Seguindo este guia até o fim, você obterá o conhecimento necessário sobre como instalar o Chef Infra Server, Workstation e cliente no Debian 11/Debian 10.
Começando
Para este guia, certifique-se de ter o seguinte:
- Acesso Sudo ao seu servidor.
- Um nome de host configurado em seu sistema
- 3 servidores Debian 11/Debian 10
Os 3 servidores cumprirão as tarefas abaixo:
Server | IP Address | Hostname |
Chef Server | 192.168.205.4 | chef-server.computingforgeeks.com |
Chef Workstation | 192.168.205.14 | workstation.computingforgeeks.com |
Chef Client | 192.168.205.24 | chef-client. computingforgeeks.com |
Configure o nome do host em seu servidor conforme abaixo.
##On Chef Server
sudo hostnamectl set-hostname chef-server.computingforgeeks.com --static
Se você não tiver um nome de domínio válido, adicione-o à lista de hosts conhecidos conforme abaixo.
- Em todos os 3 servidores
$ sudo vi /etc/hosts
192.168.205.4 chef-server.computingforgeeks.com chefserver
Agora instale as dependências necessárias.
sudo apt -y install git vim wget curl bash-completion
sudo apt update && sudo apt upgrade
sudo reboot
Passo 1 – Configurar a sincronização de horário NTP
O servidor Chef Infa é sensível a desvios de relógio e exige que conectemos nosso sistema Debian ao Network Time Protocol (NTP)
Comece instalando o pacote Chrony.
sudo apt -y install chrony
Defina seu fuso horário local.
sudo timedatectl set-timezone Africa/Nairobi
Agora configure a lista de pools. Por exemplo, para Quênia, use:
$ sudo vim /etc/chrony/chrony.conf
# pool 2.pool.ntp.org iburst //Comment out this line
server 0.ke.pool.ntp.org
server 1.africa.pool.ntp.org
server 3.africa.pool.ntp.org
# Allow NTP client access from local network.
allow 192.168.205.0/24
Obtenha mais pools na página do projeto NTP Pool
Defina a sincronização NTP.
sudo timedatectl set-ntp true
Aplique as alterações feitas.
sudo systemctl restart chrony
Você será solicitado a permitir o NTP através do firewall.
sudo ufw allow ntp
Reinicie o serviço chronyd.
sudo systemctl restart chronyd
Passo 2 – Instale o Chef Infra Server no Debian 11/Debian 10
Baixe o pacote mais recente do Chef Infra Server na página de downloads do Chef Infra Server. Também usando o link de download, você pode obter o pacote conforme abaixo.
VERSION="14.12.21"
wget https://packages.chef.io/files/stable/chef-server/${VERSION}/ubuntu/20.04/chef-server-core_${VERSION}-1_amd64.deb
Instale o pacote baixado.
sudo apt install ./chef-server-core_${VERSION}-1_amd64.deb
Exemplo de saída:
Selecting previously unselected package chef-server-core.
(Reading database ... 142930 files and directories currently installed.)
Preparing to unpack chef-server-core_14.11.36-1_amd64.deb ...
Unpacking chef-server-core (14.11.36-1) ...
Setting up chef-server-core (14.11.36-1) ...
Thank you for installing Chef Infra Server!
Run 'chef-server-ctl reconfigure' to configure your Chef Infra Server
For more information on getting started see https://docs.chef.io/server/
Assim que a instalação for concluída, reconfigure seu servidor Chef.
sudo chef-server-ctl reconfigure
Proceda conforme abaixo.
Documentation: https://docs.chef.io/server/
Patents: https://www.chef.io/patents
+---------------------------------------------+
Chef License Acceptance
Before you can continue, 3 product licenses
must be accepted. View the license at
https://www.chef.io/end-user-license-agreement/
Licenses that need accepting:
* Chef Infra Server
* Chef Infra Client
* Chef InSpec
Do you accept the 3 product licenses (yes/no)?
> yes
......
Running handlers:
Running handlers complete
Chef Infra Client finished, 409/858 resources updated in 04 minutes 00 seconds
Chef Infra Server Reconfigured!
Agora verifique o status dos componentes do Chef Server.
$ sudo chef-server-ctl status
run: bookshelf: (pid 19850) 32s; run: log: (pid 19358) 184s
run: elasticsearch: (pid 19817) 33s; run: log: (pid 19169) 220s
run: nginx: (pid 19803) 33s; run: log: (pid 19626) 41s
run: oc_bifrost: (pid 19707) 34s; run: log: (pid 19059) 237s
run: oc_id: (pid 19800) 33s; run: log: (pid 19097) 226s
run: opscode-erchef: (pid 19934) 32s; run: log: (pid 19502) 179s
run: postgresql: (pid 19696) 34s; run: log: (pid 18554) 253s
run: redis_lb: (pid 19649) 35s; run: log: (pid 20085) 31s
Se você tiver o UFW ativado, permita HTTP e HTTPS através do firewall.
sudo ufw allow http
sudo ufw allow https
Passo 3 – Crie uma conta de administrador e organização
A conta admin garante a comunicação entre o servidor, as estações de trabalho e os nós. A sintaxe usada é a seguinte:
chef-server-ctl user create USERNAME FIRST_NAME [MIDDLE_NAME] LAST_NAME EMAIL PASSWORD
Exportaremos as variáveis primeiro.
USERNAME="chefadmin"
FIRST_NAME="Chef"
LAST_NAME="Administrator"
EMAIL="[email "
PASSWORD="Passw0rd"
KEY_PATH="/root/chefadmin.pem"
Agora execute o comando abaixo para criar um usuário administrador.
sudo chef-server-ctl user-create ${USERNAME} ${FIRST_NAME} ${LAST_NAME} ${EMAIL} ${PASSWORD} -f ${KEY_PATH}
Verifique a criação do usuário.
$ sudo chef-server-ctl user-list
chefadmin
pivotal
Prossiga e crie uma organização para adicionar o usuário acima.
Normalmente a sintaxe abaixo é usada para criar uma organização.
chef-server-ctl org-create ORG_NAME "ORG_FULL_NAME" --association_user USERNAME --filename ORGANIZATION-validator.pem (options)
No comando acima lembre-se:
- O nome deve começar com uma letra minúscula ou dígito
- O nome completo deve começar com um caractere que não seja um espaço em branco
- A opção –association_user associará o usuário ao grupo de segurança admins no servidor Chef.
- A opção –filename salva a chave privada RSA no caminho especificado.
- Uma chave privada RSA será gerada automaticamente. Esta é a chave do chef-validador e deve ser guardada em um local seguro.
Para este caso, meu comando será o seguinte.
sudo chef-server-ctl org-create computingforgeeks 'computingforgeeks, Inc.' \
--association_user chefadmin \
--filename /root/computingforgeeks-validator.pem
Veja a lista de organizações.
$ sudo chef-server-ctl org-list
computingforgeeks
Você também pode verificar se as chaves RSA do usuário e da organização estão disponíveis.
$ sudo find /root -name "*.pem"
/root/chefadmin.pem
/root/computingforgeeks-validator.pem
Passo 4 – Instalar e configurar a estação de trabalho Chef.
A Chef Workstation é usada para desenvolver configurações e depois enviá-las para o servidor Chef.
Ele é instalado primeiro baixando o pacote mais recente da página de downloads do Chef Workstation.
Alternativamente, identifique a versão mais recente e baixe-a com Wget.
#On Debian 11
VERSION="22.1.745"
wget https://packages.chef.io/files/stable/chef-workstation/${VERSION}/debian/11/chef-workstation_${VERSION}-1_amd64.deb
#On Debian 10
VERSION="22.1.745"
wget https://packages.chef.io/files/stable/chef-workstation/${VERSION}/debian/10/chef-workstation_${VERSION}-1_amd64.deb
Instale o pacote usando o comando:
sudo dpkg -i chef-workstation_${VERSION}-1_amd64.deb
Saída de amostra:
Selecting previously unselected package chef-workstation.
(Reading database ... 141880 files and directories currently installed.)
Preparing to unpack chef-workstation_22.1.745-1_amd64.deb ...
Unpacking chef-workstation (22.1.745-1) ...
Setting up chef-workstation (22.1.745-1) ...
The Chef Workstation App is available.
Launch the App by running 'chef-workstation-app'.
The App will then be available in the system tray.
Thank you for installing Chef Workstation!
You can find some tips on getting started at https://docs.chef.io/workstation/getting_started/
Verifique a instalação.
$ chef --version
Chef Workstation version: 22.1.745
Chef InSpec version: 4.52.9
Chef CLI version: 5.5.0
Chef Habitat version: 1.6.420
Test Kitchen version: 3.2.2
Cookstyle version: 7.26.1
Chef Infra Client version: 17.9.26
A faca também está instalada.
$ knife --version
Chef Infra Client: 17.9.26
Agora gere um repositório Chef conforme abaixo.
$ chef generate repo chef-repo
+---------------------------------------------+
Chef License Acceptance
Before you can continue, 3 product licenses
must be accepted. View the license at
https://www.chef.io/end-user-license-agreement/
Licenses that need accepting:
* Chef Workstation
* Chef Infra Client
* Chef InSpec
Do you accept the 3 product licenses (yes/no)?
> yes
Persisting 3 product licenses...
✔ 3 product licenses persisted.
+---------------------------------------------+
Generating Chef Infra repo chef-repo
Loading Chef InSpec profile files:
Loading Chef InSpec input files:
Loading Chef InSpec waiver files:
- Ensuring correct Chef Infra repo file content
Your new Chef Infra repo is ready! Type `cd chef-repo` to enter it.
Prossiga e crie um diretório para armazenar as configurações do Knife:
mkdir ~/chef-repo/.chef
cd chef-repo
Crie um par de chaves RSA.
$ ssh-keygen -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/thor/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/thor/.ssh/id_rsa
Your public key has been saved in /home/thor/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:wv055J+g9F6BTODc53tS9P+OBvC4KGCDJa9pNla0PVQ thor@debian
The key's randomart image is:
+---[RSA 4096]----+
| . |
| oEo |
| .o o . . |
| . o... o.+ . . |
| * +o S ++o . .|
| . B o. +..o+ .|
| = o ...*.+.. .|
| B ...o.= +...|
| + . ...o o...o|
+----[SHA256]-----+
Envie as chaves para o seu servidor Chef. Certifique-se de que o login root seja permitido.
$ ssh-copy-id root@192.168.205.4
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/thor/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email 's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email '"
and check to make sure that only the key(s) you wanted were added.
Copie os arquivos .pem do Chef Server
scp [email :/root/*.pem ~/chef-repo/.chef/
Veja as chaves copiadas.
$ ls ~/chef-repo/.chef
chefadmin.pem computingforgeeks-validator.pem
Gerou um livro de receitas do Chef.
$ chef generate cookbook chef-first-cookbook
Hyphens are discouraged in cookbook names as they may cause problems with custom resources. See https://docs.chef.io/workstation/ctl_chef/#chef-generate-cookbook for more information.
Generating cookbook chef-first-cookbook
Loading Chef InSpec profile files:
Loading Chef InSpec input files:
Loading Chef InSpec waiver files:
- Ensuring correct cookbook content
..........
Why not start by writing an InSpec test? Tests for the default recipe are stored at:
test/integration/default/default_test.rb
If you'd prefer to dive right in, the default recipe can be found at:
recipes/default.rb
Etapa 5 – Configurar o Knife e inicializar um nó cliente.
A inicialização de um nó cliente envolve a instalação do Chef Infra Client no sistema cliente para que a comunicação entre ele e o servidor Chef possa acontecer.
Existem duas maneiras de inicializar um nó cliente.
- Instalação autônoma – inicialização a partir do nó sem necessidade de conectividade SSH ou WinRM
- bootstrap de faca – da estação de trabalho do Chef
Este guia demonstra como inicializar um nó cliente usando o método de inicialização Knife.
Agora, no nó Estação de Trabalho, crie um arquivo config.rb conforme abaixo.
vim ~/chef-repo/.chef/config.rb
Adicione o conteúdo abaixo substituindo apropriadamente.
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name 'chefadmin'
client_key "chefadmin.pem"
validation_client_name 'computingforgeeks-validator'
validation_key "computingforgeeks-validator.pem"
chef_server_url 'https://chef-server.computingforgeeks.com/organizations/computingforgeeks'
cache_type 'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path ["#{current_dir}/../cookbooks"]
Lembre-se de substituir o servidor Chef e os detalhes da organização de forma adequada. Salve o arquivo e prossiga com a cópia dos certificados SSL.
$ cd ~/chef-repo
$ knife ssl fetch
WARNING: Certificates from chef-server.computingforgeeks.com will be fetched and placed in your trusted_cert
directory (/home/thor/chef-repo/.chef/trusted_certs).
Knife has no means to verify these are the correct certificates. You should
verify the authenticity of these certificates after downloading.
Adding certificate for chef-server_computingforgeeks_com in /home/thor/chef-repo/.chef/trusted_certs/chef-server_computingforgeeks_com.crt
Verifique se o config.rb está configurado.
$ knife client list
computingforgeeks-validator
Agora inicialize seu nó Chef Client, para este caso, o endereço IP é 192.168.205.24, então proceda conforme abaixo.
cd ~/chef-repo/.chef
knife bootstrap 192.168.205.24 -x root -P ***** --node-name chef-client-node1
Lembre-se de que o usuário root é usado para privilégios elevados necessários. Certifique-se de que o login root seja permitido em seu Chef Client Node.
Proceda conforme mostrado.
$ knife bootstrap 192.168.205.24 -x root -P ***** --node-name chef-client-node1
-x/--winrm-user: This flag is deprecated. Use -U/--connection-user instead.
Connecting to 192.168.205.24 using ssh
The authenticity of host '192.168.205.24 ()' can't be established.
fingerprint is SHA256:5iGXeB0Fr2zfznkmmGv8ZDIL5SdHk6nXGKt7vSf1Ufg.
Are you sure you want to continue connecting
? (Y/N) y
O processo de bootstrap acontece conforme abaixo:
Depois de concluído, verifique se o nó foi adicionado.
$ knife node list
chef-client-node1
Você também pode ver mais informações sobre o nó conforme abaixo.
knife node show chef-client-node1
Saída de amostra:
Passo 6 – (Opcional) Instale o Chef Manage.
Chef manager oferece uma interface Web onde você pode gerenciar tarefas do servidor Chef. Ele é instalado conforme abaixo.
No servidor Chef, baixe o pacote Chef manage na página de downloads Chef manager
VER="3.2.43"
wget https://packages.chef.io/files/stable/chef-manage/${VER}/ubuntu/20.04/chef-manage_${VER}-1_amd64.deb
Instale o pacote conforme abaixo:
$ sudo dpkg -i chef-manage_${VER}-1_amd64.deb
Selecting previously unselected package chef-manage.
(Reading database ... 199475 files and directories currently installed.)
Preparing to unpack chef-manage_3.2.35-1_amd64.deb ...
Unpacking chef-manage (3.2.35-1) ...
Setting up chef-manage (3.2.35-1) ...
Thank you for installing the Chef Management Console add-on!
The next step in the process is to run:
chef-manage-ctl reconfigure
Reconfigure o servidor Chef e os complementos conforme abaixo
sudo chef-server-ctl reconfigure
sudo chef-manage-ctl reconfigure
Depois de concluído, acesse a UI da Web usando a URL https://serverip/login. Na página de login, forneça as credenciais do usuário Admin criado na etapa 3.
Você deverá conseguir ver o painel do Chef com o nó do cliente adicionado conforme abaixo.
Conclusão.
Este guia forneceu o conhecimento básico para começar a usar o Chef Infa. Espero que você tenha achado este guia sobre como instalar o Chef Infra Server no Debian 11/Debian 10 emocionante.
Ver mais:
- Instale Chef Server e estação de trabalho no Ubuntu
- Como instalar a estação de trabalho Chef no CentOS 8/RHEL 8
- Como configurar o Chef Infra Server no CentOS 8/RHEL 8
- Melhores livros para aprender automação de fantoches e chefs