ハンズオン:CloudFormerを使い、現シ
     ステムをテンプレートで保存する。




ARAKI Yasuhiro
取り上げるパターン

v 基本のパターン
•  Stamp Pattern
•  Bootstrap Pattern
•  Stack Deployment Pattern


                          ARAKI Yasuhiro
このハンズオンのための準備

v ⾃自分のAWSシステム
 v Route53,  ELB,  RDS,  EC2を使います
v インストール
 v CloudFormation(CFN)のコマンドラインツール
   (必須)
 v テキストエディタ(必須)
 v JSONエディタ(任意)

                          ARAKI Yasuhiro
CloudFormationのコマンドラインツール

v https://s3.amazonaws.com/cloudformation-‐‑‒cli/
   AWSCloudFormation-‐‑‒cli.zip




                                  ARAKI Yasuhiro
進め⽅方

v VPCをコンソールでEccubeをつかった
  3Tier  Webサイトを作ります
v 同じことを実現する
  CFNT(CloudFormation  Template)を
  作ります


                     ARAKI Yasuhiro
テンプレート

v https://s3-‐‑‒ap-‐‑‒northeast-‐‑‒1.amazonaws.com/
   arakisa/CloudFormation/eccube-‐‑‒araki-‐‑‒
   classic09.json  
   v ⾃自分のシステムが無い⽅方は、これを起動してシステムをつくっ
      ておきましょう。




                                     ARAKI Yasuhiro
Stampパターン
            v ブート領領域⽤用のEBSおよび、
               仮想サーバが利利⽤用している
               全てのEBSをそのまま保存
               する形でAmazon  Machine  
               Image  (AMI)を作成できる。
            v AMIから同⼀一設定のEC2イ
               ンスタンスを⼤大量量に⽤用意で
               きる。  



                 ARAKI Yasuhiro
マネージメントコンソールでAMI作成




             ARAKI Yasuhiro
AMIに“Image  Name”をつける




                ARAKI Yasuhiro
作成したAMIの確認




             ARAKI Yasuhiro
Bootstrapパターン

                v AMIの⼀一部を修正し
                   て使⽤用する。
                 v user-‐‑‒data
                 v cloud-‐‑‒init




                       ARAKI Yasuhiro
user-‐‑‒dataを試す

#!/bin/sh
yum  install  httpd  -‐‑‒y     シバンから始まった内容のときは
                                シェルスクリプトとして動作する	
service  httpd  start

v 内容の確認
   curl  http://169.254.169.254/latest/user-‐‑‒data  

                                 ARAKI Yasuhiro
user-‐‑‒data




               ARAKI Yasuhiro
Cloud-‐‑‒init

v Linuxでのシステム管理理のためによく⾏行行わ
  れる作業のための書式
     v packages:
     v runcmd:

全容の確認について
http://bazaar.launchpad.net/~∼cloud-‐‑‒init-‐‑‒dev/cloud-‐‑‒init/trunk/files/441/doc/examples/


                                                              ARAKI Yasuhiro
cloud-‐‑‒initを試す
#cloud-‐‑‒config
packages:
-‐‑‒  httpd
-‐‑‒  git
  
runcmd:
-‐‑‒  [  /etc/init.d/httpd,  restart  ]




                                          ARAKI Yasuhiro
cloud-‐‑‒configを試す




                    ARAKI Yasuhiro
Stack  Deploymentパターン

              v システム単位で実施
              v CloudFormationテン
                 プレートを⽤用意
                v ⼀一発で作成できる。
                v ⼀一度度に削除できる  




                   ARAKI Yasuhiro
CloudFormationテンプレート作成3種

v AWS  CloudFormation  User  Guideを読む
v http://aws.amazon.com/jp/
   cloudformation/aws-‐‑‒cloudformation-‐‑‒
   templates/のサンプル流流⽤用
v CloudFormerを使う⽅方法  
  v AWSリソースからCloudFormationテンプレート
    を作成する

                            ARAKI Yasuhiro
CloudFormer

v http://bit.ly/TokyoCloudFormer




                         ARAKI Yasuhiro
IAMの許可




         ARAKI Yasuhiro
Cloudformerの準備(確認)




               ARAKI Yasuhiro
準備

v S3のバケット
v AWS上のシステム
 v EC2+ELBあたりがおすすめ




                  ARAKI Yasuhiro
CloudFormerの使⽤用




                     URLをクリックする	




                  ARAKI Yasuhiro
リージョンの選択




           ARAKI Yasuhiro
テンプレートに含めたいリソースの選択

v Route53,  ELB,  EC2,  RDS,  Security  
  Group..のように含めたいリソースを選択
v 漏漏れにはやり直せばいいので気楽に。




                          ARAKI Yasuhiro
サマリの確認




         問題なければ	
  Con(nue	
  を選ぶ	




                  ARAKI Yasuhiro
S3にテンプレート保存




  S3内のファイルを確認しましょう	
                       ARAKI Yasuhiro
⾃自習

v 作成したCFTからシステム再現してみよう
 1.  元のシステムを動かしたまま
 2.  別のリージョンへの再現




                ARAKI Yasuhiro
CloudFormerから⼀一歩進むために

v 本ハンズオンで使うCFT
 v http://arakisa.s3.amazonaws.com/
   CloudFormation/eccube-‐‑‒araki-‐‑‒
   classic01.json
   v そのままでは動きません!修正して使います。




                          ARAKI Yasuhiro
CloudFormerから⼀一歩進むために

v CloudFormerでは。。
  v 同じ設定の単純繰り返し
  v ⼀一部⼿手作業の必要性
→CloudFormationテンプレートを修正しよう!
  1.    AMIの指定
  2.    パラメータの追加と利利⽤用
  3.    user-‐‑‒dataの追加
  4.    R53をつかってELBのCNAMEを⼀一定に

                         ARAKI Yasuhiro
AMIの指定

v “ImageId”:  “ami-‐‑‒     "instanceib3ba90b3":  {
                                      "Type":  "AWS::EC2::Instance",
   xxxxxx”  を修正                       "Properties":  {
                                          "AvailabilityZone":  "ap-‐‑‒northeast-‐‑‒1a",
   v ⾃自分が作成したAMI                         "DisableApiTermination":  "FALSE",
      IDに変更更                              "ImageId":  "ami-‐‑‒9057e591",
                                          "InstanceType":  "m1.small",
                                          "KernelId":  "aki-‐‑‒44992845",
                                          "Monitoring":  "true",




                                          ARAKI Yasuhiro
Parametersの指定

v ELBが使⽤用し、Route53に登録するFQDNを指定
   するためのSiteURL。
v eccubeが使⽤用するインスタンスタイプを選択する
   ためのInstanceType。
v RDS
 v バックアップ時間を決めるBackupWindow
 v データベース接続に使うユーザ名を指定する  DBUser
 v データベース接続に使うパスワードを指定すDBPass

                   ARAKI Yasuhiro
パラメータの追加

v https://gist.github.com/armaniacs/
  4752642#file-‐‑‒parameters-‐‑‒json




                         ARAKI Yasuhiro
user-‐‑‒dataの追加

v AWS::EC2::Instance中で”UserData”を
  使うとuser-‐‑‒dataを指定可能
v AMI中の/home/ec2-‐‑‒user/cdp/eccube/
  data/config/config.php  に含まれる内容
  を新たに設定したSiteURLやデータベース
  ユーザで置換する

                       ARAKI Yasuhiro
user-‐‑‒dataの追加(2)

v https://gist.github.com/armaniacs/
  4752642#file-‐‑‒userdata-‐‑‒json




                         ARAKI Yasuhiro
R53をつかってELBのCNAMEを一定に	

v ⽬目的:システムに別々のDNS名を与えて、
  システム単位でのテストを⾏行行う
v ⽅方法
   v “AWS::Route53::RecordSet”の決め打ちし
     ているFQDNをSiteURLを使うように変更更
https://gist.github.com/armaniacs/4752642#file-‐‑‒
r53-‐‑‒params-‐‑‒json

                                 ARAKI Yasuhiro
編集後のCFTの確認
 v 指定したパラメータは、cfn-‐‑‒validate-‐‑‒
    templateコマンドを使って確認  
     v PARAMETERSで指定したパラメータが表⽰示され
       ているか?
$ cfn-validate-template --template-file ファイル名	
 
PARAMETERS SiteURL           xxxxx.araki.in false Name of a FQDN for ec-site.	
 
PARAMETERS BackupWindow 18:30-19:00 false The daily time range during
      which automated backups	
 
PARAMETERS DBPass             eccube_db      false RDS password	
 
PARAMETERS InstanceType m1.small              false WebServer EC2 instance type	
 
PARAMETERS DBUser             eccube_db      false RDS user	
 
                                                  ARAKI Yasuhiro
ここまでのテンプレート例例

v https://s3-‐‑‒ap-‐‑‒northeast-‐‑‒1.amazonaws.com/
   arakisa/CloudFormation/eccube-‐‑‒araki-‐‑‒
   classic09.json  




                                     ARAKI Yasuhiro
CFNをつかったシステム作成
v マネージメントコンソールから
v CLIから
 v cfn-‐‑‒create-‐‑‒stack
 v cfn-‐‑‒describe-‐‑‒stack-‐‑‒events

 v $  cfn-‐‑‒create-‐‑‒stack  test-‐‑‒0818a  -‐‑‒-‐‑‒template-‐‑‒url  https://
    s3-‐‑‒ap-‐‑‒northeast-‐‑‒1.amazonaws.com/arakisa/
    CloudFormation/eccube-‐‑‒araki-‐‑‒classic09.json  -‐‑‒-‐‑‒
    parameters  "SiteURL=test-‐‑‒0818a.araki.in"


                                                ARAKI Yasuhiro

Jaws−横浜ハンズオンーCloudFormation 1/3