При установке Automation Config необходимо запустить процесс highstate оркестрации, который есть в установщике Automation Config. Процесс highstate выполняется на главном сервере Salt для настройки среды, содержащей несколько узлов. Он устанавливает базовую архитектуру Automation Config на трех других узлах, где будут размещены PostgreSQL, Redis и служба RaaS.

Внимание!: Развертывание Automation Config в контейнерах не поддерживается. Выполнять его не рекомендуется.

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

  • Узел главного сервера Salt
  • Узел базы данных PostgreSQL
  • Узел базы данных Redis
  • Узел RaaS, также называемый узлом Automation Config
Осторожно!:

Очень важно выполнить все шаги, описанные в разделе Установка Salt на узлах. В частности, необходимо установить зависимости, требуемые для установщика Automation Config, на всех четырех узлах, входящих в установку. В противном случае установка на нескольких узлах завершится сбоем.

К необходимым зависимостям относятся следующие.

  • OpenSSL
  • Дополнительные пакеты для Enterprise Linux (EPEL)
  • Шифрование Python
  • Библиотека OpenSSL Python

Высокая доступность

Можно настроить несколько главных серверов Salt или несколько узлов RaaS. Кроме того, можно запустить службу Salt Master на одном узле и объединить две или более других служб на отдельном узле. Процедура настройки архитектуры системы такого типа в данном руководстве описана не полностью.

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

Дополнительные сведения о высокой доступности см. в Обязательные зависимости Automation Config.

Запись основных данных о четырех узлах

Прежде чем приступать к стандартной установке, запишите основные данные о каждом из четырех узлов, участвующих в установке. Вы будете вводить их на разных этапах установки.

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

  • IP-адреса или DNS-имена
  • Идентификаторы служебных серверов

Четко укажите, к какому узлу (узел главного сервера Salt, узел RaaS, узел базы данных PostgreSQL, узел базы данных Redis) относится тот или иной IP-адрес и идентификатор служебного сервера.

Убедитесь в правильности IP-адресов и DNS-имен, так как применение неправильных IP-адресов и DNS-имен может привести к сбою установки с несколькими узлами.

Храните эти данные в легкодоступном месте для использования в будущем. В ходе настройки оркестрации эти данные нужно будет ввести в нескольких параметрах и переменных в файлах конфигурации. Поэтому эти данные рекомендуется держать под рукой на протяжении всего процесса установки.

Примечание:

При работе в виртуализированной среде укажите внутренний адрес, а не общедоступный.

Статические и динамические IP-адреса

Узлам Redis и PostgreSQL нужны статические IP-адреса или DNS-имена, на которые ссылаются файлы конфигурации. В зависимости от способа развертывания узла RaaS ему также может требоваться статический IP-адрес или DNS-имя. Применение динамических IP-адресов в конфигурациях может привести к изменениям в среде и нарушить ее функционирование.

Задание настраиваемого идентификатора служебного сервера (необязательно)

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

При настройке идентификаторов служебных серверов рекомендуется использовать для них краткие, но описательные значения, указывающие их роль. Например, в качестве имени для одного из веб-серверов можно использовать apache-server-1, а для указания его расположения в ЦОД — datacenter-3-rack-2. Основная задача заключается в том, чтобы имена были описательными и удобными для применения в будущем.

Чтобы объявить идентификатор служебного сервера, выполните следующие действия.

  1. В терминале служебного сервера перейдите в каталог, содержащий файл minion.conf служебного сервера. Расположение каталога по умолчанию — etc/salt/minion.d.
  2. Откройте файл minion.conf в редакторе. Измените значение параметра id на пользовательский идентификатор служебного сервера. Например:
    id: postgres-database-1
  3. После ввода идентификатора служебного сервера главный сервер Salt должен принять (или повторно принять) ключи служебного сервера. Процедуру настройки ключей см. в разделе Принятие ключей служебных серверов на главных серверах.

Копирование и редактирование top-файлов состояний

В рамках этой задачи, выполняемой во время установки, необходимо скопировать файлы оркестрации, предоставленные с установщиком Automation Config, на узел главного сервера Salt. Затем необходимо отредактировать файлы, чтобы создать ссылки на три узла для RaaS, базы данных Redis и базы данных PostgreSQL.

Чтобы скопировать и отредактировать файлы конфигурации оркестрации, выполните следующие действия.

  1. На главном сервере Salt перейдите в каталог sse-installer.
  2. Скопируйте файлы pillar и файлы состояний из каталога sse_installer в папки pillar_roots и file_roots главного сервера Salt с помощью следующих команд.
    sudo mkdir /srv/salt
    sudo cp -r salt/sse /srv/salt/
    sudo mkdir /srv/pillar
    sudo cp -r pillar/sse /srv/pillar/
    sudo cp -r pillar/top.sls /srv/pillar/
    sudo cp -r salt/top.sls /srv/salt/
    Важно!:

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

    • На главном сервере Salt используется структура каталогов, заданная по умолчанию. Если структура каталогов была изменена, возможно, процедуру потребуется изменить в соответствии с вашей структурой каталогов.
    • В корневой папке pillar или корневой папке состояния конфигурации еще нет папки с именем sse. Если такая папка существует, возможно, потребуется объединить эти папки вручную.
    • В каталоге pillar или salt еще нет файла с именем top.sls. Если такой файл существует, возможно, потребуется объединить его с существующим файлом вручную.
  3. В каталоге /srv/pillar/ теперь доступен файл с именем top.sls, который был скопирован из установочных файлов на предыдущем шаге. Откройте этот файл в редакторе.
  4. Отредактируйте файл, чтобы задать список идентификаторов служебных серверов (не IP-адресов и не имен DNS) для PostgreSQL, Redis, RaaS и главного сервера Salt. Используйте ранее записанные идентификаторы.

    Например:

    {# Pillar Top File #}
    
    {# Define SSE Servers #}
    
    {% load_yaml as sse_servers %}
      - postgres-database-1
      - redis-database-1
      - saltstack-enterprise-api-server-1
      - saltmaster-1
    {% endload %}
    
    base:
    
    {# Assign Pillar Data to SSE Servers #}
    {% for server in sse_servers %}
      '{{ server }}':
        - sse
    {% endfor %}
  5. Теперь в каталоге /srv/salt/ доступен файл с именем top.sls, который был скопирован на шаге 2. Откройте этот файл в редакторе и убедитесь, что его содержимое совпадает с приведенным ниже.
    base:
    
      {# Target SSE Servers, according to Pillar data #}
      # SSE PostgreSQL Server
      'I@sse_pg_server:{{ grains.id }}':
        - sse.eapi_database
    
      # SSE Redis Server
      'I@sse_redis_server:{{ grains.id }}':
        - sse.eapi_cache
    
      # SSE eAPI Servers
      'I@sse_eapi_servers:{{ grains.id }}':
        - sse.eapi_service
    
      # SSE Salt Masters
      'I@sse_salt_masters:{{ grains.id }}':
        - sse.eapi_plugin
    

Редактирование файла pillar с настройками Automation Config

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

Чтобы скопировать и отредактировать файл состояния с настройками Automation Config, выполните следующие действия.

  1. На главном сервере Salt перейдите в каталог /srv/pillar/sse/.
  2. Откройте файл sse_settings.yaml в редакторе. Раздел 1 этого файла содержит четыре переменные, каждая из которых соответствует одному узлу. Измените значения этих четырех переменных, указав идентификаторы служебных серверов (не IP-адреса и не имена DNS) для соответствующих узлов. Используйте ранее записанные идентификаторы служебных серверов.

    Например:

    # PostgreSQL Server (Single value)
    pg_server: postgres-database-1
    
    # Redis Server (Single value)
    redis_server: redis-database-1
    
    # SaltStack Enterprise Servers (List one or more)
    eapi_servers:
      - saltstack-enterprise-api-server-1
    
    # Salt Masters (List one or more)
    salt_masters:
      - saltmaster-1
    Примечание: Переменные pg_server и redis_server одноэлементные, так как в большинстве конфигураций сети есть только одна база данных Redis и PostgreSQL. Переменные для eapi_servers и salt-masters, напротив, имеют формат списка, так как узлов RaaS и главных серверов Salt может быть несколько.
  3. В разделе 2 файла отредактируйте переменные, указав конечную точку и порт узла PostgreSQL.
    • pg_endpoint: измените значение на IP-адрес или имя DNS сервера PostgreSQL (не его идентификатор служебного сервера). При работе в виртуализированной среде укажите внутренний адрес, а не общедоступный.
    • pg_port: здесь указан стандартный порт PostgreSQL, который при необходимости можно переопределить.
    • pg_username и pg_password: введите учетные данные пользователя, который будет использоваться API-интерфейсом (RaaS) для проверки подлинности в PostgreSQL. Этот пользователь создается при запуске процесса highstate оркестрации конфигурации.
    Примечание: Переменная задается как pg_endpoint, поскольку в некоторых установках может быть настроен отдельный сервер (или кластер) PostgreSQL, которым этот процесс установки не управляет. В таком случае не выполняйте это действие. Не применяйте процесс highstate к серверу PostgreSQL при выполнении процедуры «Применение процессов highstate к узлам» на последующем этапе.
  4. Повторите предыдущий шаг, чтобы отредактировать раздел 3 этого файла, изменив соответствующие переменные для указания конечной точки и порта узла Redis.
  5. В разделе 4 файла отредактируйте переменные, связанные с узлом RaaS.
    • Если это новая установка, не изменяйте для переменных eapi_username и eapi_password значения, заданные по умолчанию. Во время оркестрации конфигурации процесс установки настраивает базу данных с использованием этих учетных данных, заданных по умолчанию. Они нужны этому процессу для установки используемых по умолчанию целевых объектов и заданий в Automation Config путем подключения через службу eAPI. Пароль, заданный по умолчанию, потребуется изменить на более позднем этапе после установки.
    • Измените значение переменной eapi_endpoint на IP-адрес или имя DNS узла RaaS (не его идентификатор служебного сервера).
      Примечание: Переменная задается как eapi_endpoint, поскольку в некоторых установках за подсистемой балансировки нагрузки размещается несколько серверов eAPI.
    • Переменной eapi_ssl_enabled по умолчанию присвоено значение True. Если задано значение True, это значит, что протокол SSL включен. Настоятельно рекомендуем оставить этот параметр включенным. Установщик не требует проверять SSL, но такая проверка, скорее всего, будет одним из требований системы безопасности в средах с собственным Центром сертификации.
    • Переменной eapi_standalone по умолчанию присвоено значение False. Эта переменная указывает направление к состояниям конфигурации, если данные pillar используются в сценарии установки с одним узлом. В таком сценарии весь обмен данными по IP-протоколу будет направляться на петлевой адрес. В сценарии установки с несколькими узлами этой переменной необходимо задать значение False.
    • Переменной eapi_failover_master по умолчанию присвоено значение False. Эта переменная поддерживает развертывания, в которых главные (и служебные) серверы Salt работают в режиме аварийного переключения.
    • Переменная eapi_key определяет ключ шифрования, который используется в системе Automation Config для управления зашифрованными данными в базе данных PostgreSQL. Каждая установка должна иметь уникальный ключ. Доступно значение, заданное по умолчанию, но можно создать и пользовательский ключ. Для этого выполните следующую команду в отдельном терминале за пределами редактора.
      openssl rand -hex 32
  6. В разделе 5 файла отредактируйте переменные, добавив уникальные идентификаторы заказчиков.
    • Переменная customer_id служит уникальным идентификатором развертывания SaltStack. Она становится суффиксом имени схемы для базы данных raas_* (API-интерфейс (RaaS)) в PostgreSQL. Доступно значение, заданное по умолчанию, но можно создать и пользовательский ключ. Для этого выполните следующую команду в отдельном терминале за пределами редактора.
      cat /proc/sys/kernel/random/uuid
    • Переменная cluster_id задает идентификатор для набора главных серверов Salt, если он настроен в режиме с несколькими главными серверами (активными или для аварийного переключения). Этот идентификатор предотвращает многократное появление служебных серверов, которые отправляют данные на несколько главных серверов Salt, в отчетах в Automation Config.

Применение процессов highstate к узлам

  1. На главном сервере Salt синхронизируйте параметры grain, чтобы гарантировать, что этот сервер содержит данные grain, необходимые для каждого служебного сервера. Эта операция гарантирует корректное создание данных pillar, используемых функциями Automation Config.

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

    Указание всех служебных серверов

    sudo salt \* saltutil.refresh_grains

    Указание списка служебных серверов

    sudo salt -L 'salt-master-1,postgres-database-1,redis-database-1,saltstack-enterprise-api-server-1' saltutil.refresh_grains
  2. Выполните обновление и убедитесь, что каждый служебный сервер получил данные pillar, определенные в файле sse_settings.yaml, и что они выглядят так, как ожидалось.

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

    Указание всех служебных серверов

    sudo salt \* saltutil.refresh_pillar

    Указание списка служебных серверов

    sudo salt -L 'salt-master-1,postgres-database-1,redis-database-1,saltstack-enterprise-api-server-1' saltutil.refresh_pillar
  3. Убедитесь в правильности возвращаемых данных для хранилища pillar.
    sudo salt \* pillar.items

    Убедитесь, что отображаются данные pillar, относящиеся к Automation Config.

    Примечание:

    Можно также указать данные pillar для конкретного служебного сервера и убедиться, что эти данные были обновлены.

  4. Запустите команду, которая применяет процесс highstate оркестрации к серверу PostgreSQL. Используйте идентификатор служебного сервера, который вы записали ранее для сервера PostgreSQL.

    Например:

    sudo salt postgres-database-1 state.highstate
  5. Выполните предыдущий шаг для каждого из следующих серверов, заменяя идентификатор служебного сервера для каждого из них.
    • Узел Redis
    • Узел RaaS
    • Узел главного сервера Salt
    Примечание:

    Во время начального применения процесса highstate к главному серверу Salt может появиться следующее сообщение об ошибке: Authenticationerroroccurred. Это сообщение отображается, так как главный сервер Salt еще не проверил подлинность для узла RaaS. Состояние установки подключаемого модуля Master перезапустит службу Salt Master, и проблема будет решена автоматически.

В случае появления каких-либо других ошибок при запуске процессов highstate см. раздел Устранение неполадок.