AWSの新作codedeployを試してみます
マニュアルも読まずにコンソールからポチポチといきます
まず、使えるリージョンはまだ2つしかない模様
新機能がバージニアなのは鉄板ですね
リージョンを選んでウェルカム画面
アプリケーションは今回はsampleとして用意されているものを使ってみます。
ところで、こんな風にWEBのコンソールでsampleが用意されているものってありましたっけ?
さらにぽちぽち進みます
AmazonLinuxを選択して起動
ここでwindowsを選択してもサンプルのアプリケーションは同じWEBの画面でした。
違いは後述
codedeployで利用するVMを起動すると
CloudFormationで起動するので、そっちのコンソールみろ的なダイヤログが出ましたので、
覗いてみると
デプロイが始まっていました。
VMの起動は、CloudFormationを使って起動していました。
サンプルだからでしょうか?
CloudFromationのDescriptionを見てみると
Create instances ready for CodeDeploy: Create up to 3 Amazon EC2 instances with an associated instance profile and install the AWS CodeDeploy Agent.
**WARNING** This template creates one or more Amazon EC2 instances. You will be billed for the AWS resources used if you create a stack from this template.
codeDeployのダイヤログには、CloudFormationので CREATE_COMPLETE となってから、次へ進めとありますので、しばし待機します
CREATE_COMPLETEになったので、次に進みます
アプリケーションを設定します
ここでサンプルの中身が取得出来るので、見てみると
このような中身でした
ちなみに、window用だとこんな感じ
中身の違いは、パッケージのインストールとOSコマンドの違いだけでした
この中のappspec.ymlが鍵のようなので、中身を見てみると
AmazonLinuxの場合
version: 0.0
os: linux
files:
- source: /index.html
destination: /var/www/html/
hooks:
BeforeInstall:
- location: scripts/install_dependencies
timeout: 300
runas: root
- location: scripts/start_server
timeout: 300
runas: root
ApplicationStop:
- location: scripts/stop_server
timeout: 300
runas: root
windowsの場合
version: 0.0
os: windows
files:
- source: \index.html
destination: C:\inetpub\wwwroot
hooks:
BeforeInstall:
- location: \before-install.bat
timeout: 900
アプリケーションフックと思われる書式とhttpのルートフォルダが記載れていました
scriptsの中身は
AmazonLinuxの場合
#!/bin/bash
service httpd start
#!/bin/bash
isExistApp = `pgrep httpd`
if [[ -n $isExistApp ]]; then
service httpd stop
fi
#!/bin/bash
yum install -y httpd
windowsの場合のbefore-install.bat
REM Install Internet Information Server (IIS).
c:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe -Command Import-Module -Name ServerManager
c:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe -Command Install-WindowsFeature Web-Server
コマンドがそのままでした
次にデプロイグループを設定
EC2のインスタンスにタグをつけて管理するみたいです
ここで、さきほどCloudFormationで起動したVM以外にも同じタグがついていた場合、instanceの数がタグに反応して増えます
また、タグ名はautoscallingグループの名前も付けることが出来るみたいです
サービスロールの設定
createとuseが使えますが、useの時点でcodedeploy用のロールが作られていました
恐らくWEBのサンプル専用に作られえるものでしょう
作られているロールはこのような感じです
以下の3つの設定が出来る模様
都度1回
30分に1回
全体で1回
今回は1回のやつを選択
最後に設定一覧が出て問題なければ実行
では、アプリケーションにアクセス・・・といっても、どこのURLにアクセスして良いかわからないので、3つのVMのどれかのpublicIPにhttpアクセスしてみると
アプリケーションが表示されました。
試しに他のVMのIPにしても同じものが表示されました。
なお、Linux/Windowsどちらで試しても同じ結果となりました。
さて、デプロイできたので、今度は削除してみます
上記の画面の済にあるDeleteボタンをクリックすると
このような表示が出て、さらに続行するも・・・消えませんでした
正確にはアプリケーションは削除されましたが、VMは削除されませんでした
そこで
cloudformationから消してみます
消えました(当たり前
総評
opsworkと被っているレイヤにも思えますが、chefが書けないといったエンジニアに向けた設定ファイルベースのサービスという感じに思えました
また、windows版があるのでエンタープライズでwindowsバリバリのシステムの移行にももしかしたら使えるかもしれません。
詳細は、WEBのマニュアルを参照されると良いと思います
近日中に、custom版、およびCLIでも試してみたいと思います