こんにちは、運用2課の斉藤です。
サーバーワークスの中では、アプリケーションの運用と開発を行っている珍しい人種です。
よくある話ですがデプロイ方法が案件毎にバラバラだったり妙に複雑だったりします。
Capistranoというツールを使っている場合もありますが、残念ながら全案件で統一は出来ていない現状です。
そんな中AWS CodePipelineがリリースされました!
まだN.Virginiaリージョンでしか利用できませんが、早速AWS CodePipelineを触ってみました。
AWS CodePipeLineとは
コードのビルドからテスト、デプロイまでのワークフローを定義できるCIサービスです。
Amazon S3もしくはGitHubに置かれたソースコードに変更があれば、
それをトリガーとして設定したフローを開始します。
デプロイには、AWS CodeDeployやAWS Elastic BeanStalkが利用できます。
またビルドやテストにはJenkins等のサードパーティーのツールが利用できます。
とにかく始めてみる
新しいサービスはドキュメント読むこともとても大事ですが、とにかく触らないと始まらないので試していきます。
AWS CodeDeployの作成
今回はAWS CodeDeployを利用するので、AWS CodeDeployを開始してサンプルデプロイを作成します。
進めていくと3つのインスタンスが立ち上がります。
それとAWS CodeDeployのサンプルコードをGitHubにプッシュしておきます。
AWS CodePipeLineの設定
任意の名前を付けます。
ソースコードの管理場所を選択します。(Amazon S3 or GitHub)
今回はGitHubを選択します。GitHubの場合初回はGitHub側での認証が必要になります。
認証後に対象となるリポジトリ名とブランチ名を指定します。
ビルドに使うツールを指定します。(Jenkinsのみです)
今回は指定しません。
デプロイ方法を選択します。(AWS CodeDeploy or AWS Elastic BeanStalk)
今回はAWS CodeDeploy を利用します。
Application nameやDeployment Groupはサンプルデプロイを作成したときに設定したものを指定します。
AWS CodePipelineを操作できる権限をもったIAMロールを指定します。
既存のロールに権限を追加しても良いですし、これ用に新しく作成してもOKです。
今回はCreate roleでAWS CodePipeline専用にIAMロールを作成しました。
Pipelineを新しく作成すると自動的にデプロイフローが開始されます。
フローの上から順番に処理が始まっていきます。(in Progress → Succeeded or Failed)
フローが全て成功したら作成されたEC2にアクセスすると画像のページが表示されているはずです。
-
Pipeline nameの設定
-
Source providerの設定
-
Build providerの設定
-
Deploy Providerの設定
-
IAM Roleの設定
-
初回デプロイフローの開始
編集してGitHubにpush
サンプルデプロイのindex.htmlを適当に編集してpushします。
コードの変更をPushすると、AWS CodePipeLineにより自動的にデプロイが実行されました。 さきほどのページにアクセスするとコードの変更が画面に反映されていることが確認できます
思ったより簡単にできました。
まとめ
単純なフローではありますが簡単にデプロイフローを作成することができました。
今回は2フローの単純なものでしたが、この間にビルドやテストを挟むこともできます。
テストやビルドで選択できるサービスが増えたり、ソースにAWS CodeCommitが選択できたり、
デプロイ方法もAWS OpsWorks等選択肢が増えれば文句なしかもしれません。
とはいえ、今の状態でも統一されていないデプロイ手順を統一するには便利そうです。
ただし、運用2課のリポジトリ管理ツールは現在Gitじゃないので実運用では今のとこ使えないのが残念な話です。