既存EC2をベースに起動テンプレートを作る

AWS,EC2

EC2起動テンプレートの作り方

前提条件

  • 既存のEC2から取得した構成情報をベースに、起動テンプレートを作る方法を紹介します。
  • 今回の操作には、aws cli、vi を使います。私の実行環境は、Windows Subsystem for Linuxにインストールしたaws cli を使用しています。
  • Windows Subsystem for Linuxのインストール方法、aws cli のインストール方法は、下記の記事を参考にしてください。

既存EC2から構成情報を取得する

ec2 describe-instancesを使ったEC2の確認

  • 起動テンプレートのベースになるEC2を確認します。

$ aws ec2 describe-instances --instance-ids i-0a3d4cf56d0b0abcd
{
    "Reservations": [
        {
            "Groups": [],
            "Instances": [
                {
                    "AmiLaunchIndex": 0,
                    "ImageId": "ami-012ab123456789012",
                    "InstanceId": "i-0a3d4cf56d0b0abcd",
                    "InstanceType": "t3.nano",
** snip **

ec2 get-launch-template-dataを使った構成情報の取得

  • EC2から構成情報を取得します。
$ instance_id=i-0a3d4cf56d0b0abcd
$ ec2tag=niikawa-test-win1
$ aws ec2 get-launch-template-data --instance-id ${instance_id} > instance-data_${ec2tag}_${instance_id}.json

構成情報を編集してシンプル化する

viエディタを使ってシンプル化

  • ベースとなるEC2の構成情報から不要な情報を削除して、シンプル化します。
  • 私の場合、下記編集をしています。
    • EBSの"SnapshotId"を削除
    • NetworkInterfacesの"Description"、"Ipv6Addresses"、"PrivateIpAddresses"のブロック、"SubnetId"を削除
    • “ImageId"を削除(但し、起動テンプレート作成後追記必要となる)
    • “Placement"のブロックを削除("AvailabilityZone"、"GroupName"、"Tenancy")
    • 必要に応じて、TagSpecificationsの"Tags"をカスタマイズ

$ vi instance-data_niikawa-test-win1_i-0a3d4cf56d0b0abcd.json

構成情報をベースに起動テンプレートを作る

ec2 create-launch-templateを使った起動テンプレート作成

  • シンプル化した構成情報を元に起動テンプレートを作成します。

$ aws ec2 create-launch-template --launch-template-name niikawa-test-win1-template --cli-input-json file://instance-data_niikawa-test-win1_i-0a3d4cf56d0b0abcd.json
{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-0ea89491a563f94c8",
        "LaunchTemplateName": "niikawa-test-win1-template",
        "CreateTime": "2019-08-04T22:41:20.000Z",
        "CreatedBy": "arn:aws:iam::111122223333:user/niikawa1",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}
 

AWSコンソールを使った起動テンプレートの更新

起動テンプレートが作成されたことをチェック

  • 先ほどaws cli で作成した起動テンプレートが作成でき、AMI のID が空であること、その他指定した情報(インスタンスタイプ、キーペア等)が反映されていることを確認します。
 

起動テンプレートのAMIを更新する

  • 起動テンプレートで起動するためのAMIのIDを指定して、起動テンプレートのバージョンを更新します。
    • 「起動テンプレートバージョンの作成」を選択し、起動テンプレート名を選びます。
    • 必ず、「ソーステンプレートのバージョン」からバージョンを選択します。これ大事です。
    • 構成情報をシンプル化した時に削除した「AMI ID」にAMIのIDを入力します。
    • その他に更新する構成情報があれば追加して、更新します。

AWS,EC2

Posted by takaaki