はじめに
vagrant-awsは凄く便利ですが、Vagrantfileでaccess_key_id
とsecret_access_key
を平文で設定するとGithubなどで公開できないので面倒です。アクセスキーは、AWS CLIやAWS SDKで共通化された、~/.aws/credentials
に登録するので、ここから持ってくる方法を検討しました。
結果
AWS SDK for Rubyを使って簡単に実現できました。以下の通り、AWS.config.credentials
を使えば、defaultのアクセスキーが取得できます。
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "dummy"
config.vm.provider :aws do |aws, override|
aws.access_key_id = AWS.config.credentials[:access_key_id]
aws.secret_access_key = AWS.config.credentials[:secret_access_key]
aws.keypair_name = "vagrant"
aws.ami = "ami-b66ed3de"
aws.instance_type = "t2.micro"
aws.security_groups = ['webserver']
override.ssh.username = "ec2-user"
override.ssh.private_key_path = "~/.aws/vagrant.pem"
end
end
事前準備
VagrantfileからAWS SDK for Rubyを呼び出せる必要があります。通常のRubyだと、gem install aws-sdk
でインストールしますが、Vagrantの場合はVagrantのpluginとしてインストールします。
$ vagrant plugin install aws-sdk
$ vagrant plugin list
aws-sdk (1.59.0)
vagrant-aws (0.5.0)
vagrant-login (1.0.1, system)
vagrant-omnibus (1.4.1)
vagrant-share (1.1.2, system)