Управление топологией системы автоматизации операций#

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

Архитектурные особенности Automation Mesh и моделей соединений подробно рассмотрены в разделе Особенности архитектуры.

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

Топология на базе ВМ#

В среде виртуальных машин Automation Mesh формируется на основе описания инвентаря для утилиты aa-setup. В описании инвентаря указывают:

  • управляющие узлы;

  • исполняющие узлы;

  • промежуточные узлы (при необходимости);

  • параметры взаимодействия между ними.

После изменения описания инвентаря выполняют обновление сети Mesh и ее узлов путем запуска aa-setup.

Для добавления плоскости исполнения в топологию на базе ВМ выполните следующие шаги:

  1. Убедитесь, что исполняющие и промежуточные (при наличии) узлы подготовлены согласно требованиям.

  2. Обновите описание инвентаря.

    В зависимости от архитектуры и требований к отказоустойчивости могут использоваться следующие варианты:

  3. Запустите утилиту aa-setup для применения изменений.

Топология в кластере Kubernetes#

При использовании Kubernetes плоскость управления развертывается внутри кластера, что накладывает ограничения на установление входящих соединений. В этом случае узлы плоскости исполнения не устанавливают прямые входящие соединения к Automation Controller.

Добавление плоскости исполнения может выполняться двумя способами:

Добавление одиночных узлов#

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

  1. Убедитесь, что исполняющий узел подготовлен согласно требованиям.

  2. Перейдите в веб-интерфейс Astra Automation.

  3. На панели навигации выберите Автоматизация процессов ‣ Инфраструктура ‣ Узлы (Automation Execution ‣ Infrastructure ‣ Instances) и начните добавлять узел, нажав на кнопку Create instance.

  4. В окне Create instance настройте следующие поля:

    • Host name: IP-адрес исполняющего узла;

    • Listener port: 27199;

    • Instance type: Execution;

    • Options: выберите все опции: Enable instance, Managed by policy и Peers from control nodes.

  5. Нажмите кнопку Create Instance.

  6. В открывшемся окне нажмите кнопку Download bundle для выгрузки установочного пакета.

  7. Распакуйте этот пакет на установочный узел.

  8. Перейдите в распакованный каталог.

  9. Убедитесь, что в файле описания инвентаря inventory.yml правильно настроены следующие параметры (согласно настройкам в добавляемом узле):

    • ansible_host – IP-адрес исполняющего узла;

    • ansible_user – название учетной записи с административными привилегиями, например, admin;

    • ansible_ssh_private_key_file – путь к приватному ключу SSH для этой учетной записи, например, ~/.ssh/id_ed25519.

      Альтернативный способ передачи ключей SSH см. в следующем шаге.

  10. Если на предыдущем шаге значение параметра ansible_ssh_private_key_file не было задано, необходимо запустить агент SSH и добавить в него ключи доступа к узлам плоскости исполнения:

    eval $(ssh-agent -s)
    ssh-add <path_to_ansible_ssh_private_key_file>
    

    Утилита ansible-navigator использует запущенный агент SSH для аутентификации при подключении к исполняющим узлам.

  11. Выполните сценарий настройки узла:

    ansible-navigator run install_receptor.yml \
       -i inventory.yml \
       --eei hub.astra-automation.ru/aa-2.0/aa-full-ee:1.1.0-aa2.0-ansible2.15 \
       -m stdout
    

    По завершении выполнения сценария выводится строка вида:

    PLAY RECAP **********************************************************************************************
    remote-execution  : ok=71   changed=40   unreachable=0    failed=0    skipped=10   rescued=0    ignored=0
    
  12. В графическом интерфейсе платформы убедитесь, что состояние добавленного узла стало Ready.

Добавление группы узлов в плоскости исполнения#

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

  1. Убедитесь, что исполняющие и промежуточные узлы (при наличии) подготовлены согласно требованиям.

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

  3. Создайте токен доступа для пользователя admin:

    1. В веб-интерфейсе перейдите в Управление доступом ‣ Пользователи (Access Management ‣ Users).

    2. В списке пользователей выберите admin.

    3. Переключитесь на вкладку Токены (Tokens) и нажмите кнопку Создать токен (Create token).

    4. В поле Область (Scope) выберите Писать (Write).

    5. Нажмите внизу кнопку Создать токен (Create token). Сохраните токен в надежном месте, поскольку после закрытия окна он не будет более доступен.

  4. Подготовьте файл описания инвентаря, например inventory.yml, следующего вида:

    ---
    all:
      vars:
        ac_host: "https://aa.demo.example.com"
        ac_token: "6JShbAmkz9k5QyMKGX6ZUGTCjfZzJs"
        ansible_ssh_common_args: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
    
      children:
        hop_nodes:
          hosts:
            hop-node-01:
              ansible_host: 10.177.93.56
              ansible_user: admin
              ansible_ssh_private_key_file: keys/id_ed25519
        execution_nodes:
          hosts:
            exec-node-01:
              ansible_host: 10.177.93.13
              ansible_user: admin
              ansible_ssh_private_key_file: keys/id_ed25519
              hop_node_related: "hop-node-01"
              peers_from_control_nodes: false
    

    Файл содержит настройки общих переменных и настройки параметров доступа для промежуточных узлов (группа hop_nodes) и исполняющих узлов (группа execution_nodes). В файле необходимо задать следующие переменные в соответствии с параметрами добавляемых узлов:

    • ac_host: URL к шлюзу платформы.

    • ac_token: подготовленный токен для пользователя admin.

    • ansible_host: IP-адрес соответствующего узла.

    • ansible_user: название учетной записи с привилегиями администратора на соответствующем узле.

    • ansible_ssh_private_key_file: относительный путь к приватному ключу SSH для этой учетной записи.

      Альтернативный способ передачи ключей SSH см. в следующем шаге.

    • hop_node_related (требуется, если подключение идет через hop node): параметр подключения к узлу hop в виде значения inventory_hostname или receptor_address ID, если узел hop уже существует.

    • peers_from_control_nodes: true, если подключение будет напрямую к плоскости управления, или false, если через hop.

      Внимание

      Если одновременно заданы переменные hop_node_related и peers_from_control_nodes=true, то приоритет будет иметь peers_from_control_nodes. Это значит, что исполняющий узел будет подключен напрямую к контроллеру.

    Если требуется подключить создаваемые исполняющие узлы к промежуточному узлу, размещенному внутри кластера Kubernetes (Mesh Ingress), в переменной hop_node_related необходимо указать идентификатор receptor_address этого промежуточного узла.

    Идентификатор можно получить через API шлюза /api/controller/v2/receptor_addresses/. Как правило, идентификатор Mesh Ingress промежуточного узла имеет значение 2.

    В поле address соответствующей записи будет указано доменное имя Mesh Ingress, заданное в ранее примененном манифесте k8s-ac-demo-mesh-ingress.yaml (например, aa.demo.mesh.example.ru).

  5. Если на предыдущем шаге значение параметра ansible_ssh_private_key_file не было задано, необходимо запустить агент SSH и добавить в него ключи доступа к узлам плоскости исполнения:

    eval $(ssh-agent -s)
    ssh-add <path_to_ansible_ssh_private_key_file>
    

    Утилита ansible-navigator использует запущенный агент SSH для аутентификации при подключении к исполняющим и промежуточным узлам.

  6. Выполните сценарии настройки и подключения узлов:

    ansible-navigator run /usr/share/ansible/collections/ansible_collections/astra/receptor/playbooks/install_multiple_nodes.yml \
       -i inventory.yml \
       --eei hub.astra-automation.ru/aa-2.0/aa-full-ee:1.1.0-aa2.0-ansible2.15 \
       -m stdout
    

    По завершении выполнения сценария Ansible выводит типовую секцию PLAY RECAP.

  7. В графической интерфейсе платформы убедитесь, что появились новые узлы плоскости исполнения и их состояние Ready. Для этого на панели выберите следующие окна:

    • Автоматизация процессов ‣ Инфраструктура ‣ Узлы (Automation Execution ‣ Infrastructure ‣ Instances) для просмотра списка узлов, например:

      ../../_images/instance-list.png
    • Автоматизация процессов ‣ Инфраструктура ‣ Представление топологии (Automation Execution ‣ Infrastructure ‣ Topology View) для просмотра топологии, например:

      ../../_images/topology-view.png