YggdrasillNetwork Blog

A blogging framework for hackers.

Knife-ec2 や Kitchen-ec2 のための環境変数設定

概要

test-kitchen の dirver に ec2 を利用する際や、knife ec2 コマンド、AWS CLI を利用する際に環境変数から設定値を読み込む設定等のまとめ。

git で管理している設定ファイルに直接 AWS の Access Key や Secret Access Key などを記述しなくても済む方法。

.bash_profile

knife-ec2 および kitchen-ec2 の環境変数関連の挙動から、.bash_profile に設定する環境変数。

  • .bash_profile
1
2
3
4
export EC2_SSH_KEY_PATH=~/.ssh/********.pem
export AWS_ACCESS_KEY_ID=********************
export AWS_SECRET_ACCESS_KEY=********************
export AWS_SSH_KEY_ID=********************

knife-ec2

knife.rb に環境変数から設定値を読み込む設定を行っている項目

1
2
3
4
knife[:identity_file] = ENV['EC2_SSH_KEY_PATH']
knife[:aws_access_key_id] = ENV['AWS_ACCESS_KEY_ID']
knife[:aws_secret_access_key] = ENV['AWS_SECRET_ACCESS_KEY']
knife[:aws_ssh_key_id] = ENV['AWS_SSH_KEY_ID']

kitchen-ec2

.kitchen.yml に設定項目を記述しなくても、環境変数に特定の値が設定されている場合には自動的に設定値を設定してくれる項目

設定項目 設定のための環境変数
aws_access_key_id AWS_ACCESS_KEY or AWS_ACCESS_KEY_ID
aws_secret_access_key AWS_SECRET_KEY or AWS_SECRET_ACCESS_KEY
aws_session_token AWS_SESSION_TOKEN or AWS_TOKEN
aws_ssh_key_id AWS_SSH_KEY_ID

.kitchen.yml に環境変数から設定値を読み込む設定を行っている項目

  • EC2_SSH_KEY_PATH
1
2
3
4
5
6
7
driver:
  name: ec2
  security_group_ids: ["sg-6744b502"]
  ssh_key: <%= ENV['EC2_SSH_KEY_PATH'] %>
  region: ap-northeast-1
  availability_zone: ap-northeast-1a
  interface: public

.aws/config

  • 環境変数から設定値を読み込む
    • AWS_ACCESS_KEY_ID
    • AWS_SECRET_ACCESS_KEY

Tips

knife.rb に設定可能な項目 List

設定項目 default 設定値
knife[:aws_credential_file] -
knife[:aws_access_key_id] -
knife[:aws_secret_access_key] -
knife[:region] -
knife[:use_iam_profile] false
knife[:flavor] -
knife[:image] -
knife[:placement_group] -
knife[:availability_zone] -
knife[:chef_node_name] -
knife[:aws_ssh_key_id] -
knife[:ssh_port] 22
knife[:ssh_gateway] -
knife[:ssh_gateway_identity] -
knife[:bootstrap_version] -
knife[:bootstrap_proxy] -
knife[:distro] chef-full
knife[:template_file] false
knife[:secret] -
knife[:secret_file] -
knife[:s3_secret] -
knife[:subnet_id] -
knife[:private_ip_address] -
knife[:bootstrap_protocol] -
knife[:fqdn] -
knife[:aws_user_data] -
knife[:ebs_volume_type] standard
knife[:provisioned_iops] -