前回のブログでJenkinsのレシピを作成し、Vagrantを利用してローカル環境のVMでtest-kitchenを利用してserverspecのテストを実行するようにしました。
今回、kitchen-ec2を使ってその環境をローカルでなく、AWSのEC2を利用してテストするようにします。
参考
Chefのテストツール kitchen-ec2を使う – 導入、チュートリアル
前提
- AWSのアカウントがあること
- AWS のアクセスキー/シークレットアクセスキーが存在すること。
- EC2のキーペアを作成済みである事
- VagrantやChefなどがインストール済みである事
環境の準備
必要なものをインストールします。
$gem install test-kitchen $gem install kitchen-ec2
対象レシピのディレクトリに移動し、.kitchen.ymlを変更します。 既に.kitchen.ymlが存在する場合には上書きするかの確認が表示されますが、必要に応じてバックアップを取得しておいてください。
$cd {repo_dir} $kitchen init --driver=kitchen-ec2
.kitchen.ymlの編集
.kitchen.ymlを編集します。
--- driver: name: ec2 aws_access_key_id: <%= ENV['AWS_ACCESS_KEY'] %> aws_secret_access_key: <%= ENV['AWS_SECRET_KEY'] %> aws_ssh_key_id: <%= ENV['AWS_SSH_KEY_ID'] %> ssh_key: <%= ENV['SSH_KEY'] %> security_group_ids: ["Vagrant"] region: ap-northeast-1 availability_zone: ap-northeast-1a require_chef_omnibus: true provisioner: name: chef_solo platforms: - name: ubuntu-12.04 driver: image_id: ami-0596ef04 username: ubuntu flavor_id: t1.micro - name: centos-6.4 driver: image_id: ami-99fa7098 username: root flavor_id: t1.micro suites: - name: default run_list: - recipe[jenkins::default] attributes:
ポイントだけ記載します。
- aws_access_key_id:AWSのアクセスキー
- aws_secret_access_key:AWSのシークレットアクセスキー
- aws_ssh_key_id:キーペアの名称
- ssh_key:キーペア(pem)のファイルパス
- security_group_ids:設定するセキュリティグループ
詳細は test-kitchen/kitchen-ec2を確認ください。
上記のように環境変数から読み込む設定の場合、~/.bashrcなどに以下のように記載します。
export AWS_ACCESS_KEY="xxx" export AWS_SECRET_KEY="xxxxxxxx" export AWS_SSH_KEY_ID="hogeKeyPair" export SSH_KEY="~/.ssh/hogeKeyPair.pem"
image_idについては自分で作成したAMIでも大丈夫ですし、aws marketplaceのものも利用出来るようです。
aws marketplaceのものを利用する場合、利用承諾をしていないとインスタンス起動時にエラーとなります。その場合には、利用承諾用URLが表示されるのでリンクがエラー文に表示されるのでそこから利用承諾を行うと以降の起動が成功します。
テストの実行
テストの実行は以下のコマンドで可能です。
$kitchen test
上記で
- インスタンスの作成
- AWSへのChefのインストール、レシピの適用
- テストの実行
- インスタンスの削除
をplatformsに書かれたOSの数分実行されます。
それぞれを個別にやるには
- kitchen create
- kitchen coverage
- kitche verify
- kitchen destroy
というコマンドが対応しています。
インスタンスの各状態はkitchen listコマンドで確認が出来ます。
0 件のコメント:
コメントを投稿