Настройка (пошагово)
Инициатор
# 1. Создаём ключ шифрования
git-crypt init
# 2. Добавляем .gitattributes
echo "*.tfstate filter=git-crypt diff=git-crypt" >> .gitattributes
echo "*.tfstate.backup filter=git-crypt diff=git-crypt" >> .gitattributes
# 3. Добавляем другие аккаунты github
git-crypt add-gpg-user colleague@email.com
# Коммит изменений
git add .gitattributes
git commit -m "Add git-crypt configuration"
git push
Коллега
# 1. Установить git-crypt
# Ubuntu/Debian: apt install git-crypt
# macOS: brew install git-crypt
# 2. Создать GPG ключ (если нет)
gpg --gen-key
# Использовать тот же email, что вы указали в add-gpg-user
# 3. Отправить вам публичный ключ
gpg --armor --export colleague@email.com > colleague-public-key.asc
# 4. Клонировать репозиторий
git clone <a href="https://github.com/your-repo.git">https://github.com/your-repo.git</a>
cd your-repo
# 5. Разблокировать шифрование
git-crypt unlock
Инициатор
# Импорт публичного ключа коллеги
gpg --import colleague-public-key.asc
# Добавление в git-crypt
git-crypt add-gpg-user colleague@email.com
git push
Альтернативное решение
# 1. Генерируете общий ключ
openssl rand -hex 32 > .encryption-key
# 2. Шифруете tfstate перед коммитом
encrypt_tfstate() {
openssl enc -aes-256-cbc -salt -in terraform.tfstate -out terraform.tfstate.enc -k $(cat .encryption-key)
rm terraform.tfstate
}
# 3. Расшифровываете после клонирования
decrypt_tfstate() {
openssl enc -d -aes-256-cbc -in terraform.tfstate.enc -out terraform.tfstate -k $(cat .encryption-key)
}