最近はもっぱらAWSでのサーバ運用ばかりしています。
で、AWS EC2を使ってる際にどうしようかなぁと思うことの一つに、IPが固定されない、
ということがあると思います。
EIPなりVPCなり使えばIPの固定自体は出来ますが、いちいち固定IP付けるの面倒だし…という時とか。
今回はアプリケーションをデプロイする時にそれを感じました。
capistranoを用いたデプロイ時にデプロイ先のサーバのアドレスを指定しますが、
ELBにぶら下がるインスタンスに固定IP付けてないんだよなぁ、というケースです。
そこで aws-sdk for ruby を使って、ELB配下のインスタンスを取得するように設定してみました。
今回はVPC内のインスタンスを対象にしてたので、通常のEC2インスタンスであれば、 instance.private_ip_address を instance.dns_name にすればいいと思います。
実行結果は以下です。
$ bundle exec cap test_web triggering start callbacks for `test_web' * 2013-02-27 08:46:42 08:46:42 == Currently executing `test_web' * executing "echo 'Hi!'" servers: ["10.0.102.11", "10.0.101.11"] [10.0.102.11] executing command ** [out :: 10.0.102.11] Hi! [10.0.101.11] executing command ** [out :: 10.0.101.11] Hi! command finished in 4000ms $ bundle exec cap test_app triggering start callbacks for `test_app' * 2013-02-27 08:46:56 08:46:56 == Currently executing `test_app' * executing "echo 'Hi!'" servers: ["10.0.102.11", "10.0.101.11"] [10.0.101.11] executing command ** [out :: 10.0.101.11] Hi! [10.0.102.11] executing command ** [out :: 10.0.102.11] Hi! command finished in 945ms $ bundle exec cap test_db triggering start callbacks for `test_db' * 2013-02-27 08:47:04 08:47:04 == Currently executing `test_db' * executing "echo 'Hi!'" servers: ["10.0.102.11"] [10.0.102.11] executing command ** [out :: 10.0.102.11] Hi! command finished in 1019ms
おぉ、出来た。ちゃんとdb roleの時は1つのインスタンス宛になってます。
もっと色々活用するためにruby勉強せねば…。
おしまい。
まだ途中までしか読んでないですが、この本結構分かりやすいです。オライリーならPDFもありますし。
0 件のコメント:
コメントを投稿