aws memo

AWS関連の備忘録 (※本ブログの内容は個人的見解であり、所属組織及び企業の意見を代弁するものではありません。1年以上古いエントリは疑ってかかってください)

EC2: Cloud-init でGitを使う

EC2の機能として、インスタンス作成時にUser Dataとしてパラメータ を渡すことで、起動時に cloud-initが動作する。

これを使って、インスタンス作成時に動的にGitからコンテンツを取得・デプロイすることが可能。

本格的にDevOpsやるなら、PuppetやChefを導入すべきだろうが、小規模な環境であればすぐにに使えるのが便利。

Amazon EC2: Apache, Git, Website Hosting with Cloud-Init | Cloud Zone

===

1.インスタンス作成

Quick Launch Wizardで、Amazon Linux AMIを選択する。Amazon Linuxcloud-initにより、起動処理にてコンフィグを行える。AWS forumソースが詳しい。

image

2.インスタンスのファイアウォールで、Webを通すようにしておく。

image

3."User-Data"フィールドに cloud-initの内容を入力する

image

cloud-initで実行する内容は以下のとおり

  1. Apacheをインストール
  2. Gitをインストール
  3. ウェブサーバをスタート
  4. GitHubからwebコンテンツを web server rootにcloneする

cloud-initのフォームに入力する設定は以下。

#cloud-config
packages:
 - httpd
 - git
runcmd:
 - [ /etc/init.d/httpd, restart ]
 - [ git, clone, "-b", "gh-pages", "git://github.com/foo/bar.git", "/var/www/html"]

起動してしばらくすると、インスタンスのサーバ名でURLにアクセスしたら見えるはず。