作った。
prpl = parameters pull toolです。
使い方
go run github.com/aereal/prpl/cmd/prpl -path /app/staging env
こういう風に使う。 -path
はパラメータストアのパラメータパス。このパス以下のパラメータをすべて取得し、環境変数として設定、コマンドを実行する。
SecretStringもdecryptされて設定される。
injecuetと組み合わせるために作った。もちろんこれに限らずSSMパラメータストアと連携させてコマンドを実行するのにも使える。
ちなみに横着してバイナリの配布はしていない。自分の用途では go run
で問題ないので。気が向いたらバイナリ配布します。
環境変数の命名規則
READMEにも書いてあるけど、 -path
に指定した文字列を取り除いた残りを使う。英数字以外はすべてアンダースコアにして大文字になる。
なぜこうしているかというと、 /app/staging/creds/id
や /app/production/creds/id
のようにパスの先頭に環境などを含めているケースを想定しているため。
環境変数を参照するアプリは環境を意識せずに CREDS_ID
と参照し、prplを実行する際に -path
を切り替えて実行することを想定している。
ssmwrapとの違い
非常によく似たツールにssmwrapがあって、というかもともとssmwrapを使おうとしていたけれどバグがあり修正PRを送ったものの応答がなかったのと、上記のようなもっと合理的な命名規則を採用したく、では別のものを作ろうと思い立った。
ssmwrapと違いオプションは -debug
と -path
だけで、コマンドを実行する機能しかない。
正直、ssmwrapのオプションは -paths
とか -names
とか -prefix
とか -env
とかかなりややこしくて所望する結果を得るのにどういうオプションを渡したら良いのかかなりとっつきにくかったので、しょっちゅうオプションを変えるわけではないとはいえ、UNIX的世界観のツールらしくもっとsimpleかつeasyにしようという思いもあった。
また、ファイルへの書き出し機能は、おそらくECSやDockerのenvironmentFileのために追加されたのだろうけれど、これって env(1) で良いよなという思いもあり削りたかった。
いかがでしたか?
最近ちまちましたツール作りが捗っていて楽しい。どうぞご利用ください。