CIサービスWerckerでOpsWorksにデプロイする

AWS OPSWORKS DEPLOYというCustom Stepを使えばWerckerからOpsWorksへもデプロイが可能です。

設定方法

wercker.ymlの設定

wercker.ymlのdeploy stepに以下のように設定します。

deploy:
    steps:
        - pip-install:
            requirements_file: ""
            packages_list: "awscli"
        - mactynow/aws-opsworks-deploy:
            access_key_id: [ACCESS KEY ID]
            secret_access_key: [SECRET ACCESS KEY]
            default_region: us-east-1
            default_ouput: json
            stack_id: [STACK ID]
            app_id: [APP ID]

access_key_idsecret_access_keyにはOpsWorksへのデプロイ権限のあるIAMのキーを設定して下さい。

stack_idにはOpsWorksのスタックの設定画面にあるOpsWorks IDを、app_idにはアプリの設定画面にあるOpsWorks IDを設定します。もしデプロイ先インスタンスも指定する必要があれば、instance_id: [INSTANCE ID]というキーを追加して設定することもできます(オプションです)。

default_regionは東京リージョン(ap-northeast-1)などのリージョンで稼働させている場合でもus-east-1を指定してください。OpsWorksのAPIのエンドポイントがus-east-1であるためです。

Werckerの設定

wercker

Deploy Targetに「Custom deploy」として追加します。デプロイ対象のブランチ名を指定して下さい。

いざデプロイ!

既にWerckerにアプリを登録してあれば、git pushでビルドプロセスからデプロイまでWerckerで自動的に実行されます。

あわせて読みたい:Githubのプライベートリポジトリでも無料で使えるCI、Werckerを使ってrails newからHerokuのデプロイまでやってみる

opsworks

OpsWorksから見ると、こんな感じでWerckerからデプロイ指示が飛んでいるのがわかります。デプロイの具体的な実行自体はOpsWorksが実行しているので、WerckerにGithubのキーなどを渡さなくて良いのが、良いですね。

OpsWorksを利用している方は、ぜひ利用してみてください。

AWS OPSWORKS DEPLOY