“ChefがキライでもOpsWorksはキライにならないでくださいっ!!” カスタムAMIとAWS OpsWorksの使い方:AWS OpsWorksアプリケーション運用の勘所(3)(2/3 ページ)
「OpsWorksってあれだろ? Chefでレシピを書くんだろ? 」と言ってみたけど、本当は書いたことがない人が一番幸せになれる情報。Chefがいなくてもオイシイ仕組みは作れるようになりそう!
真骨頂! AWS CLIを使ったコマンドラインツールからのOpsWorks
さて、このような環境が整った現在、AWSの真骨頂は、Management Consoleなんかではありません。SDKとコマンドラインツールです。この2つがあるから、プログラマブルなインフラになり得るんです。3回目にしてやっと、本編開始といったところです。
AWS CLI(AWS Command Line Interface)は、AWSの各種サービスをコマンドラインから操作するためのCLI実装です。本稿執筆時点ではまだデベロッパプレビュー版と、若いツールですが、利用可能なサービスもどんどん増えて活発に進化しています。
今回はこれを使ってOpsWorksを操作し、デプロイの自動化を試してみましょう。AWS CLIはPythonパッケージとして配布されています。動作環境としてはPython 2.6以上が推奨されています。
IAMの作成
新しくスタックを作るために、Roleが1つ必要になってくるので、IAMで作ります。
下記ではatmarkitという名前のRoleを用意しています。
$ aws iam create-role --role-name aws-opsworks-service-role --assume-role-policy-document '{ "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] }'
RoleができたらOpsWorksの、より大きな論理単位であるStackを作っていきます。
$ aws opsworks create-stack --name created-by-cli --stack-region ap-northeast-1 --service-role-arn "arn:aws:iam::038072554641:role/aws-opsworks-service-role" --default-instance-profile-arn arn:aws:iam::038072554641:instance-profile/aws-opsworks-ec2-role --default-ssh-key-name id_rsa --default-os "Amazon Linux" { "StackId": "6c03c68c-46d7-4cb6-bc03-b1dc8b9e0010" }
簡単ですね。
ここで指定すべきパラメータはコマンドラインで-と打ってからタブを押せば出てきますが、AWS Documentation " OpsWorks " API Reference " Actions " CreateStackに載っています。CLIツールの使い方は大体APIに沿っているので、API Referenceを見ると、どんな値が入れるのかが分かります。
筆者はManagement Consoleのレスポンスの遅さに「イラつく」くらいのせっかちなので、これくらいさくっと動いてくれる方が気持ちがよいです。
Layerの作成
ではLayerを作って行きます。こちらも非常に簡単です。
必要なパラメータなどはこちらを参照してください。セキュリティグループを作っておく必要があるので、すでにあるものか、新しく作りましょう。下の例では新しくセキュリティグループを作り、port 22と80を開放しています。
$ aws ec2 create-security-group --region ap-northeast-1 --group-name opsworks-atmarkit --description "opsworks cli " { "return": "true", "GroupId": "sg-68318203" } $ aws ec2 authorize-security-group-ingress -region ap-northeast-1 --group-name opsworks-atmarkit --from-port 22 --ip-protocol tcp --to-port 22 --cidr-ip "0.0.0.0/32" { "return": "true" } $ aws ec2 authorize-security-group-ingress -region ap-northeast-1 --group-name opsworks-atmarkit --from-port 80 --ip-protocol tcp --to-port 80 --cidr-ip "0.0.0.0/32" { "return": "true" }
$ aws opsworks create-layer --stack-id 6c03c68c-46d7-4cb6-bc03-b1dc8b9e0010 --name PHP --shortname php --type php-app --custom-security-group-ids sg-68318203 { "LayerId": "65dcd8f3-f642-473b-bc4d-08449a7c32a9" }
作業の履歴が残せる(再現が簡単な)上に簡単なので、もうManagement Consoleはいらないかもしれませんね。
インスタンスの作成
次にインスタンスを作りましょう。こちらも簡単です。必要なパラメータなどは同様にこちらを参照してください。
$ aws opsworks create-instance --stack-id 6c03c68c-46d7-4cb6-bc03-b1dc8b9e0010 --layer-ids 65dcd8f3-f642-473b-bc4d-08449a7c32a9 --instance-type t1.micro --architecture x86_64 --root-device-type ebs { "InstanceId": "8e1340cc-f529-4c89-87c0-eeb24c33b605" }
アプリケーションの作成
次にアプリケーションも作ります。アプリケーションも同様に必要パラメータなどはこちらで確認できます。
$ aws opsworks create-app --stack-id 6c03c68c-46d7-4cb6-bc03-b1dc8b9e0010 --name testApplication --shortname test --app-source type=git,url=http://github.com:tottokug/test.git --type php { "AppId": "c5048f90-f0b5-4fbc-91b4-0afe773ec733" }
やっぱり簡単です。
Copyright © ITmedia, Inc. All Rights Reserved.