Mova um serviço para outro host

AnsibleBeginner
Pratique Agora

Introdução

O Riverlight Weekend tem uma programação funcional e uma substituição preparada agora aprovada. Mova apenas a conexão da programação para o novo membro; preserve o local, a experiência atual dos visitantes e a origem anterior.

Conclua primeiro Conecte as páginas do evento ou domine grupos de inventário, hostvars, modelos, asserções uri somente de leitura e handlers. Este laboratório independente fornece o playbook e o modelo já ensinados. Não exige instalação de serviços nem migração dos dados de origem; a duração é uma estimativa do autor.

Mova a programação sem remover a origem anterior

Nesta etapa, você mudará um grupo do inventário para usar uma programação substituta preparada, preservando a conexão do local e a origem original.

O ambiente é independente. Event Site já serve uma programação Riverlight funcional, mas a substituição aprovada tem outras sessões. Abra Program: a programação antiga mostra Morning sketchbook e Lunch by the river. Visit e Visitor guide também funcionam e devem continuar disponíveis durante a mudança dos membros.

Mude para Controller, que começa em /home/labex/project. O connect.yml com verificações e o modelo do laboratório anterior são fornecidos; esta VM não depende dos arquivos anteriores. Se perder o diretório, volte com cd /home/labex/project. Leia a seleção aprovada e os membros atuais:

cat approved-services.txt
cat inventory.ini
ansible-inventory --graph

A programação aprovada está agora em web2, edição 2026-revised. O inventário ainda seleciona web1, que oferece a anterior. web2 também serve o local em outra porta: um host pode pertencer aos dois grupos, pois eles expressam papéis de serviço, sem exigir uma máquina distinta por papel. Os contêineres de origem compartilham o kernel da VM de prática; a entrada roda no controlador.

Examine os dados do host e as duas identidades. Como antes, curl --config lê de um arquivo a URL e as opções de erro preparadas:

cat host_vars/web2.yml
cat requests/new-program.conf
curl --config requests/new-program.conf
curl --config requests/old-program.conf

As duas origens funcionam. Porém, somente a edição nova deve estar conectada à entrada atual. Mover a conexão não autoriza excluir a origem anterior ou seus arquivos.

Leia a automação reutilizável fornecida:

cat connect.yml
cat templates/routes.json.j2

groups['program'][0] escolhe o membro da programação e hostvars fornece o endereço e program_port. A expressão do local usa independentemente seu grupo e venue_port. As asserções HTTP vêm antes do modelo. Uma mudança de rota notifica o auxiliar preparado, que faz o processo de entrada existente reler a configuração.

Substitua o pequeno inventário abaixo. Como no primeiro laboratório, use cat, redirecionamento e um here-document protegido por aspas. Cole o fechamento EOF em sua própria linha; se faltar, pressione Ctrl+C e repita o bloco completo. Deixe os dados dos hosts e as edições aprovadas intactos:

cat > inventory.ini <<'EOF'
[gateway]
entry ansible_connection=local ansible_python_interpreter=/usr/bin/python3

[program]
web2

[venue]
web2
EOF
ansible-inventory --graph

Os dois grupos devem conter web2. O entry local permanece em [gateway]. Corrija nomes de grupo incorretos ou membros extras nesse arquivo antes de continuar; não compense com endereços fixos no modelo.

Verifique a sintaxe e visualize as rotas propostas:

ansible-playbook connect.yml --syntax-check
ansible-playbook connect.yml --check --diff

As consultas HTTP de leitura executam durante a prévia e devem identificar a programação e o local aprovados. Apenas a rota da programação deve mudar. O endereço e a porta do local continuam iguais. A prévia não recarrega o gateway. Aplique a mudança:

ansible-playbook connect.yml

Espere a alteração do modelo e RUNNING HANDLER [Reload entry]. Abra Event Site, siga Program e confirme que Paper and ink, Acoustic afternoon e Shared supper substituem o horário antigo. Clique em Download the schedule e depois siga Visit e Visitor guide. O local e as orientações de chegada devem continuar os mesmos.

A entrada deve mostrar a programação substituta. Observe as três sessões e a edição 2026-revised abaixo do link de download:

Programação substituta conectada pela entrada existente

Volte a Controller. Salve o download atual na VM; -o define o arquivo de saída:

curl -fsS http://127.0.0.1:8081/program/schedule.csv -o schedule.csv
cat schedule.csv

O CSV deve listar as três sessões atuais, não as duas antigas. Confirme que a origem anterior continua respondendo diretamente:

curl --config requests/old-program.conf

Ela deve identificar program, riverlight, 2026-original. Saiu da configuração de entrada, sem ser desligada. Isso conserva dados e uma referência independente sem fingir que ela continua selecionada.

Repita finalmente o playbook:

ansible-playbook connect.yml

Espere changed=0, failed=0 e nenhum handler. Se uma origem ficar temporariamente indisponível, a verificação prévia deve parar antes do modelo; uma conexão falha não pede a remoção do nó anterior. Corrija o membro escolhido ou a referência aos dados e tente novamente. A comparação com sha256sum do primeiro laboratório permite confirmar que o arquivo de entrada não mudou.

Gerencie somente membros do inventário, os arquivos reutilizáveis connect.yml e templates/routes.json.j2 e as rotas por esse playbook. Preserve variáveis fornecidas, site e edições aprovados, conteúdo de origem, notas privadas, todos os serviços e o gateway. Consultas e modelos devem aceitar outros membros, endereços e portas. Use /opt/labex/service-links/reload.py com o diretório de entrada do projeto. Empregue as tarefas diretas uri, assert, template e um handler command limitado à recarga; não esconda falhas nem escreva durante o modo de verificação.

Resumo

Você mudou os membros do serviço em vez de embutir um endereço novo, visualizou a rota e aplicou a mudança. O site real e o CSV confirmaram a nova programação. A origem anterior continuou disponível diretamente e o local e o guia permaneceram intactos.