環境変数を age で暗号化し、Git に安全にコミットする仕組み。
age-keygen -o .age-key
# Public key: age1xxxx... ← この公開鍵をコピー.age-key は .gitignore 済み。ローカル復号に使う。
age 鍵の代わりに既存の SSH 鍵 (Ed25519/RSA) も使える。
# SSH 公開鍵から age 公開鍵を導出
age-keygen -y /path/to/ssh/id_ed25519
# age1xxxx...復号時は SOPS_AGE_KEY_FILE の代わりに ssh-agent が使われる。
.sops.yaml には導出した age 公開鍵を登録する (手順は同じ)。
_:
age-public-keys:
- &deploy age15uc7fh... # サーバー
- &your-name age1xxxx... # ← 追加
creation_rules:
- path_regex: bots/my-bot/*
age:
- *deploy
- *your-name # ← 復号できる人を列挙変更をコミット・プッシュしたら、既存の暗号化ファイルにリキーが必要 (後述)。
EDITOR="code --wait" sops bots/my-bot/sops.env # VS Code
EDITOR=nvim sops bots/my-bot/sops.env # Neovimエディタで復号された状態が開き、保存・終了すると自動で暗号化される。
新規ファイルなら KEY=VALUE 形式で書く。EDITOR を省略すると $EDITOR or vim が使われる。
run.sh で sops exec-env を使う:
#!/bin/bash
sops exec-env sops.env 'bun run index.ts'環境変数として復号された値がプロセスに渡される。ファイルに平文は残らない。
.sops.yaml を変更しただけでは既存ファイルには反映されない。updatekeys で反映する:
sops updatekeys bots/my-bot/sops.env変更された sops.env をコミットする。
sops bots/my-bot/sops.env # 作成 or 編集
sops -d bots/my-bot/sops.env # 復号して stdout に表示
sops exec-env bots/my-bot/sops.env 'echo ok' # 復号チェック (coding agent 向け)
sops updatekeys bots/my-bot/sops.env # .sops.yaml の変更を反映
age-keygen -y .age-key # 自分の公開鍵を表示