Launch Templates を利用してインスタンスの起動を行う。

AWSEC2

Written by Kohei Yamada Posted on 2018/04/16



はじめに

re:Invent2017Launch Templates というのが発表されました。
Launch Templates for Amazon EC2 instances の紹介
これでEC2インスタンスの起動が簡単になりそうなので試してみました。


テンプレートの新規作成

まずはAWSコンソールからEC2サービスへ移動し、「インスタンス > Launch Templates」 から
[Create launch template] をクリックします。

LaunchTemplates01.png

するとテンプレート作成画面へ移動します。
今回は新規作成なので、「What would you like to do?」「Create a new template」 を選択し、「Launch template name」 にテンプレート名を入力したら以下は必要に応じて設定して行きます。
今回は画像の赤ラインが入ってるところを指定しています。

LaunchTemplates02.png

設定したら 「Create launch template」 をクリックして作成完了です。


テンプレートからインスタンス作成

「インスタンス > Launch Templates」 から先ほど作成したテンプレートにチェックを入れ、[アクション] をクリックして表示される 「Launch instance from template」 をクリックします。
すると 「Source launch template」 には先ほど指定したテンプレートIDが設定され、テンプレートを作成した際に指定したパラメータが入力されています。

LaunchTemplates03.png

ただ、ここで注意なのが 「Subnet」 です。テンプレートでは 「Network type」VPCClassic のどちらかを指定します。基本的にはVPCを指定する人がほとんどだと思いますが、その際にどのVPCかの指定ができません。なので、テンプレートから作成するときに作成したいVPC環境を指定するのですが、VPCIDを指定するのではなく、直接どのサブネットで起動させたいかをサブネットIDで指定します。
また、指定したサブネットがPublic向けである場合、サブネットのポリシーで 自動割り当てパブリック IP「はい」 になっていないとパブリックIPが付与されないので注意です。(テンプレートのNetwork Interfacesで意図的に設定していない場合)

LaunchTemplates04.png

問題なければ 「Launch instance from template」 をクリックして完了です。


テンプレートのバージョニング

Launch Template はバージョン管理ができます。そのため、もしテンプレートを更新した後でもバージョンを指定することで以前に設定していたパラメータを利用してインスタンスを起動させることができます。


テンプレートの更新

新規作成したのと同様に、「インスタンス > Launch Templates」 から
[Create launch template]をクリックします。

今回は、「What would you like to do?」「Create a new template version」 を選択します。

次に 「Launch template name」 で先ほど作成したテンプレート名を指定します。
また、「Source template」 ではベースとするテンプレートIDを指定し、またベースとするバージョンを指定します。

LaunchTemplates05.png

あとは 「Create launch template」 をクリックして作成完了です。
Versionsタブを見るとVersion「2」 ができているのが確認できます。

LaunchTemplates07.png


デフォルトバージョンの変更

デフォルトバージョンを変更することで、バージョンが指定されなかった場合のベースとなるテンプレートを設定することができます。

LaunchTemplates08.png

「インスタンス > Launch Templates」から先ほど作成したテンプレートにチェックを入れ、[アクション]をクリックして表示される「Set default version」をクリックします。

LaunchTemplates09.png

Default versionVersion2 に変更されました。

LaunchTemplates10.png


デフォルトバージョンとは?

さきほどデフォルトバージョンの変更を行いました。ですがこれってどこで使うものなのでしょうか?
インスタンスを起動する際に 「テンプレートからインスタンスを起動する」 を行った際にデフォルトで設定したバージョンが設定されているのかと思ったのですが、そうではないみたいです。

  • テンプレートからインスタンスを起動する スクリーンショット 2018-03-21 22.38.26.png

それではどんな時に活用されるのでしょう?
どうやら、Create Spot fleetAuto Scaling group を利用する場合、起動後にデフォルトバージョンがプリセットされているようです。

スクリーンショット 2018-03-23 23.16.54.png

  • Create Spot fleet
    スクリーンショット 2018-03-23 23.15.57.png

  • Auto Scaling group
    スクリーンショット 2018-03-23 23.16.31.png


高度な詳細 (Advanced Details)

テンプレートを作成する際に、シャットダウン動作やプレイスメントグループといった細かな設定を行うことができます。
今回は詳細については省略します。


おわりに

Launch Template でサーバー用途ごとにテンプレートを用意しておくとインスタンス起動がすぐ行えるのでとても便利だなと感じました。ただ、Subnetを毎回指定しないといけないのがちょっと。。。デフォルトバージョンも通常の起動では利用できなかったりするので、今後の改善に期待ですね。