他人に共有したくない設定をVagrantfileに書くためのpluginつくった
(追記)dotenvというもっと便利なツールがありました.僕のは,pluginを作る際の参考にしてください.dotenvとvagrantの連携は,glidenoteさんの“dotenvを利用して環境ごとでVagrantfileの設定値を変更してみる”を参考にしてください.
例えば,VagrantでDigital Oceanを使う場合,以下のようにclient_id
やapi_key
のような他人には共有したくない設定をVagrantfileに記述する.
Vagrant.configure('2') do |config|
config.vm.provider :digital_ocean do |provider, override|
provider.client_id = '****'
provider.api_key = '****'
end
end
ローカルで自分だけが使う場合は問題ないが,Githubに上げて他人に共有した場合は面倒になる.vagrant-secretを使えば,専用のyamlファイルに設定を分けて記述することができる.
インストール
Vagrantのpluginとしてインストールする.
$ vagrant plugin install vagrant-secret
使い方
まず,以下のコマンドで設定ファイルを書き出す.
$ vagrant secret-init
すると,.vagrant/secret.yaml
が生成されるので,そこに公開したくない設定を記述する.例えば,以下のようにDigital Oceanで必要なclient_id
とapi_key
を記述する.
client_id: "*******"
api_key: "********"
後は,これらをVagrantfileで使うだけ.yamlのkeyがSecret
という専用のクラスのクラス変数に割り当てられ,それを通してvalueを取り出すことができる.
Vagrant.configure('2') do |config|
config.vm.provider :digital_ocean do |provider, override|
provider.client_id = Secret.client_id
provider.api_key = Secret.api_key
end
end
.vagrant/
以下は普通はgitignoreするので,secret.yaml
をわざわざgitignoreする必要はない.
バグなどはGithubのissueか@deeeetまでお願いします.
参考