Введение
У Riverlight Weekend работает программа, и подготовленный новый источник уже одобрен. Перенесите только подключение программы на нового участника, сохранив площадку, текущий опыт посетителей и прежний источник.
Сначала завершите Подключите страницы мероприятия либо уверенно работайте с группами инвентаря, hostvars, шаблонами, проверками uri только для чтения и обработчиками. Независимая лабораторная предоставляет изученные playbook и шаблон. Установка сервисов или миграция исходных данных не требуется; длительность оценена автором.
Перенесите программу, сохранив прежний источник
На этом шаге вы измените группу инвентаря для использования подготовленной замены программы, сохранив подключение площадки и исходный источник.
Это независимая среда. Event Site уже предоставляет рабочую программу Riverlight, но одобренная замена содержит другие пункты. Откройте Program: старая программа показывает Morning sketchbook и Lunch by the river. Visit и Visitor guide тоже работают и должны оставаться доступными при смене участников.
Перейдите в Controller, начинающийся в /home/labex/project. Защищённый connect.yml и шаблон из предыдущей лабораторной предоставлены; эта VM не зависит от её файлов. Если потеряли каталог, вернитесь через cd /home/labex/project. Прочитайте одобренный выбор и текущих участников:
cat approved-services.txt
cat inventory.ini
ansible-inventory --graph
Одобренная программа теперь расположена на web2, редакция 2026-revised. Инвентарь ещё выбирает web1 со старой программой. web2 также предоставляет площадку на другом порту. Один узел может принадлежать двум группам: они выражают роли сервисов, не требуя отдельной машины для каждой. Два контейнера разделяют ядро учебной VM; входной сервис работает на контроллере.
Изучите данные узла и обе идентичности. Как и раньше, curl --config читает из файла подготовленный URL и параметры вывода ошибок:
cat host_vars/web2.yml
cat requests/new-program.conf
curl --config requests/new-program.conf
curl --config requests/old-program.conf
Оба источника доступны, но с текущим входным сервисом должна соединяться только новая редакция. Перенос подключения не разрешает удалять прежний источник или файлы.
Прочитайте предоставленную повторно используемую автоматизацию:
cat connect.yml
cat templates/routes.json.j2
groups['program'][0] выбирает участника программы, а hostvars даёт адрес и program_port. Выражение площадки независимо использует свою группу и venue_port. HTTP-проверки идут до шаблона. Изменение маршрута уведомляет подготовленный помощник, который перечитывает конфигурацию существующим входным процессом.
Замените небольшой инвентарь следующим содержимым. Как и в первой лабораторной, используются cat, перенаправление и here-document с одинарными кавычками. Вставьте закрывающий EOF на отдельной строке; при его пропуске нажмите Ctrl+C и повторите весь блок. Данные узлов и одобренные редакции не меняйте:
cat > inventory.ini <<'EOF'
[gateway]
entry ansible_connection=local ansible_python_interpreter=/usr/bin/python3
[program]
web2
[venue]
web2
EOF
ansible-inventory --graph
Теперь обе группы должны содержать web2. Локальный entry остаётся в [gateway]. До продолжения исправьте неверное имя группы или лишнего участника в этом файле. Не компенсируйте ошибку фиксированным адресом в шаблоне.
Проверьте синтаксис и просмотрите предлагаемые маршруты:
ansible-playbook connect.yml --syntax-check
ansible-playbook connect.yml --check --diff
HTTP-запросы только для чтения выполняются при просмотре и должны определить одобренные программу и площадку. Отличаться должен только маршрут программы. Адрес и порт площадки остаются прежними. Просмотр не перечитывает конфигурацию шлюза. Примените изменение:
ansible-playbook connect.yml
Ожидаются изменение шаблона и RUNNING HANDLER [Reload entry]. Откройте Event Site, перейдите в Program и убедитесь, что Paper and ink, Acoustic afternoon и Shared supper заменили прежнее расписание. Нажмите Download the schedule, затем откройте Visit и Visitor guide. Они должны по-прежнему показывать ту же площадку и указания по прибытию.
Входной сервис теперь должен показывать новую программу. Обратите внимание на три пункта и редакцию 2026-revised под ссылкой скачивания:

Вернитесь в Controller. Сохраните текущий файл в VM; -o задаёт выходной файл:
curl -fsS http://127.0.0.1:8081/program/schedule.csv -o schedule.csv
cat schedule.csv
CSV должен содержать три текущих пункта, а не старую программу из двух. Убедитесь, что старый источник по-прежнему отвечает напрямую:
curl --config requests/old-program.conf
Он должен идентифицироваться как program, riverlight, 2026-original. Его убрали из конфигурации входного сервиса, а не выключили. Так сохраняются данные и независимый справочный источник без ложного представления, что он всё ещё выбран.
Наконец повторите playbook:
ansible-playbook connect.yml
Ожидаются changed=0, failed=0 и отсутствие обработчика. Если источник временно недоступен, предварительная проверка должна остановиться до шаблона. Ошибка соединения не требует удаления прежнего узла. Исправьте выбранного участника или ссылку на данные и повторите. Сравнение sha256sum из первой лабораторной позволяет подтвердить неизменность входного файла.
Управляйте только участниками инвентаря, повторно используемыми connect.yml и templates/routes.json.j2, а также маршрутом через этот playbook. Сохраните предоставленные переменные, одобренные сайт и редакции, данные источников, приватные заметки, все сервисы и реализацию шлюза. Запросы и шаблоны должны работать с другими именами участников, адресами и портами. Используйте /opt/labex/service-links/reload.py с каталогом входного сервиса проекта. Применяйте изученные прямые задачи uri, assert, template и ограниченный обработчик command для перечитывания. Не скрывайте ошибки запросов и не записывайте изменения в режиме проверки.
Резюме
Вы изменили участников сервиса вместо закрепления нового адреса, просмотрели маршрут, применили изменение и подтвердили новую программу настоящим сайтом и CSV. Старый источник остался доступен напрямую, а площадка и памятка не изменились.



