Pesquisa de site

Como configurar o Chef Infra Server no CentOS 8/RHEL 8


Este artigo discutirá a instalação do Chef Server no CentOS 8/RHEL 8. Chef Infra é uma estrutura de automação de infraestrutura de código aberto que lhe dá poderes para definir o estado de seus sistemas e mantê-los dessa forma automaticamente.

Para Puppet: Instale o Puppet 6.x Master/Server no CentOS 8 | RHEL 8

O Chef Server é responsável por armazenar sua política de configuração, definida nos livros de receitas do Chef, bem como metadados pesquisáveis para cada nó gerenciado. Os nós gerenciados pelo Chef fazem check-in regularmente com o servidor Chef para garantir que suas configurações locais estejam sempre atualizadas.

Chef normalmente é composto de três partes:

  • Estação de Trabalho: Este é o computador a partir do qual você escreve livros de receitas do Chef e administra toda a sua rede.
  • Chef server: atua como um repositório central para seus livros de receitas de autoria, bem como para informações sobre cada nó que ele gerencia.
  • Nós: Este é um computador que possui o cliente Chef instalado e é gerenciado por um servidor Chef. Um nó pode ser qualquer máquina física ou virtual da sua rede.

A estrutura é ilustrada no diagrama abaixo.

Visão geral detalhada:

Em nosso guia anterior, abordamos a instalação do Chef Server no Ubuntu 18.04 LTS. O artigo de hoje será focado na instalação do Chef Server no sistema CentOS 8/RHEL 8 Linux.

Pré-requisitos

  • Um servidor CentOS/RHEL 8 com 8GB Ram alocado
  • Atribua um nome de host ao servidor Chef que deve estar em seu nome de domínio.

Meu servidor tem 8GB de RAM e 4vcpus.

$ free -h
              total        used        free      shared  buff/cache   available
Mem:          7.6Gi       162Mi       7.2Gi        16Mi       257Mi       7.2Gi
Swap:         4.0Gi          0B       4.0Gi

$ $ lscpu 
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  1
Core(s) per socket:  1
Socket(s):           4
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               94
Model name:          Intel Core Processor (Skylake, IBRS)
Stepping:            3
CPU MHz:             3599.986
BogoMIPS:            7199.97
Hypervisor vendor:   KVM
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            4096K
L3 cache:            16384K
NUMA node0 CPU(s):   0-3
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat md_clear

Etapa 1: atualizar o sistema

Defina o nome de host adequado para a máquina do servidor Chef antes de atualizar.

sudo hostnamectl set-hostname chefserver.computingforgeeks.com --static

Se você não tiver um servidor DNS válido em sua rede, adicione um registro A ao arquivo /etc/hosts.

$ sudo vi /etc/hosts
10.10.1.162 chefserver.computingforgeeks.com chefserver

Em seguida, instale os pacotes padrão básicos e atualize o servidor:

sudo dnf -y install git vim wget curl bash-completion
sudo dnf -y update
sudo reboot

Etapa 2: configurar o NTP

O servidor Chef é particularmente sensível ao desvio do relógio e requer que os sistemas nos quais está sendo executado estejam conectados ao Network Time Protocol (NTP).

Consulte nosso guia anterior:

Como configurar o servidor NTP usando Chrony no RHEL 8/CentOS 8

Etapa 3: Instale o Chef Server no CentOS 8/RHEL 8

Visite a página de downloads do Chef Infra Server e escolha a versão atual ou estável para baixar.

wget https://packages.chef.io/files/stable/chef-server/13.2.0/el/8/chef-server-core-13.2.0-1.el7.x86_64.rpm

Depois de baixar o pacote, instale-o com o gerenciador de pacotes de distribuição.

sudo dnf localinstall chef-server-core-13.2.0-1.el7.x86_64.rpm

Aceite a instalação pressionando a tecla y quando solicitado.

Dependencies resolved.
===================================================================================================================================================
 Package                                Arch                         Version                              Repository                          Size
===================================================================================================================================================
Installing:
 chef-server-core                       x86_64                       13.2.0-1.el7                         @commandline                       328 M

Transaction Summary
===================================================================================================================================================
Install  1 Package

Total size: 328 M
Installed size: 1.0 G
Is this ok [y/N]: y

Assim que a instalação for concluída, precisamos reconfigurar os componentes do chef server para que todos os serviços do Chef Server sejam configurados corretamente e iniciados.

sudo chef-server-ctl reconfigure

Seja paciente, pois isso pode levar algum tempo para ser concluído.

.....................................................
Recipe: private-chef::partybus
  * execute[set initial migration level] action run
    - execute cd /opt/opscode/embedded/service/partybus && ./bin/partybus init
  * ruby_block[migration-level file sanity check] action run (skipped due to not_if)
Recipe: private-chef::rabbitmq
  * script[hard_kill_rabbitmq] action run
    - execute "bash"  "/tmp/chef-script20190920-14976-1jvsbez"

Running handlers:
Running handlers complete
Chef Infra Client finished, 482/1032 resources updated in 02 minutes 26 seconds
Chef Server Reconfigured!

O status dos componentes do Chef Server pode ser verificado executando o comando:

$ sudo chef-server-ctl status
run: bookshelf: (pid 14851) 90s; run: log: (pid 9251) 174s
run: nginx: (pid 14681) 92s; run: log: (pid 9869) 130s
run: oc_bifrost: (pid 14586) 93s; run: log: (pid 8936) 194s
run: oc_id: (pid 14678) 92s; run: log: (pid 8961) 190s
run: opscode-erchef: (pid 14882) 90s; run: log: (pid 9395) 168s
run: opscode-expander: (pid 14742) 90s; run: log: (pid 9115) 180s
run: opscode-solr4: (pid 14714) 91s; run: log: (pid 9039) 184s
run: postgresql: (pid 14576) 93s; run: log: (pid 8432) 206s
run: rabbitmq: (pid 15362) 85s; run: log: (pid 10142) 124s
run: redis_lb: (pid 9480) 164s; run: log: (pid 9479) 164s

Todos os serviços do Chef Server serão executados sob o nome de usuário/grupo opscode. O nome de usuário do PostgreSQL é opscode-pgsql.

Se você estiver usando firewalld, abra as portas http e https.

sudo firewall-cmd --permanent --add-service={http,https}
sudo firewall-cmd --reload

Etapa 4: criar usuário administrador e organização

A conta de usuário administrador não é criada automaticamente durante a instalação. Precisamos criar um.

A sintaxe para criação de usuário é:

chef-server-ctl user create USERNAME FIRST_NAME [MIDDLE_NAME] LAST_NAME EMAIL PASSWORD

Salve as variáveis necessárias e execute comandos de criação de usuário.

# Set values
USERNAME="chefadmin"
FIRST_NAME="Chef"
LAST_NAME="Administrator"
EMAIL="[email "
KEY_PATH="/root/chefadmin.pem"

# Create user
sudo chef-server-ctl user-create ${USERNAME} ${FIRST_NAME} ${LAST_NAME} ${EMAIL} -f ${KEY_PATH} --prompt-for-password

Opções usadas:

  • –prompt-for-password : Solicita a senha do usuário
  • -f: Grava a chave privada no arquivo especificado em vez de STDOUT

Para visualizar a lista de usuários, execute:

$ sudo chef-server-ctl user-list
chefadmin
pivotal

Criar organização do Chef

O próximo passo é criar uma organização. Uma organização é a entidade de nível superior para controle de acesso baseado em funções no Chef Infra Server. O Chef Infra Server oferece suporte a várias organizações.

O subcomando org-create é usado para criar uma organização. A sintaxe completa do comando é:

$ chef-server-ctl org-create ORG_NAME "ORG_FULL_NAME" \
--association_user USERNAME --filename ORGANIZATION-validator.pem (options)

Notas:

  • 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 user ao grupo de segurança admins no servidor Chef.
  • Uma chave privada RSA é gerada automaticamente. Esta é a chave do validador do chef e deve ser salva em um local seguro.
  • A opção --filename salvará a chave privada RSA no caminho absoluto especificado.

Exemplo :

sudo chef-server-ctl org-create computingforgeeks 'ComputingForGeeks, Inc.' \
--association_user chefadmin \
--filename /root/computingforgeeks-validator.pem

Verifique a criação da organização:

$ sudo chef-server-ctl org-list
computingforgeeks

Você deve ter chaves privadas RSA em /root – para usuário e organização.

$ sudo find /root -name "*.pem"
/root/chefadmin.pem
/root/computingforgeeks-validator.pem

Etapa 5: instalar Chef Manage (opcional)

Chef Manage é um complemento premium que fornece um usuário gráfico

Vamos instalar o console de gerenciamento

sudo chef-server-ctl install chef-manage 
sudo chef-server-ctl reconfigure 
sudo chef-manage-ctl reconfigure

Você deve conseguir acessar o painel de administração web do Chef em https://serverip/login. Faça login com usuário administrador e senha criados.

Painel de gerenciamento do Chef:

Instale pacotes adicionais em https://packages.chef.io/

Curso de aprendizagem:

Etapa 6: instalar a estação de trabalho Chef

Nosso próximo artigo abordará a instalação do Chef Client & Workstation no RHEL/CentOS 8.

Como instalar a estação de trabalho Chef no CentOS 8/RHEL 8

Verifique também os guias relacionados:

Como configurar o Chef Knife, fazer upload de livros de receitas e executar uma receita em Chef Client Nodes

Como instalar o Chef Development Kit/Workstation no Ubuntu 18.04

Como instalar o Chef Development Kit no Arch Linux

Artigos relacionados: