Секреты Vault в конвейере
Безопасно расшифровывайте их в CI, не допуская утечек
«Секреты Vault в конвейере» — бесплатный урок Ansible Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ansible Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ansible Academy содержит 4 уроков всего.
Проблема секрета в конвейере
Ваши зашифрованные файлы хранилища безопасно находятся в git, но исполнителю всё равно нужен пароль хранилища, чтобы расшифровать их во время выполнения. 🔐
Никогда не фиксируйте пароль
Единственное, что должно оставаться за пределами репозитория, — сам пароль хранилища. Хранение его в секретах CI не позволяет ему попасть в историю.
Храните его в секретах CI
Поместите пароль в секрет GitHub, например VAULT_PASSWORD, где он маскируется в журналах и передаётся только во время выполнения.
env:
VAULT_PASS: ${{ secrets.VAULT_PASSWORD }}Запишите временный файл пароля
На одном из шагов запишите секрет во временный файл пароля, который исполнитель сможет передать Ansible во время выполнения сценария.
- run: echo "$VAULT_PASS" > .vault_passРасшифруйте с помощью vault-password-file
Укажите этот файл в параметре --vault-password-file, чтобы Ansible расшифровал содержимое хранилища без запроса.
ansible-playbook site.yml \
--vault-password-file .vault_passИли используйте переменную окружения
Ansible также считывает ANSIBLE_VAULT_PASSWORD_FILE, поэтому можно задать её один раз вместо передачи параметра в каждой команде.
export ANSIBLE_VAULT_PASSWORD_FILE=.vault_passНе используйте --ask-vault-pass в CI
Интерактивный параметр --ask-vault-pass ожидает ответа человека и поэтому приостанавливает конвейер. Вместо этого всегда передавайте пароль из файла.
Всегда удаляйте временный файл
Удаляйте временный файл после завершения задания. Шаг always гарантирует очистку, даже если сценарий завершится ошибкой на полпути.
- if: always()
run: rm -f .vault_passМаскируйте, не выводите
CI автоматически маскирует зарегистрированные секреты в журналах, но никогда не выводите пароль с помощью echo, поскольку такой ручной вывод может обойти маскирование.
Задайте имена нескольким хранилищам
Если хранилищ несколько, присвойте каждому ID хранилища, чтобы секреты production и staging расшифровывались собственными паролями.
--vault-id prod@.prod_pass \
--vault-id stage@.stage_passСмените пароль без повторного развёртывания
Изменение секрета CI сразу меняет пароль для всего конвейера, и для этого не требуется менять код.
Быстрая проверка
Как конвейер должен передавать пароль хранилища?
Итоги: секреты остаются секретами
Вы безопасно расшифровывали хранилище в CI: сохраните пароль как секрет, передайте его через файл пароля, не используйте запросы и выполните очистку после работы. 🔒
Часто задаваемые вопросы
Урок «Секреты Vault в конвейере» бесплатный?
Да — полный текст урока «Секреты Vault в конвейере» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ansible Academy, подпишись на CoddyKit PRO. Курс Ansible Academy содержит 4 уроков всего.
Чему я научусь в уроке «Секреты Vault в конвейере»?
Безопасно расшифровывайте их в CI, не допуская утечек Ты практикуешь Ansible Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ansible Academy?
Предыдущий опыт не требуется. Ansible Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Секреты Vault в конвейере»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ansible Academy?
Да. Каждый урок Ansible Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- ansible-lint как контроль качества
- Запуск плейбуков в GitHub Actions
- Секреты Vault в конвейере
- Развёртывания с утверждением и режимом проверки