vsh とは
HashiCorp Vault 内に格納されているシークレットをインタラクティブに操作できる Go製 の CLI です。
https://github.com/fishi0x01/vsh
シークレットパスをディレクトリのように扱うことが可能で補完機能も充実しており、2019年10月10日 (木) に最初のバージョン v0.1.0
がリリースされました。Vault KV v1, v2 をサポートしており Interactive mode
と Non-interactive mode
の2つのモードで実行が可能となっています。
インストール方法
バージョンは以下を参照ください。
https://github.com/fishi0x01/vsh/releases
macOS の場合
VERSION=v0.1.1
wget https://github.com/fishi0x01/vsh/releases/download/${VERSION}/vsh_darwin_amd64
mv vsh_darwin_amd64 /usr/local/bin/vsh
chmod a+x /usr/local/bin/vsh
Linux系OS の場合
VERSION=v0.1.1
wget https://github.com/fishi0x01/vsh/releases/download/${VERSION}/vsh_linux_amd64
chmod a+x vsh_linux_amd64
mv vsh_linux_amd64 /usr/local/bin/vsh
chmod a+x /usr/local/bin/vsh
サポートされているコマンド
v0.1.1
では以下のコマンドがサポートされています。
mv <from-path> <to-path>
cp <from-path> <to-path>
rm <dir-path or filel-path>
ls <dir-path // optional>
cd <dir-path>
cat <file-path>
手元で vsh を試したい方はこちら
Root Token を root
に設定して Vault を "Dev" Server Mode で起動します。
$ docker run -d --name vault -p 8200:8200 --cap-add=IPC_LOCK -e 'VAULT_DEV_ROOT_TOKEN_ID=root' vault:1.2.3
ba773aa8c7a2fbd6014c7969c310191a16f12394e81c614df2a5d160bb94644f
シークレットがないと操作感を体感できないと思うので、以下のコマンドでテストデータを追加します。
for env in dev stage prod; do
for i in {1..5}; do
docker exec \
-e 'VAULT_ADDR=http://localhost:8200' \
-e 'VAULT_TOKEN=root' vault \
/bin/vault kv put secret/${env}/service${i}/password password=${RANDOM}
done
done
vsh は v0.1.1
を使用します。
$ vsh -version
v0.1.1
VAULT_ADDR
と VAULT_TOKEN
を指定して vsh を実行すると Interactive mode
で起動するので、あとは手元で操作感を体感してみてください。
$ export VAULT_ADDR=http://localhost:8200
$ export VAULT_TOKEN=root
$ vsh
vsh を終了する際には exit
と入力してください。
$ vsh
http://localhost:8200 /> exit
以下で Non-interactive mode
での実行も可能です。
$ vsh -c 'cat secret/prod/service1/password'
password = 2768
destroyed = false
version = 1
created_time = 2019-10-15T14:49:59.9722335Z
deletion_time =
コンテナのお片付けも忘れずに。
$ docker rm -f vault
vault
まとめ
HashiCorp Vault をインタラクティブに操作する vsh の紹介でした。
実際に触ってみて便利だったのでこれから使っていこうと思います。