VK Dev Platform logo
Помощь
Обновлена 17 июля 2026 г. в 15:36

Подготовка Inventory

Начиная с версии 26.1.0, все настройки инсталлятора выполняются только через файл ответов.

Генератор Inventory динамически создает и заполняет все файлы /shepherd/inventories/<ИМЯ_INVENTORY>/group_vars/*/local.yaml.

Изменение сгенерированного Inventory вручную допускается только для указания:

  • kubeconfig,
  • SSH-ключа,
  • TLS-сертификатов.

Генерация Inventory

Генерация Inventory выполняется после заполнения файла ответов (подробнее — в разделе Подготовка файла ответов).

Чтобы сгенерировать Inventory:

  1. Запустите контейнер Shepherd с использованием bind-монтирования, чтобы передать файл ответов и сохранить сгенерированный Inventory за пределами файловой системы контейнера.

    Пример команды:

    $ docker run --rm -it -v $PWD/env:/shepherd/.env -v $PWD/<ИМЯ_INVENTORY>:/shepherd/inventories/<ИМЯ_INVENTORY> shepherd:26.2.0 bash
  2. Запустите плейбук инициализации Inventory с указанием файла ответов внутри контейнера Shepherd:

    $ ansible-playbook playbooks/preparation/init-inventory.yaml -e answers_file=.env/answers_file.yaml

Новый Inventory будет сгенерирован по пути /shepherd/inventories/<ИМЯ_INVENTORY> внутри контейнера Shepherd. После завершения генерации отобразится сообщение с результатами и описанием следующих шагов.

Генерация и шифрование секретов

Запустите плейбук генерации и шифрования секретов внутри контейнера Shepherd:

$ ansible-playbook playbooks/preparation/gen-and-enc-secrets.yaml \     --vault-password-file /shepherd/.env/<ФАЙЛ_С_ПАРОЛЕМ_ДЛЯ_VAULT> \     -e inventory=/shepherd/inventories/<ИМЯ_INVENTORY> \     -e vault_password_file=/shepherd/.env/<ФАЙЛ_С_ПАРОЛЕМ_ДЛЯ_VAULT>

Здесь /shepherd/.env/<ФАЙЛ_С_ПАРОЛЕМ_ДЛЯ_VAULT> — путь до сгенерированного файла с паролем для Ansible Vault. Он находится в той же директории, что и файл ответов.

Если секрет утерян или скомпрометирован, обновите его:

  1. Найдите соответствующую переменную в одном из файлов secrets.yaml:

    $ find inventories/<ИМЯ_INVENTORY> -name secrets.yaml

    Пример вывода:

    inventories/<ИМЯ_INVENTORY>/group_vars/nexus/secrets.yamlinventories/<ИМЯ_INVENTORY>/group_vars/sonarqube/secrets.yamlinventories/<ИМЯ_INVENTORY>/group_vars/keycloak/secrets.yamlinventories/<ИМЯ_INVENTORY>/group_vars/samsara/secrets.yamlinventories/<ИМЯ_INVENTORY>/group_vars/gitlab/secrets.yamlinventories/<ИМЯ_INVENTORY>/group_vars/all/secrets.yamlinventories/<ИМЯ_INVENTORY>/group_vars/pgadmin/secrets.yaml
  2. Удалите переменную.

  3. Повторно запустите команду генерации и шифрования секретов.

Обновится только удаленный секрет, все остальные останутся прежними.

Настройка kubeconfig

Укажите kubeconfig для доступа к кластеру.

  1. Добавьте валидный kubeconfig в файл kubeconfig.secret:

    $ vi inventories/<ИМЯ_INVENTORY>/group_vars/kubeconfig.secret
  2. Зашифруйте kubeconfig.secret, выполнив команду внутри контейнера Shepherd:

    $ ansible-vault encrypt inventories/<ИМЯ_INVENTORY>/group_vars/kubeconfig.secret \     --vault-password-file /shepherd/.env/<ФАЙЛ_С_ПАРОЛЕМ_ДЛЯ_VAULT>

Добавление приватного SSH-ключа

Укажите приватный SSH-ключ для подключения к виртуальной машине Praefect и кластеру Gitaly.

  1. Добавьте действующий закрытый SSH-ключ в файл ssh_private_key_devops_common.secret:

    $ vi inventories/<ИМЯ_INVENTORY>/group_vars/ssh_private_key_devops_common.secret
  2. Зашифруйте ssh_private_key_devops_common.secret, выполнив команду внутри контейнера Shepherd:

    $ ansible-vault encrypt inventories/<ИМЯ_INVENTORY>/group_vars/ssh_private_key_devops_common.secret \     --vault-password-file /shepherd/.env/<ФАЙЛ_С_ПАРОЛЕМ_ДЛЯ_VAULT>

Добавление TLS-сертификата

В зависимости от заданных в файле ответов параметров сертификатов (подробнее — в разделе Параметры сертификатов) настройте переменные:

  • Если cert-manager не используется, добавьте TLS-сертификат и приватный ключ.

    В файле shepherd/inventories/<ИМЯ_INVENTORY>/group_vars/all/certs.yaml укажите в переменных:

    • all_certificate_crt — wildcard TLS-сертификат или сертификат, выпущенный для основного домена и дополнительных доменов в поле SAN.
    • all_certificate_key — приватный ключ, зашифрованный через Ansible Vault.
  • Если сертификат выдан не доверенным CA, добавьте цепочки доверенных сертификатов.

    В файле shepherd/inventories/<ИМЯ_INVENTORY>/group_vars/all/certs.yaml укажите в переменной all_custom_cas_crt цепочку сертификатов: корневой и промежуточный CA.

Рекомендуется указывать настройки сертификатов в файле /shepherd/inventories/<ИМЯ_INVENTORY>/group_vars/all/certs.yaml, так как все файлы /shepherd/inventories/<ИМЯ_INVENTORY>/group_vars/*/local.yaml генерируются динамически.

Добавление отдельных TLS-сертификатов

Если вы используете отдельные сертификаты только на один домен без дополнительных SAN-записей, настройте сертификаты для каждого сервиса в файлах certs.yaml в соответствующих group_vars.

Чтобы получить список необходимых group_vars и переменных для настроек, выполните:

$ grep -r "_certificate_crt\|_certificate_key" roles/*/README.md |grep -v "common"

Если конечные сертификаты подписаны разными корневыми CA, для каждого сертификата укажите цепочку сертификатов в соответствующих переменных.

Чтобы получить список переменных, выполните:

$ grep -r "_custom_cas " roles/*/README.md |grep -v "common"

Пример для сервиса samsara:

Создайте файл /shepherd/inventories/<ИМЯ_INVENTORY>/group_vars/samsara/certs.yaml и добавьте информацию в него:

samsara_certificate_crt: |  RAW  CERTIFICATE  CONTENT samsara_certificate_key: # <-- Вставьте зашифрованное значение ключа сертификата хранилища samsara_custom_cas:  rootCA.crt: |    RAW    CA certificates chain    CONTENT