Depois de criar e preparar sua infraestrutura Salt para os novos sistemas RHEL 8/9, você pode realizar estas etapas de migração para concluir o upgrade para o RHEL 8/9.
Preparar e realizar a migração
- Pare o serviço RaaS nos sistemas RHEL 7 e RHEL 8/9.
- Copie o arquivo de backup gz do servidor antigo para o novo servidor . O arquivo gz deve ser armazenado no diretório /var/lib/pgsql com ownership=postgres:postgres.
- No usuário postgres, execute estes comandos para remover o diretório do banco de dados:
su - postgres psql -U postgres drop database raas_43cab1f4de604ab185b51d883c5c5d09
- Crie um banco de dados vazio e verifique o usuário:
create database raas_43cab1f4de604ab185b51d883c5c5d09 \du – should display users for postgres and salteapi
- Copie os arquivos /etc/raas/pki/.raas.key e /etc/raas/pki/.instance_id do servidor RaaS antigo para o novo Servidor RaaS.
- Execute os comandos de upgrade para o novo banco de dados Postgresql:
su – raas raas -l debug upgrade
Configurar o Master Plugin no novo Mestre Salt
- Faça login no mestre Salt e verifique se o diretório
/etc/salt/master.d
existe. Crie-o se ele não existir. - Gere as definições de configuração do mestre.
Cuidado: Se quiser preservar as configurações ao atualizar sua instalação, faça um backup do arquivo de configuração do Master Plugin existente antes de executar essa etapa. Em seguida, copie as configurações relevantes da sua configuração existente para o arquivo recém-gerado.
sudo sseapi-config --all > /etc/salt/master.d/raas.conf
Se a execução desse comando causar um erro, talvez ele esteja relacionado ao método usado durante a instalação inicial do Salt. Se você instalou o Salt por meio do instalador do Automation Config, sua instalação provavelmente inclui um pacote offline, chamado Salt Crystal, que requer instruções de upgrade especiais. Para obter mais informações, consulte a página de Solução de problemas.
- Edite o arquivo
raas.conf
gerado e atualize os valores da seguinte maneira para validar o certificado usado pela API (RaaS) e definir seu endereço IP.Valor Descrição sseapi_ssl_validate_cert
Valida o certificado usado pela API (RaaS). O padrão é
True
.Se estiver usando seus próprios certificados emitidos por uma CA, definir esse valor como
True
e defina as configuraçõessseapi_ssl_ca
,sseapi_ssl_cert
esseapi_ssl_cert:
.Caso contrário, defina como
False
para não validar o certificado.sseapi_ssl_validate_cert:False
sseapi_server
Endereço IP HTTP do seu nó RaaS, por exemplo,
http://example.com
, ouhttps://example.com
, se o SSL estiver ativado.sseapi_command_age_limit
Define a idade (em segundos) após a qual trabalhos antigos e potencialmente obsoletos são ignorados. Por exemplo, para ignorar trabalhos com mais de um dia, defina o valor como:
sseapi_command_age_limit:86400
Trabalhos ignorados continuam a existir no banco de dados e são exibidos com um status de
Completed
na interface de usuário do Automation Config.Alguns ambientes podem exigir que o mestre Salt fique offline por longos períodos e, quando ele voltar a ficar online, execute todos os trabalhos que foram enfileirados. Se isso se aplicar ao seu ambiente, defina o limite de idade como
0
.sseapi_windows_minion_deploy_delay
Define um atraso para permitir que todos os serviços do Windows necessários se tornem ativos. O valor predefinido é 180 segundos. sseapi_linux_minion_deploy_delay
Define um atraso para permitir a ativação de todos os serviços do Linux necessários. O valor predefinido é 90 segundos. sseapi_local_cache
Define o período de tempo em que determinados dados são armazenados em cache localmente em cada mestre salt. O valor padrão é 300 segundos (5 minutos). - OPCIONAL: Essa etapa é necessária apenas para instalações manuais. Para verificar se você pode se conectar ao SSL antes de conectar o Master Plugin, edite o arquivo
raas.conf
gerado para atualizar os seguintes valores. Se você não atualizar esses valores, o Master Plugin usará o certificado gerado padrão.Valor Descrição sseapi_ssl_ca
O caminho para um arquivo CA. sseapi_ssl_cert
O caminho para o certificado. O valor padrão é /etc/pki/raas/certs/localhost.crt
.sseapi_ssl_key
O caminho para a chave privada do certificado. O valor padrão é /etc/pki/raas/certs/localhost.key
.id
Assinale essa linha como comentário adicionando #
no início. Ela não é necessária. - OPCIONAL: Atualize as configurações relacionadas ao desempenho. Para ambientes grandes ou movimentados, você pode melhorar o desempenho das comunicações entre o mestre Salt e o Automation Config ajustando as seguintes configurações.
- Configure os mecanismos de
eventqueue
erpcqueue
:Esses mecanismos descarregam certas comunicações com o Automation Config em caminhos de código essenciais ao desempenho para processos dedicados. Enquanto os mecanismos estão esperando para se comunicar com o Automation Config, as payloads são armazenadas no sistema de arquivos local do mestre Salt para que os dados possam persistir entre as reinicializações do mestre Salt.
Para ativar os mecanismos, remova as marcas de comentário das seguintes configurações no arquivo de configuração do Salt Master Plugin (
raas.conf
):engines: - sseapi: {} - eventqueue: {} - rpcqueue: {} - jobcompletion: {} - keyauth: {}
Para configurar o mecanismo
eventqueue
, remova as marcas de comentário e atualize as seguintes configurações:sseapi_event_queue: name: sseapi-events strategy: always push_interval: 5 batch_limit: 2000 age_limit: 86400 size_limit: 35000000 vacuum_interval: 86400 vacuum_limit: 350000 forward: []
Os parâmetros da fila podem ser ajustados levando em consideração como eles funcionam juntos. Por exemplo, assumindo uma média de 400 eventos por segundo no barramento de eventos Salt, as configurações mostradas acima permitem a coleta de cerca de 24 horas de tráfego de eventos em fila no mestre Salt antes que os eventos mais antigos sejam descartados devido a limites de tamanho ou idade.
Para configurar o mecanismo
rpcqueue
, remova as marcas de comentário e atualize as seguintes configurações:sseapi_rpc_queue: name: sseapi-rpc strategy: always push_interval: 5 batch_limit: 500 age_limit: 3600 size_limit: 360000 vacuum_interval: 86400 vacuum_limit: 100000
- Ativar cache de carregamento:
sseapi_local_cache: load:3600
Observação: Se o mecanismorpcqueue
estiver ativado, o cache de carregamento também deverá ser ativado para que o mestre Salt manipule os trabalhos corretamente. - Limitar tamanhos de payload de grãos de subordinados:
sseapi_max_minion_grains_payload:2000
- Ative a opção para ignorar trabalhos anteriores a um horário definido (em segundos). Por exemplo, use
86400
para configurá-lo de forma a ignorar trabalhos com mais de um dia. Quando definido como0
, esse recurso será desativado:sseapi_command_age_limit:0
Observação:Isso é útil durante um upgrade, para evitar que comandos antigos armazenados no banco de dados sejam executados inesperadamente.
Juntos, o enfileiramento de eventos no Salt e os mecanismos de enfileiramento, o cache de carregamento, o limite de tamanho da payload de grãos e o limite de idade de comandos no Salt Master Plugin aumentam o rendimento e reduzem a latência das comunicações entre o mestre Salt e o Automation Config nos caminhos de código mais sensíveis ao desempenho.
- Configure os mecanismos de
- Reinicie o serviço do mestre.
sudo systemctl restart salt-master
- OPCIONAL: Talvez você queira executar um trabalho de teste para garantir que o Master Plugin está agora permitindo a comunicação entre o mestre e o nó RaaS.
salt -v '*' test.ping
Configurar o agente subordinado
- Entre via SSH no nó rhel9-master e navegue até o diretório /etc/salt/minion.d.
- Edite o arquivo minion.conf e altere a configuração mestre para
master:localhost
. - Navegue até o diretório /etc/salt/pki/minion e exclua o arquivo minion_master.pub.
- Reinicie o serviço salt-minion usando o
systemctl restart salt-minion
- Visualize e aceite a chave de subordinado no rhel9-master executando:
salt-key salt-key -A
- No Automation Config, navegue até e aceite a Chave Mestre.
O Mestre RHEL8/9 agora deve aparecer na página Destinos.
- Entre por SSH no Mestre RHEL7 e exclua a chave para o subordinado rhel9-master.
Migrar sistemas Salt-Minion
- Crie um arquivo de orquestração. Por exemplo:
# Orchestration to move Minions from one master to another # file: /srv/salt/switch_masters/init.sls {% import_yaml 'switch_masters/map.yaml' as mm %} {% set minions = mm['minionids'] %} {% if minions %} {% for minion in minions %} move_minions_{{ minion }}: salt.state: - tgt: {{ minion }} - sls: - switch_masters.move_minions_map {% endfor %} {% else %} no_minions: test.configurable_test_state: - name: No minions to move - result: True - changes: False - comment: No minions to move {% endif %} remove_minions: salt.runner: - name: manage.down - removekeys: True # map file for moving minions # file: /srv/salt/switch_masters/map.yaml newsaltmaster: <new_ip_address> oldsaltmaster: <old_ip_address> minionids: - minion01 - minion02 - minion03 state to switch minions from one master to another # file: /srv/salt/swith_masters/move_minions_map.sls {% set minion = salt['grains.get']('os') %} # name old master and set new master ip address {% import_yaml 'switch_masters/map.yaml' as mm %} {% set oldmaster = mm['oldsaltmaster'] %} {% set newmaster = mm['newsaltmaster'] %} # remove minion_master.pub key {% if minion == 'Windows' %} remove_master_key: file.absent: - name: c:\ProgramData\Salt Project\Salt\conf\pki\minion\minion_master.pub change_master_assignment: file.replace: - name: c:\ProgramData\Salt Project\Salt\conf\minion.d\minion.conf - pattern: 'master: {{oldmaster}}' - repl: 'master: {{newmaster}}' - require: - remove_master_key {% else %} remove_master_key: file.absent: - name: /etc/salt/pki/minion/minion_master.pub # modify minion config file change_master_assignment: file.replace: - name: /etc/salt/minion.d/minion.conf - pattern: 'master: {{oldmaster}}' - repl: 'master: {{newmaster}}' - require: - remove_master_key {% endif %} # restart salt-minion restart_salt_minion: service.running: - name: salt-minion - require: - change_master_assignment - watch: - change_master_assignment
- Crie um arquivo map.yaml que inclua (consulte o exemplo de código acima):
- <mestre salt antigo> endereço IP/FQDN
- <novo mestre salt> endereço IP/FQDN
- Lista de saltminionIDs a serem movidos.
- Crie um arquivo de estado (consulte o exemplo de código acima) para processar a migração . Por exemplo, move_minions_map.sls.
- Adicione esses arquivos a um diretório (por exemplo, /srv/salt/switch_mastersno Mestre Salt RHEL7.
- Execute o arquivo de orquestração no Mestre Salt RHEL7. Isso resulta em alguns erros quando o serviço de subordinado Salt é reiniciado e não volta a ficar online para o Mestre Salt RHEL7.
- Monitore o progresso no Automation Config. Aceite os IDs de subordinado Salt de migração conforme eles são preenchidos na UI.
- Depois que todos os sistemas tiverem migrado, execute um trabalho
test.ping
para verificar se tudo está se comunicando corretamente.
Migrar arquivos existentes
Esse processo depende completamente de como sua organização cria, armazena e gerencia seu arquivo de estado e configuração. Os casos de uso mais comuns são descritos abaixo como referência.
Caso de uso 1: servidor de arquivos do Automation Config
Nesse caso de uso, seus arquivos Automation Config são armazenados no banco de dados Postgres e aparecem na UI do Automation Config.
Durante a restauração do banco de dados Postgres, esses arquivos são recuperados e migrados. Não há etapas adicionais necessárias para migrar esses arquivos para o seu ambiente RHEL8/9.
Caso de uso 2: servidor de arquivos Github/Gitlab
Nesse caso de uso, seus arquivos de estado Automation Config e de configuração são armazenados no Github/Gitlab/Bitbucket ou em algum outro sistema de controle de versão de código.
Como esses arquivos são armazenados em uma ferramenta de terceiros, você precisa configurar seu novo Mestre RHEL8/9 para se conectar ao seu sistema de repositório. Essa configuração espelhará a configuração do repositório RHEL7 .
Caso de uso 3: raízes de arquivo locais do Mestre Salt
Nesse caso de uso, seu Automation Config é armazenado em um diretório do servidor de arquivos local no Mestre Salt.
- Os arquivos são armazenados em /srv/salt e /srv/pillar para arquivos de estado e de pilar, respectivamente.
- Execute uma cópia segura desses diretórios do seu Mestre RHEL7 para o seu Mestre RHEL8/9 usando uma ferramenta de cópia segura, como winscp ou a linha de comando.
- Atualizar data do pilar usando
Salt \* saltutil.refresh_pillar