Подготовка Inventory
Начиная с версии 26.1.0, все настройки инсталлятора выполняются только через файл ответов.
Генератор Inventory динамически создает и заполняет все файлы /shepherd/inventories/<ИМЯ_INVENTORY>/group_vars/*/local.yaml.
Изменение сгенерированного Inventory вручную допускается только для указания:
- kubeconfig,
- SSH-ключа,
- TLS-сертификатов.
Генерация Inventory выполняется после заполнения файла ответов (подробнее — в разделе Подготовка файла ответов).
Чтобы сгенерировать Inventory:
-
Запустите контейнер Shepherd с использованием bind-монтирования, чтобы передать файл ответов и сохранить сгенерированный Inventory за пределами файловой системы контейнера.
Пример команды:
$ docker run --rm -it -v $PWD/env:/shepherd/.env -v $PWD/<ИМЯ_INVENTORY>:/shepherd/inventories/<ИМЯ_INVENTORY> shepherd:26.1.0 bash -
Запустите плейбук инициализации 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.
Он находится в той же директории, что и файл ответов.
Если секрет утерян или скомпрометирован, обновите его:
-
Найдите соответствующую переменную в одном из файлов
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 -
Удалите переменную.
-
Повторно запустите команду генерации и шифрования секретов.
Обновится только удаленный секрет, все остальные останутся прежними.
Укажите kubeconfig для доступа к кластеру.
-
Добавьте валидный kubeconfig в файл
kubeconfig.secret:$ vi inventories/<ИМЯ_INVENTORY>/group_vars/kubeconfig.secret -
Зашифруйте
kubeconfig.secret, выполнив команду внутри контейнера Shepherd:$ ansible-vault encrypt inventories/<ИМЯ_INVENTORY>/group_vars/kubeconfig.secret \--vault-password-file /shepherd/.env/<ФАЙЛ_С_ПАРОЛЕМ_ДЛЯ_VAULT>
Укажите приватный SSH-ключ для подключения к виртуальной машине Praefect и кластеру Gitaly.
-
Добавьте действующий закрытый SSH-ключ в файл
ssh_private_key_devops_common.secret:$ vi inventories/<ИМЯ_INVENTORY>/group_vars/ssh_private_key_devops_common.secret -
Зашифруйте
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>
В зависимости от заданных в файле ответов параметров сертификатов (подробнее — в разделе Параметры сертификатов) настройте переменные:
-
Если 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 генерируются динамически.
Если вы используете отдельные сертификаты только на один домен без дополнительных 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: |RAWCERTIFICATECONTENTsamsara_certificate_key: # <-- Вставьте зашифрованное значение ключа сертификата хранилищаsamsara_custom_cas:rootCA.crt: |RAWCA certificates chainCONTENT