起動テンプレートにおける注意点や運用方法について考えてみた

起動テンプレートにおける注意点や運用方法について考えてみた

起動テンプレートにおける注意点や運用方法について、マネジメントコンソールの起動テンプレート作成画面から各項目について調査し、具体的なケースを考えてみました
Clock Icon2024.10.23

はじめに

こんにちは、アノテーションのなかたです。
今回は、起動テンプレートに関する注意点や運用方法について考えてみました。
マネジメントコンソールの起動テンプレート作成画面から各項目について調査し、具体的なケースを考えていく記事になります。

対象読者のイメージ

test
補足ですが、画像に表示されている項目はSSMマネージドインスタンスを作成するにあたって選択したものになります。

各セクションの説明と注意点

1. 起動テンプレート名と説明

スクリーンショット 2024-09-25 13.35.56

起動テンプレート名

そのまま、起動テンプレートの名前を表します。
どのような目的で作成されたテンプレートかを簡潔に示す名前が良いです。
あまり考えすぎなくても良いと思いますが、他のテンプレートと区別するために必要な要素は入れておくとわかりやすいと思います。

例えば
[目的]-[イメージ]-[補足]
ssm-managed-instance-al2023-spot

テンプレートバージョンの説明

こちらはテンプレートのバージョンに対する説明を入力する項目になります。

使い方として、前回のバージョンからの変更点を書いていくとわかりやすいです。
私は、Gitのコミットメッセージと同じのような感覚で書いています。

例えば
add: パブリックIP割り当てを有効化

起動テンプレートはバージョンごとに削除することができますが、デフォルトのバージョンは削除ができません。
要件として必ず指定したい要素がある場合には、デフォルトのバージョンとして指定するような活用法があると思います。
スクリーンショット 2024-10-19 3.20.05.png

また、デフォルトのバージョンや複数のバージョンを指定したい場合は、CLIからの操作がスムーズだと思います。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/manage-launch-template-versions.html

Auto Scaling のガイダンス

こちらを調査しても詳細が把握できなかったのですが、私が確認したところではAMIの指定が必須かどうかが変わるようでした。
スクリーンショット 2024-10-08 14.03.07

(オプション) Auto Scaling ガイダンス でチェックボックスをオンにすると、Amazon EC2 Auto Scaling で使用するテンプレートの作成に役立つガイダンスが Amazon EC2に提供されます。
https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/create-launch-template.html#create-launch-template-for-auto-scaling

参考になりそうなブログ

2. テンプレートタグソーステンプレート

スクリーンショット 2024-09-26 9.15.37
こちらは、起動テンプレート名と説明セクションの>ボタンから開くことができるテンプレートタグソーステンプレートのセクションです。

テンプレートタグ

こちらでは作成されるEC2インスタンスではなく、起動テンプレート自体に対してタグをつけることが可能です。

ソーステンプレート

こちらに別の起動テンプレートを指定することで、設定を持ってくることが可能です。
持ってきた上で項目を編集しても、元の起動テンプレートの値が書き変わるようなことはないため安心です。
プログラミングにおける値渡しのようなイメージです。

3. 起動テンプレートのコンテンツ

スクリーンショット 2024-09-25 13.36.37
こちらはAMIの指定画面になります。
起動テンプレートの作成条件として、AMIの指定が必須となっています↓

パラメータはオプション - 起動テンプレートのパラメータはオプションです。ただし、インスタンスの起動リクエストに必要なパラメータがすべて含まれている必要があります。例えば、起動テンプレートに AMI ID が含まれていない場合、この起動テンプレートでインスタンスを起動するときに AMI ID を指定する必要があります。

AMIを頻繁に変更するケースでは、毎回AMIを変更する必要がありますし、忘れる可能性も高いのであまり向いていません。
CloudFormation や CLI で対応するのが無難だと思います。


4. キーペア

スクリーンショット 2024-09-25 13.36.52
キーペアの設定画面です。
起動テンプレートの設定に含めないと設定した場合でも、インスタンスを起動する際に再度キーペアの設定が求められるのが注意点になります。


5. ネットワーク設定

ネットワークの設定画面です。
スクリーンショット 2024-09-25 13.37.14

サブネットの指定は、必須ではなく指定しないことも可能です。

サブネットの指定をしない場合の画面

スクリーンショット 2024-09-25 13.40.32

また、高度なネットワーク設定セクションを開くことでパブリックIPの自動割り当て等の項目を設定することが可能です。
パブリックIPの自動割り当ては、パブリックサブネットにおけるSSMマネージドインスタンスの追加で求められる選択肢の1つであるため、よく有効化しています。

6. ストレージ(ボリューム)

スクリーンショット 2024-09-26 9.14.46
ストレージの画面です。

[ストレージの設定] で、起動テンプレートで AMI を指定した場合、AMI にはルートボリューム ([ボリューム 1 (AMI ルート)]) を含む、1 つまたは複数のストレージボリュームが含まれます。オプションで、インスタンスにアタッチする追加のボリュームを指定できます。新しいボリュームを追加するには、[Add new volume] を選択します。

7. リソースタグ

リソースタグの画面です。
インスタンスだけでなく、ボリュームなどにもタグが付与できます。

スクリーンショット 2024-09-25 13.44.34

8. 高度な詳細

スクリーンショット 2024-09-25 13.38.02
高度な詳細画面です。
こちらで頻繁に設定する項目として、IAMインスタンスプロフィールがあります。

スクリーンショット 2024-09-25 10.58.14
テンプレートが作成されるとこのような画面が表示されます。
バージョンのドロップダウンリストに気づかずにパラメータを確認し、勘違いしやすいのが注意点です。

起動テンプレートからインスタンスの起動

画面右上のアクション > テンプレートからインスタンスを起動を選択します。
スクリーンショット 2024-09-25 10.58.30
ほとんどの項目は、起動テンプレートにて定義されているため、事前に入力された状態でインスタンスの起動画面が表示されます。
通常のEC2インスタンス起動画面と異なる点として、起動テンプレートではバージョンを指定する必要があります。
スクリーンショット 2024-09-25 10.58.42

起動テンプレートは、変更差分ごとにバージョニングをサポートしていて、どのバージョンからインスタンスを起動するか指定する必要があります。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/manage-launch-template-versions.html#describe-launch-template-version

ユースケース

起動テンプレートの設定により作業が省略できるユースケースを他にもいくつか考えてみました。

1. SSMマネージドインスタンスを作成したい

SSMマネージドインスタンスとしてインスタンスを作成するには、SystemManagerとの通信が可能なことやIAMインスタンスプロファイルなど設定が必要な項目が多くあります。
このようなケースにおいて、起動テンプレートにあらかじめ項目を設定しておくことでインスタンス作成の時間を短縮することができます。

2. 必須タグを設定したい

1つのAWSアカウントに対して複数のIAMロールを払い出し、複数人で検証アカウントを共有しているような環境を想定します。
このとき、Ownerタグを付け、値に名前を設定することで誰が作成したアカウントであるかを簡単に判断できるような運用が可能です。
しかし、タグの設定は忘れがちなため、指定された起動テンプレートからEC2インスタンスの起動を行うように運用することで、この問題を解消することができます。

おわりに

以上、起動テンプレートの各項目に対する説明でした。
起動テンプレートはAMI化するほどでもない簡易なテンプレートとしてとても役立つので、活用できるケースを増やしていきたいと考えています。

参考

https://dev.classmethod.jp/articles/ec2-launch-template-tag/
https://dev.classmethod.jp/articles/spotinstances-launch-templates/

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.