CodeDeploy agentを既存EC2インスタンス(CentOS6)に入れてみた
CodeDeployとは
- CodeDeployはEC2/AutoScalingのみに特化したデプロイ系サービス
- 似たものではElasticBeanstalk、OpsWorksなどがある
- ローテーションやCIツールとの連携などの細やかなデプロイが可能なサービス
- 費用はかからずEC2インスタンス利用料のみ
東京、オレゴン、シンガポールの3リージョンで実行したかったがシンガポールが未対応。
今後の対応に期待してシンガポールではなくアイルランドかフランクフルトを選択することにする。
Supported Regions
米国東部 (バージニア北部) 米国西部 (オレゴン) EU (アイルランド) EU (フランクフルト) アジアパシフィック (シドニー) アジアパシフィック (東京)
既存のインスタンスで使うにはCodeDeploy Agentを入れる必要がある。
環境としてはCentOS6に色々入っている状態のAMIを使用する。
CentOSにagentインストール
sudo yum update sudo yum install ruby → 1.8.7インストール済み sudo yum install aws-cli → インストール済み cd ~ aws s3 cp s3://aws-codedeploy-eu-central-1/latest/install . --region eu-central-1 sudo ./install auto
インストールしようとしたらソースの置いてあるS3にアクセスができずにエラーが出た。
どうやら事前にIAMロールでCodeDeployServiceRoleを付与する必要があるらしい。
個別でIAMを作ってみたがEC2作成画面でIAMを選択出来ない。
調べてみるとインスタンスプロファイルを作成して登録していないと選択出来ないようだ。
この辺りはよくわかっていないので後ほど調べる。
インスタンスプロファイル作成
aws iam create-instance-profile --instance-profile-name CodeDeployServiceRole
インスタンスプロファイル登録
aws iam add-role-to-instance-profile --role-name CodeDeployServiceRole --instance-profile-name CodeDeployServiceRole
さらにcredentialsも設定できていなかったので設定。
# aws configure AWS Access Key ID [None]: AKIAJTDHWNRQ64IKDGBQ AWS Secret Access Key [None]: **************************** Default region name [None]: Default output format [None]:
再度
# aws s3 cp s3://aws-codedeploy-eu-central-1/latest/install . --region eu-central-1
やっと進んだ、と思ったら
# sudo ./install auto I, [2015-11-17T12:34:04.863059 #3583] INFO -- : Starting Ruby version check. E, [2015-11-17T12:34:04.863244 #3583] ERROR -- : Current running Ruby version for root is 1.8.7, but Ruby version 2.0.x needs to be installed. E, [2015-11-17T12:34:04.863280 #3583] ERROR -- : If you have Ruby version 2.0.x installed for other users, please create a symlink to /usr/bin/ruby2.0. E, [2015-11-17T12:34:04.863309 #3583] ERROR -- : Otherwise please install Ruby 2.0.x for root user.
今度はRubyのバージョンでエラー。
# ruby -v ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
現状1.8.7なのでこれを2.0以上に上げる必要がある。
rubyをremoveして安定版をインストール
yum remove ruby cd /opt git clone git://github.com/sstephenson/rbenv.git mkdir /opt/rbenv/plugins cd /opt/rbenv/plugins git clone git://github.com/sstephenson/ruby-build.git vi /etc/profilevi export RBENV_ROOT="/opt/rbenv" export PATH="${RBENV_ROOT}/bin:${PATH}" eval "$(rbenv init -)"
再ログインするとか、シェルを再起動して環境設定を反映。
# yum install gcc make openssl-devel libffi-devel readline-devel
2015/11/17現在で2.2.3が最新安定バージョンのようなのでそちらを適用。
# rbenv install 2.2.3
# rbenv global 2.2.3
# ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
再度やってみる
[root@khkstg-RMQ-uw2b ~]# ./install auto I, [2015-11-17T14:47:36.808461 #30200] INFO -- : Starting Ruby version check. E, [2015-11-17T14:47:36.808562 #30200] ERROR -- : Current running Ruby version for root is 2.2.3, but Ruby version 2.0.x needs to be installed. E, [2015-11-17T14:47:36.808586 #30200] ERROR -- : If you have Ruby version 2.0.x installed for other users, please create a symlink to /usr/bin/ruby2.0. E, [2015-11-17T14:47:36.808603 #30200] ERROR -- : Otherwise please install Ruby 2.0.x for root user.
あれ、、、?、、、あっ。
2.0.x以上じゃなくて。2.0.x系じゃないとダメなんだね。英語が読めないつらみ。
ruby2.0.0を入れる
rbenvだとglobalでデフォルトのバージョンを指定できるので削除する必要はなく指定するだけでOKっぽい。
# rbenv install 2.0.0-p647 # rbenv global 2.0.0-p647 # ruby -v
agentインストール実行
# ./install auto インストールしています : codedeploy-agent-1.0-1.825.noarch 1/1 Starting codedeploy-agent:Installing codedeploy-agent auto-update cron in '/etc/cron.d/codedeploy-agent-update'... Installing codedeploy-agent auto-update cron in '/etc/cron.d/codedeploy-agent-update'...Complete Verifying : codedeploy-agent-1.0-1.825.noarch 1/1 インストール: codedeploy-agent.noarch 0:1.0-1.825 完了しました!
無事に成功しました!
最後に自動起動を設定して完了。
chkconfig --level 3 codedeploy-agent
次はCodeDeployを実際に使ってみます。