Действия перед обновлением#

На этой стадии происходит сохранение данных платформы, которые не могут быть перенесены на новую версию Astra Automation автоматически. Позже эти данные потребуется восстановить на обновленной платформе.

../../../_images/infra-prep-green.svg ../../../_images/copy-green.svg ../../../_images/pre-upgrade-blue.svg ../../../_images/upgrade-white.svg ../../../_images/post-upgrade-white.svg ../../../_images/verification-white.svg

Перед запуском процесса обновления Astra Automation до версии 2.0 необходимо выполнить ряд подготовительных шагов:

Эти шаги обеспечивают совместимость компонентов, предотвращают потерю данных и гарантируют корректное восстановление сервисов после миграции.

Подготовка PostgreSQL#

Astra Automation версии 2.0 поддерживает только PostgreSQL 15. Если текущая версия платформы использует PostgreSQL версии ниже указанной, перед началом обновления ее необходимо обновить.

  • Для встроенной СУБД утилита aa-setup выполнит обновление автоматически.

  • Для внешней СУБД необходимо выполнить обновление вручную, согласно инструкции PostgreSQL.

Для проверки текущей версии СУБД выполните команду:

psql -U <pg_user> -h <pg_host> -p <pg_port> -d awx -c "SELECT version();"

Здесь:

  • <pg_user> – название учетной записи администратора СУБД.

  • <pg_host> – IP-адрес или FQDN СУБД;

  • <pg_port> – порт для подключения к СУБД.

Подготовка Event-Driven Automation#

База данных контроллера Event-Driven Automation версии платформы 1.2 не совместима с версией 2.0. Необходимо сохранить конфигурацию, удалить старую базу данных и создать новую.

Сохранение конфигурации#

Перед удалением базы данных необходимо сохранить текущие объекты Event-Driven Automation: своды правил, их активации и источники событий. Эти данные не будут перенесены автоматически и потребуют ручного восстановления после обновления.

  1. Создайте каталог для хранения резервных данных:

    mkdir -p /tmp/eda_backup/
    
  2. Сохраните своды правил:

    curl -sk -u admin:<password> https://eda.example.com/api/eda/v1/rulebooks/ > /tmp/eda_backup/rulebooks.json
    
  3. Сохраните активации сводов правил:

    curl -sk -u admin:<password> https://eda.example.com/api/eda/v1/activations/ > /tmp/eda_backup/activations.json
    
  4. Сохраните источники событий:

    curl -sk -u admin:<password> https://eda.example.com/api/eda/v1/event-streams/ > /tmp/eda_backup/event_sources.json
    

Остановка активаций и удаление БД#

Старая база данных должна быть удалена, для этого выполните следующие шаги:

  1. Остановите все активации сводов правил:

    • Через графический интерфейс:

      1. Перейдите в графический интерфейс Event-Driven Automation.

      2. Выберите на панели навигации Активации сводов правил (Rulebook Activations).

      3. В строке каждой активации переведите переключатель активности свода правил в положение Выключено.

    • Через API:

      Остановите все активации сводов правил, используя следующий цикл:

      curl -sk -u admin:<password> https://eda.example.com/api/eda/v1/activations/ | \
        jq -r '.results[].id' | while read id; do
          curl -sk -u admin:<password> -X POST \
            https://eda.example.com/api/eda/v1/activations/$id/disable/
        done
      
  2. На узле с развёрнутой БД выполните следующие команды для удаления БД:

    sudo su postgres
    psql -p <automationedacontroller_pg_port>
    DROP DATABASE <automationedacontroller_pg_database>;
    \q
    

    Здесь:

    • <automationedacontroller_pg_port> – порт для подключения к СУБД;

    • <automationedacontroller_pg_database> – название БД.

  3. Только для топологии уровня предприятия с внешней СУБД создайте пустую БД для Event-Driven Automation после ее удаления:

    CREATE DATABASE <automationedacontroller_pg_database> WITH OWNER <automationedacontroller_pg_username>;
    

    Здесь:

    • <automationedacontroller_pg_database> – название новой БД;

    • <automationedacontroller_pg_username> – название учетной записи администратора СУБД.

Подготовка нового узла#

Для подготовки нового узла СУБД скопируйте файл /etc/astra_automation.version c существующего узла Event-Driven Automation на новый в каталог /etc/:

scp /etc/astra_automation.version <user>@<host>:/etc/

где:

  • <user> – название учетной записи пользователя целевого узла Event-Driven Automation;

  • <host> – FQDN или IP-адрес целевого узла Event-Driven Automation.

Экспорт ролевых привязок (RBAC)#

Перед миграцией необходимо экспортировать следующие настройки из текущей платформы:

  • назначения ролей, их определения и контекст;

  • составы команд.

Это требуется для восстановления данных вручную после миграции.

Экспорт ролей#

Для экспорта ролей, их определения и контекста выполните следующие шаги:

  1. Создайте каталог для хранения резервных данных:

    mkdir -p /tmp/rbac_backup/
    
  2. Сохраните назначения ролей:

    curl -sk -u admin:<password> https://controller/api/v2/role_user_assignments/ > /tmp/rbac_backup/role_user_assignments.json
    
    curl -sk -u admin:<password> https://controller/api/v2/role_team_assignments/ > /tmp/rbac_backup/role_team_assignments.json
    
  3. Сохраните определения ролей:

    curl -sk -u admin:<password> https://controller/api/v2/role_definitions/ > /tmp/rbac_backup/role_definitions.json
    
  4. Сохраните контекст:

    curl -sk -u admin:<password> https://controller/api/v2/organizations/ > /tmp/rbac_backup/organizations.json
    
    curl -sk -u admin:<password> https://controller/api/v2/teams/ > /tmp/rbac_backup/teams.json
    
    curl -sk -u admin:<password> https://controller/api/v2/users/ > /tmp/rbac_backup/users.json
    

Экспорт состава команд пользователей#

При миграции команды создаются пустыми, члены команд и роли команд не мигрируют. Для их экспорта выполните следующие шаги:

  1. Установите утилиту jq:

    sudo apt install jq
    
  2. Получите список всех команд:

    curl -sk -u admin:<password> https://controller.example.com/api/v2/teams/ | \
      jq -r '.results[] | .id' > /tmp/team_ids.txt
    
  3. Экспортируйте членов каждой команды:

    while read team_id; do
      echo "Экспорт Team ID: $team_id"
    
      # Информация о команде
      curl -sk -u admin:<password> \
        "https://controller.example.com/api/v2/teams/$team_id/" \
        > "/tmp/rbac_backup/team_${team_id}_info.json"
    
      # Члены команды
      curl -sk -u admin:<password> \
        "https://controller.example.com/api/v2/teams/$team_id/users/" \
        > "/tmp/rbac_backup/team_${team_id}_users.json"
    
      # Роли команды
      curl -sk -u admin:<password> \
        "https://controller.example.com/api/v2/teams/$team_id/roles/" \
        > "/tmp/rbac_backup/team_${team_id}_roles.json"
    done < /tmp/team_ids.txt
    

Проверка#

Проверьте экспортированные данные с помощью следующих команд:

echo "=== Статистика RBAC ==="
echo "Назначения пользователям: $(jq '.count' /tmp/rbac_backup/role_user_assignments.json)"
echo "Назначения командам: $(jq '.count' /tmp/rbac_backup/role_team_assignments.json)"
echo "Команд: $(jq '.count' /tmp/rbac_backup/teams.json)"

echo -e "\n=== Экспорт команд ==="
ls -1 /tmp/rbac_backup/team_*_users.json | wc -l
echo "команд экспортировано"

Актуализация инвентаря#

Перед запуском обновления убедитесь, что файл инвентаря содержит актуальные сведения об узлах и параметрах подключения. Примеры файлов инвентаря для различных топологий представлены в описании топологий.