2014年5月9日金曜日

AWS Opsworksでカスタムcookbooksを設定し実行する方法

■環境
AWS Opsworks
(2014/05/08時点でのUIおよびAPIバージョンを使用)

■設定手順
1. スタックの作成
https://console.aws.amazon.com/opsworks/home?#firstrun
にアクセスします
まだスタックがない場合はダッシュボードにOpsworksの概念図が表示されます
「Add Your First Stack」をクリックしてスタックの情報を入力します


入力項目のポイントとしては
  • Region・・・スタックを作成するリージョンを選択します、ここで選択したリージョン内にインスタンスは作成することができます
  • Hostname theme・・・新しくインスタンスを作成する場合に自動で名前を付与してくれる機能です、設定したテーマに応じたインスタンス名が付与されます
  • Advanced -> Chef version・・・Opsworksのプロビジョニングはchefを使用して行われます、自分が作成したcookbooksが動作するchefのバージョンを入力しましょう
その他は好きな値を適当に入力していきます


あとで作成したスタックに対してカスタムcookbooksの設定を実施します
とりあえずはスタックを作成しましょう

2. カスタムcookbooksの設定
スタックにカスタムcookbooksを設定します
スタックの一覧に戻り先ほど作成したスタックから「Stack Settings」をクリックします


そのまま右上の「edit」をクリックします


一番下の方に「Use custom Chef cookbooks」という欄があるのでトグルをYesにします
するとcookbooksが配置してあるリポジトリを設定する項目が表示されますので入力します


今回はcookbooksはGithubで公開しているので、GithubのURLを記載します
  • Repository type・・・Git
  • Repository URL・・・https://github.com/kakakikikeke/cookbooks-for-automation.git
cloneにSSHを利用する場合は鍵情報を入力します
Branch/Revisionは指定しなければmasterの最新から取得します、特定のブランチやコミット情報を取得したい場合はブランチ名やコミット情報を入力します

今回使用するカスタムcookbooksの細かい説明はしませんが、PHPでmemcachedライブラリを使用するための準備をしています
CustomJsonをここでは設定しません、特定のレイヤーでのみcookbooksを実行させたいのでレイヤーに設定します
CustomJsonの設定方法は後ほど記載します

gitの設定が完了したら「Save」をクリックします

3. PHPレイヤーの作成
スタック内にまだ1つもレイヤーが存在しない場合には右ペインに作成のフローが表示されます
「Add a layer」をクリックしてレイヤーを追加します


今回はPHPレイヤーを追加します
Layer Typeに PHP App Server を選択します
すでにec2上にELBを作成している場合はELBを設定することもできます
レイヤーには特に名称等を指定する部分もないのでタイプを選択したら「Add Layer」をクリックします

4 PHPレイヤー内で実行するレシピの設定
スタックに設定したカスタムcookbooksをPHPレイヤー内で実行させるための設定をします
レイヤーの一覧に戻り先ほど作成したレイヤーから「Recipes」をクリックします


そのまま右上の「edit」をクリックします


レイヤーの設定画面の真ん中あたりに「Custom Chef Recipes」という項目があります
Setupの部分に実行するレシピ名を入力します(今回は「php-memcached-sample」というレシピを実行されるのでphp-memcached-sampleと入力します
入力したら横の「+」ボタンをクリックします
入力が完了したら「Save」します


これでPHPレイヤー内で実行するカスタムcookbooksの準備が整いました

5. インスタンスの作成
インスタンスを作成して実際にカスタムcookbooks内のレシピが実行されるか確認しましょう
レイヤーの一覧に戻り「Add Instance」をクリックします

作成するインスタンスの設定をします
スタック等に設定されているデフォルトの情報を引っ張ってくるので特に設定する必要はありませんが
インスタンス個別に設定を変更したい場合はここで変更します
OSやSSHの鍵情報、インスタンスのタイプを変更することができます
入力が完了したら「Add Instance」をクリックします


Opsworksではこれだけではインスタンスが作成されません
左メニューの「Instances」をクリックしインスタンスの一覧を表示します
インスタンスの一覧の右側に「start」とあるのでこれをクリックするとインスタンスが作成されます
Opsworksはこの段階で初めて課金されます


あとはインスタンスが作成されるまで待ちます
設定したカスタムcookbooksもこの段階で自動で実行されることになります
インスタンスのステータスがbootingからonlineになればインスタンスの作成が完了となります

6. 動作確認
サーバ内にログインしてカスタムcookbooksが実行されているか確認します
今回のカスタムcookbooksはpeclでmemcahcedのライブラリがインストールされていればOKなので
「pecl list」のコマンドの結果でmemcahcedがインストールされていることを確認してください

またサーバにログインしなくともchefの実行ログを確認することができます
インスタンスの詳細画面に「Logs」という項目があるのでそこからログを閲覧できるURLをクリックするとブラウザ上でchefのログを確認することができます
ここでcookbooksが正常に動作しているか確認することもできます

■Tips
今回サンプルとして利用しているcookbooksはCentOS用に作成したcookbooksなのでOSは Amazon Linux でしか動作しません

Githubにあるカスタムcookbooksの階層は、cookbooksリポジトリ -> cookbooks名 -> recipesという階層でないといけません
リポジトリの直下にrecipesディレクトリ等がある場合はもう1つリポジトリを作成してそのリポジトリのサブモジュールとして登録してあげると使えるようになります
Opsworksはサブモジュールも動作します

今回はsetupというところでカスタムcookbooks内のレシピを実行しましたが、setupじゃなくても問題ないです
Opsworksにはライフサイクルという概念があり、好きなライフサイクルでカスタムcookbooksを実行することが可能です

0 件のコメント:

コメントを投稿