Observação:
- Este tutorial está disponível em um ambiente de laboratório gratuito fornecido pela Oracle.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Migrar o Oracle Linux Automation Manager para uma Implantação Clusterizada
Introdução
Seja fazendo upgrade de uma release anterior ou começando com uma instalação de host único, ambos os ambientes podem migrar para uma implantação clusterizada. Os administradores precisam planejar sua topologia antes de migrar, pois o cluster pode consistir em uma combinação de nós de Plano de Controle, Execução e Hop e um banco de dados remoto.
Após seguir este tutorial, você saberá como migrar uma instalação de host único para uma implantação clusterizada com um banco de dados remoto.
Objetivos
Neste tutorial, você aprenderá a:
- Configurar um banco de dados remoto
- Migrar para uma implantação clusterizada
Pré-requisitos
-
Um sistema com o Oracle Linux Automation Manager instalado.
Para obter detalhes sobre como instalar o Oracle Linux Automation Manager, consulte o Oracle Linux Automation Manager Installation Guide.
Implantar o Oracle Linux Automation Manager
Observação: Se estiver em execução em sua própria tenancy, leia o projeto linux-virt-labs
GitHub README.md e conclua os pré-requisitos antes de implantar o ambiente de laboratório.
-
Abra um terminal no Luna Desktop.
-
Clone o projeto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Altere para o diretório de trabalho.
cd linux-virt-labs/olam
-
Instale as coleções necessárias.
ansible-galaxy collection install -r requirements.yml
-
Atualize a configuração da instância do Oracle Linux.
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "olam-node" type: "control" 2: instance_name: "exe-node" type: "execution" 3: instance_name: "db-node" type: "db" passwordless_ssh: true add_cluster_ports: true EOF
-
Implante o ambiente de laboratório.
ansible-playbook create_instance.yml -e ansible_python_interpreter="/usr/bin/python3.6" -e "@instances.yml" -e olam_single_host=true
O ambiente de laboratório gratuito requer a variável extra
ansible_python_interpreter
porque instala o pacote RPM do SDK para Python do Oracle Cloud Infrastructure. O local para a instalação deste pacote está sob os módulos python3.6.A forma de implantação padrão usa a CPU AMD e o Oracle Linux 8. Para usar uma CPU Intel ou Oracle Linux 9, adicione
-e instance_shape="VM.Standard3.Flex"
ou-e os_version="9"
ao comando de implantação.Importante: Aguarde a execução bem-sucedida do playbook e atinja a tarefa de pausa. A instalação do Oracle Linux Automation Manager está concluída neste estágio do manual e as instâncias estão prontas. Tome nota da reprodução anterior, que imprime os endereços IP públicos e privados dos nós que implanta.
Faça log-in no WebUI
-
Abra um terminal e configure um túnel SSH para o Oracle Linux Automation Manager.
ssh -L 8444:localhost:443 oracle@<hostname_or_ip_address>
No ambiente de laboratório gratuito, use o endereço IP externo da instância do nó olam.
-
Abra um navegador da Web e insira o URL.
https://localhost:8444
Observação: aprove o aviso de segurança com base no navegador usado. No Chrome, clique no botão **Avançado e, em seguida, no link Prosseguir para o localhost (inseguro).
-
Faça log-in no Oracle Linux Automation Manager com o Nome de Usuário de
admin
e a Senha deadmin
criada durante a implantação automatizada. -
Depois de fazer log-in, o WebUI é exibido.
Migrar para uma Implantação de Cluster
Embora o Oracle Linux Automation Manager seja executado como uma implantação de host único, ele também suporta a execução como um cluster com um banco de dados remoto e um plano de controle separado e nós de execução. A instalação configura a instância de host único como um nó hybrid
. A primeira etapa na migração para uma implantação de cluster é converter essa instância em um nó control plane
.
Para obter mais informações sobre diferentes topologias de instalação, consulte o capítulo Planning the Installation da documentação do Oracle Linux Automation Manager Installation Guide.
Preparar o Nó do Plano de Controle
-
Alterne para o terminal conectado à instância do olam-node que executa o Oracle Linux Automation Manager.
Observação: De agora em diante, vamos nos referir a essa instância como o nó do plano de controle.
-
Interrompa o serviço Oracle Linux Automation Manager.
sudo systemctl stop ol-automation-manager
-
Crie um backup do banco de dados.
sudo su - postgres -c 'pg_dumpall > /tmp/olamv2_db_dump'
Instalar o Banco de Dados Remoto
-
Copie o backup do banco de dados do nó do plano de controle para o novo host de banco de dados remoto.
scp /tmp/olamv2_db_dump oracle@db-node:/tmp/
O comando
scp
se comunica usando uma conexão SSH entre os nós. Essa conexão é possível devido ao ambiente de laboratório gratuito que configura log-ins SSH sem senha entre as instâncias. -
Conecte-se via ssh à instância do db-node.
ssh oracle@db-node
-
Ative o fluxo do módulo de banco de dados.
O Oracle Linux Automation Manager permite o uso do banco de dados Postgresql versão 12 ou 13. Usaremos e habilitaremos o fluxo do módulo versão 13 neste tutorial.
sudo dnf -y module reset postgresql sudo dnf -y module enable postgresql:13
-
Instale o servidor de banco de dados.
sudo dnf -y install postgresql-server
-
Adicione a regra de firewall de banco de dados.
sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload
-
Inicialize o banco de dados.
sudo postgresql-setup --initdb
-
Defina o algoritmo de armazenamento padrão do banco de dados.
sudo sed -i "s/#password_encryption.*/password_encryption = scram-sha-256/" /var/lib/pgsql/data/postgresql.conf
Para obter mais detalhes sobre essa funcionalidade do banco de dados, consulte Autenticação de Senha na documentação upstream.
-
Atualize o arquivo de autenticação baseado no host do banco de dados.
echo "host all all 0.0.0.0/0 scram-sha-256" | sudo tee -a /var/lib/pgsql/data/pg_hba.conf > /dev/null
Esta linha adicional executa a autenticação SCRAM-SHA-256 para verificar a senha de um usuário ao se conectar de qualquer endereço IP.
-
Atualize o valor listen_address no qual o banco de dados faz listening das conexões.
sudo sed -i "/^#port = 5432/i listen_addresses = '"$(hostname -s)"'" /var/lib/pgsql/data/postgresql.conf
Você pode escolher o endereço IP ou o nome do host para esse valor. O tutorial usa
hostname -s
para selecionar o nome do host. -
Inicie e ative o serviço de banco de dados.
sudo systemctl enable --now postgresql
-
Importe o arquivo de dump do banco de dados.
sudo su - postgres -c 'psql -d postgres -f /tmp/olamv2_db_dump'
-
Defina a senha da conta de usuário do banco de dados Oracle Linux Automation Manager.
sudo su - postgres -c "psql -U postgres -d postgres -c \"alter user awx with password 'password';\""
Esse comando define a senha
awx
comopassword
. Escolha uma senha mais segura se estiver executando este comando fora do ambiente de laboratório livre. -
Feche a sessão SSH conectada à instância do db-node, pois isso conclui as etapas necessárias para configurar o banco de dados remoto.
exit
Adicionar as Definições do Banco de Dados Remoto
-
Confirme sua conexão com a instância do olam-node verificando o prompt do terminal.
-
Verifique se o host pode se comunicar com o banco de dados remoto.
pg_isready -d awx -h db-node -p 5432 -U awx
O pacote postgresql inclui o comando
pg_isready
. Esse pacote faz parte da instalação original de host único. Se esse comando não funcionar, você provavelmente ignorou uma etapa acima ou está sem acesso de entrada à porta 5432 na rede. -
Adicione as definições do banco de dados remoto a um novo arquivo de configuração personalizado.
cat << EOF | sudo tee /etc/tower/conf.d/db.py > /dev/null DATABASES = { 'default': { 'ATOMIC_REQUESTS': True, 'ENGINE': 'awx.main.db.profiled_pg', 'NAME': 'awx', 'USER': 'awx', 'PASSWORD': 'password', 'HOST': 'db-node', 'PORT': '5432', } } EOF
Use a mesma senha definida anteriormente para a conta de usuário do banco de dados
awx
. -
Interrompa e desative o banco de dados local no nó do plano de controle.
sudo systemctl stop postgresql sudo systemctl disable postgresql
-
Mascare o serviço de banco de dados local.
sudo systemctl mask postgresql
Essa etapa impede que o serviço de banco de dados local seja iniciado ao iniciar o serviço Oracle Linux Automation Manager.
-
Inicie o Oracle Linux Automation Manager.
sudo systemctl start ol-automation-manager
-
Verifique se o Oracle Linux Automation Manager se conecta ao banco de dados remoto.
sudo su -l awx -s /bin/bash -c "awx-manage check_db"
A saída retornará os detalhes da versão do banco de dados remoto se uma conexão for bem-sucedida.
Remover a Instância do Banco de Dados Local
A remoção do banco de dados local original é segura depois de confirmar que a conexão com o banco de dados remoto está funcionando.
-
Remova os pacotes do banco de dados.
sudo dnf -y remove postgresql
-
Remova o diretório
pgsql
que contém os arquivos de dados antigos do banco de dados.sudo rm -rf /var/lib/pgsql
Alterar o Tipo de Nó do Nó do Plano de Controle
Ao converter em uma implantação clusterizada, alterne a instância de host único node_type de hybrid
para control
.
-
Confirme o tipo de nó atual do nó do plano de controle.
sudo su -l awx -s /bin/bash -c "awx-manage list_instances"
A saída mostra o
node_type
definido como um valor dehybrid
. -
Remova o grupo de instâncias padrão.
sudo su -l awx -s /bin/bash -c "awx-manage remove_from_queue --queuename default --hostname $(hostname -i)"
-
Defina a nova instância e fila.
sudo su -l awx -s /bin/bash -c "awx-manage provision_instance --hostname=$(hostname -i) --node_type=control" sudo su -l awx -s /bin/bash -c "awx-manage register_queue --queuename=controlplane --hostnames=$(hostname -i)"
-
Adicione os valores do nome da fila padrão no arquivo de configurações personalizadas.
cat << EOF | sudo tee -a /etc/tower/conf.d/olam.py > /dev/null DEFAULT_EXECUTION_QUEUE_NAME = 'execution' DEFAULT_CONTROL_PLANE_QUEUE_NAME = 'controlplane' EOF
-
Atualizar configurações do receptor.
cat << EOF | sudo tee /etc/receptor/receptor.conf > /dev/null --- - node: id: $(hostname -i) - log-level: info - tcp-listener: port: 27199 - control-service: service: control filename: /var/run/receptor/receptor.sock - work-command: worktype: local command: /var/lib/ol-automation-manager/venv/awx/bin/ansible-runner params: worker allowruntimeparams: true verifysignature: false EOF
-
Reiniciar o Oracle Linux Automation Manager
sudo systemctl restart ol-automation-manager
A conversão do nó híbrido de host único em um nó de plano de controle com um banco de dados remoto está concluída. Agora, adicionaremos um nó do plano de execução para tornar este cluster totalmente funcional.
Adicionar um Nó do Plano de Execução ao Cluster
Antes de o cluster estar totalmente funcional, adicione um ou mais nós de execução. Os nós de execução executam jobs padrão usando ansible-runner, que executa playbooks em um ambiente de execução baseado em contêiner OLAM EE Podman.
Preparar o Nó do Plano de Execução
-
Conecte-se via ssh à instância *exe-node.
ssh exe-node
-
Instale o pacote de repositório do Oracle Linux Automation Manager.
sudo dnf -y install oraclelinux-automation-manager-release-el8
-
Desative o repositório para a versão mais antiga.
sudo dnf config-manager --disable ol8_automation ol8_automation2
-
Ative o repositório da versão atual.
sudo dnf config-manager --enable ol8_automation2.2
-
Instale o pacote do Oracle Linux Automation Manager.
sudo dnf -y install ol-automation-manager
-
Adicione a regra de firewall do Receptor.
sudo firewall-cmd --add-port=27199/tcp --permanent sudo firewall-cmd --reload
-
Edite a configuração do soquete Redis.
sudo sed -i '/^# unixsocketperm/a unixsocket /var/run/redis/redis.sock\nunixsocketperm 775' /etc/redis.conf
-
Copie a chave secreta do nó do plano de controle.
ssh oracle@olam-node "sudo cat /etc/tower/SECRET_KEY" | sudo tee /etc/tower/SECRET_KEY > /dev/null
Importante: Cada nó do cluster requer a mesma chave secreta.
-
Crie um arquivo de definições personalizadas contendo as definições necessárias.
cat << EOF | sudo tee /etc/tower/conf.d/olamv2.py > /dev/null CLUSTER_HOST_ID = '$(hostname -i)' DEFAULT_EXECUTION_QUEUE_NAME = 'execution' DEFAULT_CONTROL_PLANE_QUEUE_NAME = 'controlplane' EOF
O
CLUSTER_HOST_ID
é um identificador exclusivo do host dentro do cluster. -
Crie um arquivo de definições personalizadas contendo a configuração do banco de dados remoto.
cat << EOF | sudo tee /etc/tower/conf.d/db.py > /dev/null DATABASES = { 'default': { 'ATOMIC_REQUESTS': True, 'ENGINE': 'awx.main.db.profiled_pg', 'NAME': 'awx', 'USER': 'awx', 'PASSWORD': 'password', 'HOST': 'db-node', 'PORT': '5432', } } EOF
-
Implante o ambiente de execução ansible-runner.
-
Abra um shell como o usuário
awx
.sudo su -l awx -s /bin/bash
-
Migre qualquer contêiner existente para a versão mais recente do podman, mantendo os namespaces não privilegiados ativos.
podman system migrate
-
Obtenha o ambiente de execução do Oracle Linux Automation Engine para o Oracle Linux Automation Manager.
podman pull container-registry.oracle.com/oracle_linux_automation_manager/olam-ee:2.2
-
Saia do shell de usuário
awx
.exit
-
-
Gere os certificados SSL para NGINX.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/tower/tower.key -out /etc/tower/tower.crt
Digite as informações solicitadas ou apenas pressione a tecla
ENTER
. -
Substitua a configuração NGINX padrão pela configuração abaixo.
cat << 'EOF' | sudo tee /etc/nginx/nginx.conf > /dev/null user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; } EOF
-
Atualize o arquivo de configuração do Receptor.
cat << EOF | sudo tee /etc/receptor/receptor.conf > /dev/null --- - node: id: $(hostname -i) - log-level: debug - tcp-listener: port: 27199 - tcp-peer: address: $(ssh olam-node hostname -i):27199 redial: true - control-service: service: control filename: /var/run/receptor/receptor.sock - work-command: worktype: ansible-runner command: /var/lib/ol-automation-manager/venv/awx/bin/ansible-runner params: worker allowruntimeparams: true verifysignature: false EOF
node:id
é o nome do host ou o endereço IP do nó atual.tcp-peer:address
é o nome do host ou o endereço IP e a porta da malha do Receptor no nó do plano de controle.
-
Inicie e ative o serviço Oracle Linux Automation Manager.
sudo systemctl enable --now ol-automation-manager.service
-
Feche a sessão SSH conectada à instância exe-node, pois isso conclui as etapas necessárias para configurar o nó de execução.
exit
Provisionar o Nó do Plano de Execução
-
Confirme sua conexão com a instância do olam-node verificando o prompt do terminal.
Execute a etapa de provisionamento em um dos nós de plano de controle do cluster e aplique-a a todas as instâncias clusterizadas do Oracle Linux Automation Manager.
-
Defina a instância de execução e a fila.
sudo su -l awx -s /bin/bash -c "awx-manage provision_instance --hostname=$(ssh exe-node hostname -i) --node_type=execution" sudo su -l awx -s /bin/bash -c "awx-manage register_default_execution_environments" sudo su -l awx -s /bin/bash -c "awx-manage register_queue --queuename=execution --hostnames=$(ssh exe-node hostname -i)"
register_queue
usa umqueuename
para criar/atualizar e uma lista dehostnames
delimitados por vírgulas em que os jobs são executados.
-
Registre o relacionamento de mesmo nível da malha de serviços.
sudo su -l awx -s /bin/bash -c "awx-manage register_peers $(ssh exe-node hostname -i) --peers $(hostname -i)"
Verificar o Registro do Nó do Plano de Execução
-
Conecte-se via ssh à instância *exe-node.
ssh exe-node
-
Verifique se o serviço de malha do Oracle Linux Automation Manager está em execução.
sudo systemctl status receptor-awx
-
Verifique o status da malha de serviços.
sudo receptorctl --socket /var/run/receptor/receptor.sock status
Exemplo de Saída:
[oracle@execution-node ~]$ sudo receptorctl --socket /var/run/receptor/receptor.sock status Node ID: 10.0.0.62 Version: +g System CPU Count: 2 System Memory MiB: 15713 Connection Cost 10.0.0.55 1 Known Node Known Connections 10.0.0.55 10.0.0.62: 1 10.0.0.62 10.0.0.55: 1 Route Via 10.0.0.55 10.0.0.55 Node Service Type Last Seen Tags 10.0.0.62 control Stream 2022-11-06 19:46:53 {'type': 'Control Service'} 10.0.0.55 control Stream 2022-11-06 19:46:06 {'type': 'Control Service'} Node Work Types 10.0.0.62 ansible-runner 10.0.0.55 local
Para obter mais detalhes sobre o Receptor, consulte a documentação upstream.
-
Verifique as instâncias do cluster em execução e mostre a capacidade disponível.
sudo su -l awx -s /bin/bash -c "awx-manage list_instances"
A saída aparece
green
quando o cluster estabelece a comunicação entre todas as instâncias. Se os resultados apareceremred
, aguarde de 20 a 30 segundos e tente executar o comando novamente.Exemplo de Saída:
[oracle@control-node ~]$ sudo su -l awx -s /bin/bash -c "awx-manage list_instances" [controlplane capacity=136] 10.0.0.55 capacity=136 node_type=control version=19.5.1 heartbeat="2022-11-08 16:24:03" [default capacity=0] [execution capacity=136] 10.0.0.62 capacity=136 node_type=execution version=19.5.1 heartbeat="2022-11-08 17:16:45"
Isso conclui a migração do Oracle Linux Automation Manager para uma implantação em cluster.
(Opcional) Verifique se o Cluster está Funcionando
-
Atualize a janela do Web browser usada para exibir o WebUI anterior ou abra uma nova janela do Web browser e informe o URL.
https://localhost:8444
A porta usada no URL precisa corresponder à porta local do túnel SSH.
Observação: aprove o aviso de segurança com base no navegador usado. No Chrome, clique no botão Avançado e, em seguida, no link Prosseguir para o localhost (inseguro).
-
Efetue log-in no Oracle Linux Automation Manager novamente com o NOME DE USUÁRIO
admin
e a senhaadmin
. -
Depois de fazer log-in, o WebUI é exibido.
-
Usando o menu de navegação à esquerda, clique em Grupos de Instâncias na seção Administração.
-
Na janela principal, clique no botão Adicionar e selecione Adicionar grupo de instâncias.
-
Digite as informações necessárias na página Criar novo grupo de instâncias.
-
Clique no botão Salvar.
-
Na página de resumo Detalhes, clique na guia Instâncias.
-
Na página Instâncias, clique no botão Associar.
-
Na página Selecionar Instâncias, clique na caixa de seleção ao lado do nó de execução.
-
Clique no botão Salvar.
-
Usando o menu de navegação à esquerda, clique em Equipamentos na seção Recursos.
-
Na janela principal, clique no botão Adicionar e selecione Adicionar equipamento.
-
Digite as informações necessárias na página Criar novo equipamento.
Para Grupos de Instâncias, selecione o ícone de pesquisa para exibir a caixa de diálogo pop-up Selecionar Grupos de Instâncias. Clique na caixa de seleção ao lado do grupo execução e, em seguida, clique no botão Selecionar.
-
Clique no botão Salvar.
-
Na página de resumo Detalhes, clique na guia Hosts.
-
Na página Hosts, clique no botão Adicionar.
-
Na página Criar novo host, informe o endereço IP ou o nome do host de uma instância disponível.
No ambiente de laboratório gratuito, usaremos o db-node, que é o nome do host da instância do banco de dados remoto.
-
Clique no botão Salvar.
-
Navegue até o menu à esquerda e clique em **Credenciais`.
-
Na página Credenciais, clique no botão Adicionar.
-
Digite as informações necessárias na página Criar Nova Credencial.
Para o Tipo de Credencial, clique no menu suspenso e selecione Máquina. Isso exibe as credenciais Detalhes do Tipo.
Digite um Nome de Usuário de
oracle
e procure a Chave Privada SSH. Clicar no botão Procurar... exibe uma janela de diálogo Abrir Arquivo.Clique com o botão direito do mouse na janela principal dessa caixa de diálogo e selecione Mostrar Arquivos Ocultos.
Em seguida, selecione a pasta
.ssh
e o arquivoid_rsa
. Clicar no botão Abrir faz com que o conteúdo do arquivo de chave privada seja copiado para a caixa de diálogo Chave Privada SSH. Role para baixo e clique no botão Salvar. -
Navegue até o menu à esquerda e clique em Equipamentos.
-
Na página Equipamentos, clique no equipamento de Teste.
-
Na página de resumo Detalhes, clique na guia Hosts.
-
Na página Hosts, clique na caixa de seleção ao lado do host
db-node
.Em seguida, clique no botão Executar Comando.
-
Na caixa de diálogo Executar comando, selecione o módulo
ping
na lista de valores Módulos e clique no botão Próximo. -
Selecione o ambiente de execução do OLAM EE (2.2) e clique no botão Próximo.
-
Selecione a credencial da máquina db-node e clique no botão Próximo.
-
O painel é atualizado e exibe uma visualização do comando.
Depois de verificar os detalhes, clique no botão Iniciar.
-
O job será iniciado e exibirá a página Saída do job.
Se tudo for executado com sucesso, a saída mostrará uma mensagem
SUCCESS
informando que o nó de execução entrou em contato com a instânciadb-node
usando o móduloping
do Ansible. Se você não vir a saída, atualize a página clicando na guia Detalhes e retornando à guia Saída.
Próximas Etapas
A saída dentro do WebUI confirma que você tem um ambiente de cluster de trabalho para o Oracle Linux Automation Manager. Continue a desenvolver suas habilidades e confira nosso outro treinamento do Oracle Linux Automation Manager na Estação de Treinamento do Oracle Linux.
Links Relacionados
Documentação do Oracle Linux Automation Manager
Treinamento do Oracle Linux Automation Manager
Estação de Treinamento do Oracle Linux
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Migrate Oracle Linux Automation Manager to a Clustered Deployment
F74665-02
Copyright ©2022, Oracle and/or its affiliates.