他人に共有したくない設定をVagrantfileに書くためのpluginつくった

(追記)dotenvというもっと便利なツールがありました.僕のは,pluginを作る際の参考にしてください.dotenvとvagrantの連携は,glidenoteさんの“dotenvを利用して環境ごとでVagrantfileの設定値を変更してみる”を参考にしてください.

vagrant-secret

例えば,VagrantでDigital Oceanを使う場合,以下のようにclient_idapi_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_idapi_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までお願いします.

参考