CloudFormationを使いredmineのインスタンスを起動する

おはようございます。インフラの宮下です。

社内向けredmineが古いのでリプレイスを検討しています。
できるだけ手間をかけずに検証環境を用意したいと思い、AWSのcloudformationを使って
redmineを用意してみました。


目次

  1. はじめに
  2. CloudFormationでインスタンスを作成する
  3. インスタンスが起動してからの設定

はじめに

現在稼働しているredmine環境が物理サーバにバージョンがRedmine 1.1.2.stable (MySQL)ととても古いので最終的には入替まで実施したいと思います。

CloudFormationでインスタンスを作成する

ManagementConsoleからCloudformationの画面を開きます。
「Create Stack」で新規作成を開始します。

・Name→管理しやすい名前を自由につける。

・Template→Use sample templateの中のSingleInstanceSamplesの中から「Redmine Project Management System」を選ぶ。
※検証環境なので今回は最小化された構成で構築します

「Next Step」で次に進みます。

Specify Parametersにそれぞれ値を入れていくのですが、デフォルトではkeyを指定する事ができませんでした。

という事で一旦「Back」で戻ります。

amazonが公開している下記のテンプレートをローカルPCに保存します。
https://s3.amazonaws.com/cloudformation-templates-us-east-1/Redmine_Single_Instance.template
サンプルとの違いは、KeyNameの定義が入っているだけですのでSSHログインしないというのであれば
この作業は不要です。

[shell](8行目)
"KeyName": {
"Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instances",
"Type": "String",
"MinLength": "1",
"MaxLength": "255",
"AllowedPattern" : "[\\x20-\\x7E]*",
"ConstraintDescription" : "can contain only ASCII characters."
},

(230行目)
"KeyName" : { "Ref" : "KeyName" },[/shell]

改めて「Create A New Stack」のTemplateをUpload template fileを選択して保存したテンプレートを選び「Next Step」で次に進みます。
ParametersにKeyNameの項目が追加されますので作成済みの鍵名を入れます。

・DBRootPassword→ご自由に。後でmysqlログインする際に使用するので忘れずに。
・InstanceType→デフォルトでm1.smallですが、t1.microに変更する
・KeyName→作成済みの鍵を指定。未作成の場合は先に作っておきます
・SSHLocation→SSHを許可するNWを指定する。後でSecuritypolicyで変更できます

「Next Step」で次に進みます。

Optionsは必須ではありませんが管理しやすくするのであればTagにNameで名前をつけておくのが良いと思います
Advanced も今回は不要。Autoscaleする時に通知させたい場合に設定します。

「Next Step」で次に進みます。

Reviewで最終確認して問題なければ「Create」sで作成が開始されます。

インスタンスが起動してからの設定

StackのEventsをが更新されていき、CREATE_COMPLETEとなったらEC2の方を確認してみます。
指定したTypeのインスタンスが起動しているのでまずはブラウザでアクセスしてみます。

http://ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com/

redmineのログインページが出てきたらデフォルト管理者でログインしてみます。
ID:admin PASSWORD:admin

無事ログインできました。

これで起動までは完成しましたが、実はデフォルトでHTTPポートがANYで開放されています。
今回は社内向けなのでSecurityPolicyを変更してIPアドレス制限をかけます

80 (HTTP) 0.0.0.0/0 →80 (HTTP) 202.202.202.xx/32

※ANYのままにするのであればadminのパスワードはすぐに変えた方が良いと思います

これで簡単にインスタンス作成までができました。
MarketplaceでBitnamiさんのAMIから作っても良いと思います。
OSがUbuntuなのと今後AutoscaleとかもしたかったのでCloudFormationで今回は構築しました。

次回はredmine1.1.2+mysql5.0の環境のデータをredmine2.4.0+mysql5.5に移行した記録を公開します。

○2014/4/8追記
opensslの脆弱性(Heartbleed)の対策でバージョンアップを実施しました。
[shell]# rpm -qa|grep openssl
openssl-1.0.1e-4.55.amzn1.x86_64
openssl-1.0.1e-4.55.amzn1.i686
openssl-devel-1.0.1e-4.55.amzn1.x86_64[/shell]
※HTTS通信はしていないし、アクセス制限がかかっていますが、気持ち悪いので
 対策済みのバージョンにアップデートします。

[shell]# yum update openssl
(中略)
Updated:
audit.x86_64 0:2.3.2-3.19.amzn1 openssl.i686 1:1.0.1g-1.69.amzn1 openssl.x86_64 1:1.0.1g-1.69.amzn1

Dependency Updated:
audit-libs.i686 0:2.3.2-3.19.amzn1 audit-libs.x86_64 0:2.3.2-3.19.amzn1 glibc.i686 0:2.17-36.81.amzn1
glibc.x86_64 0:2.17-36.81.amzn1 glibc-common.x86_64 0:2.17-36.81.amzn1 glibc-devel.x86_64 0:2.17-36.81.amzn1
glibc-headers.x86_64 0:2.17-36.81.amzn1 openssl-devel.x86_64 1:1.0.1g-1.69.amzn1

Complete!
# rpm -q –changelog openssl
* Wed Apr 09 2014 Cristian Gafton <gafton@amazon.com>
– rebase to upstream v1.0.1g

* Mon Apr 07 2014 Ben Cressey <bcressey@amazon.com>
– use dlopen with libssl for FIPS verification

* Mon Apr 07 2014 Cristian Gafton <gafton@amazon.com>
– add fixes from upstream 1.0.1f/g releases (CVE-2014-0160, fixes for CVE-2013-0169)[/shell]

これで更新は完了しました。ただし、ライブラリを使用しているサービスは全て
再起動しないといけません。
[shell]# /etc/init.d/httpd restart[/shell]
※ちなみに現在公開されているamazonlinuxのAMIは最初から対策済みのバージョンに
なっているとの事です。
 (その他に公開されているAMIは起動後に都度バージョンを確認した方が良いでしょう)

おすすめ記事