Настройка подключения к S3-совместимому хранилищу

Чтобы использовать S3-совместимое хранилище в качестве пространства для хранения общих файлов конфигураций и файлов состояний, выполните шаги:

  1. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/fileserver_backend.conf и в параметре fileserver_backend укажите имя хранилища, которое вы будете использовать в качестве бэкенда для файлов.

    Пример:

    fileserver_backend:
      - s3fs
  1. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/s3.conf и задайте в нем настройки подключения к S3-совместимому хранилищу.

    Пример:

    s3.service_url: <s3_hostname>:<s3_port>
    s3.keyid: <acceess_key>
    s3.key: <secret-key>
    s3.buckets:
      - salt-bucket
    s3.path_style: True
    s3.location: <region>

    Где:

    • s3.service_url — URL-адрес и порт для обращения к S3-совместимому хранилищу;

    • s3.keyid — ключ доступа, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

    • s3.key — секретный ключ, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

    • s3.buckets — имя бакета (например, salt-bucket) для хранения файлов состояния и формул;

    • s3.path_style — стиль представления пути к объектам в S3-совместимом хранилище;

    • s3.location — регион, в котором расположено S3-совместимое хранилище.

      Для хранилища Ceph параметр s3.location не учитывается. Если вы используете Сeph в качестве хранилища, укажите значение default.
      Подробное описание всех параметров приведено в официальной документации.
  2. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/ext_pillar.conf и задайте в нем настройки подключения к S3-совместимому хранилищу для хранения в отдельном бакете данных Pillar.

    Пример:

    ext_pillar:
      - s3:
          service_url: <s3_hostname>:<s3_port>
          keyid: <acceess_key>
          key: <secret_key>
          bucket: pillar-bucket
          multiple_env: False
          environment: base
          prefix: ''
          verify_ssl: False
          s3_cache_expire: 30
          s3_sync_on_update: True
          path_style: True
          https_enable: False

    Где:

    • service_url — URL-адрес и порт для обращения к S3-совместимому хранилищу;

    • keyid — ключ доступа, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

    • key — секретный ключ, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

    • bucket — имя бакета (например, pillar-bucket), которое будет использоваться для хранения данных Pillar;

    • multiple_env — параметр, который определяет, поддерживается ли использование нескольких окружений (environments) в хранилище Pillar;

    • environment — параметр, который указывает на основное окружение (base environment) для хранилища Pillar;

    • prefix — префикс для путей к данным в S3-хранилище; пустая строка означает отсутствие префикса;

    • verify_ssl — параметр, который указывает, следует ли проверять SSL-сертификаты при обращении к S3-хранилищу;

    • s3_cache_expire — время жизни кэша (в секундах) для данных, полученных из S3-хранилища;

    • s3_sync_on_update — параметр, который определяет, следует ли выполнять синхронизацию данных при обновлении данных Pillar;

    • path_style — стиль представления пути к объектам в S3-хранилище;

    • https_enable — параметр, который указывает, следует ли использовать HTTPS для обращения к S3-хранилищу.

      Подробное описание всех полей приведено в официальной документации.
  3. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/api_auth.conf и задайте в нем настройки аутентификации в модуле salt-api.

    Пример:

    external_auth:
      pam:
        salt_api:
           - ".*"
           - "@runner"
           - "@wheel"
           - "@jobs"

    Где:

    • external_auth — настройки параметров внешней аутентификации для заданных пользователей на выполнение определенных функций на агентах (minions);

      • pam —  для аутентификации используется PAM — стандартный механизм аутентификации в Unix-подобных системах:

        • salt_api — имя пользователя (данный пользователь должен быть добавлен в систему; для пользователя должен быть задан пароль), для которого применяются правила доступа, перечисленные ниже:

          • .* — разрешает доступ ко всем целям;

          • @runner — разрешает доступ к функциям runner — механизму в SaltStack, который позволяет выполнять задачи управления и получать информацию о состоянии системы;

          • @wheel — разрешает доступ к функциям wheel — механизму в SaltStack, который используется для управления и мониторинга систем в реальном времени;

          • @jobs — разрешает доступ к информации о заданиях (jobs), например, просмотр состояния и результатов выполнения заданий.

Настройка SSL

Если вы подключаетесь к S3-совместимому хранилищу, используя защищенное SSL-соединение, выполните настройки:

  1. В файле конфигурации сервера управления (master) /etc/salt/master.d/s3.conf задайте значения параметров:

    s3.https_enable: True
    s3.verify_ssl: False
    При выставлении значения False для параметра verify_ssl валидация сертификата S3-совместимого хранилища выполняться не будет.
  2. В файле конфигурации сервера управления (master) /etc/salt/master.d/ext_pillar.conf задайте значение параметра:

    ext_pillar:
     - s3:
        https_enable: True
        verify_ssl: False
    При выставлении значения False для параметра verify_ssl валидация сертификата S3-совместимого хранилища выполняться не будет.

Если требуется валидация сертификатов S3-совместимого хранилища, выполните следующие действия, выбрав один из двух вариантов, описанных ниже:

  • вариант 1:

    1. Скопируйте файл СА-сертификатов на сервер управления (master).

    2. Определите расположение хранилища сертификатов на сервере управления (master):

      $ /opt/saltstack/salt/bin/python3
      Python 3.10.13 (main, Oct  4 2023, 21:54:22) [GCC 11.2.0] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>> import certifi
      >>> certifi.where()
      '/opt/saltstack/salt/lib/python3.10/site-packages/certifi/cacert.pem'
    3. Добавьте сертификат в хранилище.

      Пример команды для добавления сертификата ca.crt:

      cat ca.crt | sudo tee -a /opt/saltstack/salt/lib/python3.10/site-packages/certifi/cacert.pem
    4. В файле конфигурации сервера управления (master) /etc/salt/master.d/s3.conf задайте значение параметра verify_ssl: True (аналогично параметру https_enable: True).

      Пример:

      s3.verify_ssl: True
      s3.https_enable: True
    5. В файле конфигурации сервера управления (master) /etc/salt/master.d/ext_pillar.conf задайте значение параметра verify_ssl: True (аналогично параметру https_enable: True) .

      Пример:

      ext_pillar:
      - s3:
          https_enable: True
          verify_ssl: True
  • вариант 2:

    1. Разместите файл СА-сертификатов, используемый в качестве Issuer в S3-совместимом хранилище, на сервере управления (master) по пути /etc/salt/pki/ca.crt.

    2. В файле конфигурации сервера управления (master) /etc/salt/master.d/s3.conf задайте значение параметра verify_ssl: /etc/salt/pki/ca.crt.

      Пример:

      s3.verify_ssl: /etc/salt/pki/ca.crt
      s3.https_enable: True
    3. В файле конфигурации сервера управления (master) /etc/salt/master.d/ext_pillar.conf задайте значение параметра verify_ssl: /etc/salt/pki/ca.crt.

      Пример:

      ext_pillar:
      - s3:
          https_enable: True
          verify_ssl: /etc/salt/pki/ca.crt