Pesquisa de site

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:

  1. O nome deve começar com uma letra minúscula ou dígito
  2. O nome completo deve começar com um caractere que não seja um espaço em branco
  3. A opção –association_user associará o usuário ao grupo de segurança admins no servidor Chef.
  4. A opção –filename salva a chave privada RSA no caminho especificado.
  5. 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.

  1. Instalação autônoma – inicialização a partir do nó sem necessidade de conectividade SSH ou WinRM
  2. 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

Artigos relacionados: