Tips
sops連携 2025.9.6
sopsで暗号化された.envを読み込める機能があるが、秘密鍵の環境変数をmise.tomlで設定すると参照してくれない。まぁMISE_*環境変数をmiseの中で設定することは想定外だと思う。
[env]
MISE_SOPS_AGE_KEY = "AGE-SECRET-KEY-1FSGNZP7QPCP3MAUTPFJSKZWV2U53CEL9ELGHX3737S7GJ6H0CZRQY2WDEV"
_.file = ".env.sops.yaml"settingsに書こうと思うとテンプレートを展開してくれない。まぁこれもわかる。
[settings]
sops.age_key = "{{env.SOPS_AGE_KEY}}"sops.rops = falseに設定しても無理だった。miseが復号のためにsopsを実行するとき、mise.tomlの環境変数を反映していないようだ。
mise設定で秘密鍵の取得処理を書いて、それをmise自身で利用したかったが出来ない。
- miseが内部でsops/ropsを実行するとき、mise.tomlの環境変数を反映する。
_.file_ = { path = ".env.sops.yaml", age_key = "{{env.SOME_AGE_KEY}}" }のように復号に指定する秘密鍵を指定できるようにする。
Encrypting only parts of a fileで部分的に暗号化したファイルをropsが扱えないので、settings.rops = falseに設定しておかないと読み込みに失敗する。
dotenv
settings.env_fileはdotenvyで読み込むので.env以外のフォーマットに対応しない。また、ファイルは1つしか設定できない。より柔軟に読み込むファイルを設定したい。
[env]
_.file = [
{ path = "{{cwd}}/.env.yaml" },
{ path = "{{cwd}}/.env.local.yaml" },
]この記述でカレントディレクトリの.env.yamlの後に.env.local.yamlを読み込む設定になる。sopsで暗号化したファイルも復号してくれる。トップレベルの設定に一度だけ書いておけば、全てのサブディレクトリで有効になるので管理が楽になる。
要望
- dotenvxのsecretをサポートする。秘密管理がより広範なツールに対応する。
- 部分的に暗号化したsopsファイルを読み込むとき、暗号化されている環境変数だけredactしたい