AWS Systems Manager Automation AWS-ExtendEbsVolume ランブックを使用して、EBS ボリュームを拡張してみた

AWS Systems Manager Automation AWS-ExtendEbsVolume ランブックを使用して、EBS ボリュームを拡張してみた

Clock Icon2024.12.02

はじめに

テクニカルサポートの 片方 です。

SSM オートメーションランブックの AWS-ExtendEbsVolume を利用して、EBS ボリュームのサイズを変更したいと思います。
こちらを利用することで、OS 内で行う作業も自動で実施してくれるので便利です。

注意点としては、以下です。

  • マネージドノードとして登録済み
  • 対象ノードが起動中
  • サポートされているファイルシステムは xfs、Ext4、NTFS

やってみた

今回 SSM のマネージドノードに登録する方法は割愛させて頂きます。
前提として、実行するユーザーには以下のアクションが必要です。
もし、AutomationAssumeRole で実行させる場合には、以下をご参考にロール作成してください。

信頼関係
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "ssm.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
アタッチするポリシー例
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateSnapshot",
                "ec2:CreateTags",
                "ec2:DeleteSnapshot",
                "ec2:DescribeVolumes",
                "ec2:ModifyVolume",
                "ssm:DescribeInstanceInformation",
                "ssm:GetCommandInvocation",
                "ssm:SendCommand"
            ],
            "Resource": "*"
        }
    ]
}

Linux 編

今回は EBS を 8 ⇒ 30 GiB に拡張します。
マネージドノードに登録されるように Amazon Linux 2023 を起動させます。EC2 インスタンス ID と拡張対象の ルート EBS ボリューム ID をメモします。

03

01

AWS-ExtendEbsVolume オートメーションランブックの設定を行います。

02

対象の オートメーションランブック AWS-ExtendEbsVolume を選択して、オートメーションを実行するをクリックします。

04

Simple execution を選択して下部へスクロールします。

05

Linux OS の場合は以下を入力します。

  • VolumeId
  • MountPoint
  • SizeGib
  • InstanceId
  • AutomationAssumeRole (Optional)

06

入力が終わったら、下部へスクロールして Execute をクリックすれば終了です。
暫く待つと、Status が Success に変更しましたので、成功です!!

07

対象 EBS は 30 GiB に変更されていました。

08

それでは、パーティション拡張されているかお好みの方法で SSH 接続して確認します。
以下の通り、何故か拡張されていませんでした。

sh-5.2$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1       259:0    0  30G  0 disk
├─nvme0n1p1   259:1    0   8G  0 part /
├─nvme0n1p127 259:2    0   1M  0 part
└─nvme0n1p128 259:3    0  10M  0 part /boot/efi
sh-5.2$ df -h
Filesystem        Size  Used Avail Use% Mounted on
devtmpfs          4.0M     0  4.0M   0% /dev
tmpfs             1.9G     0  1.9G   0% /dev/shm
tmpfs             766M  416K  766M   1% /run
/dev/nvme0n1p1    8.0G  1.6G  6.4G  20% /
tmpfs             1.9G     0  1.9G   0% /tmp
/dev/nvme0n1p128   10M  1.3M  8.7M  13% /boot/efi
sh-5.2$

以下は再起動後に確認。成功してますね!

sh-5.2$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1       259:0    0  30G  0 disk
├─nvme0n1p1   259:1    0  30G  0 part /
├─nvme0n1p127 259:2    0   1M  0 part
└─nvme0n1p128 259:3    0  10M  0 part /boot/efi
sh-5.2$ df -h
Filesystem        Size  Used Avail Use% Mounted on
devtmpfs          4.0M     0  4.0M   0% /dev
tmpfs             1.9G     0  1.9G   0% /dev/shm
tmpfs             766M  412K  766M   1% /run
/dev/nvme0n1p1     30G  1.7G   29G   6% /
tmpfs             1.9G     0  1.9G   0% /tmp
/dev/nvme0n1p128   10M  1.3M  8.7M  13% /boot/efi
sh-5.2$

Windows 編

基本的に Linux 編と操作は同様ですが、EBS を 30 ⇒ 100 GiB に拡張します。
マネージドノードに登録されるように Windows Server 2022 を起動させます。EC2 インスタンス ID と拡張対象の ルート EBS ボリューム ID をメモします。

10

09

AWS-ExtendEbsVolume オートメーションランブックの設定を行います。

02

対象の オートメーションランブック AWS-ExtendEbsVolume を選択して、オートメーションを実行するをクリックします。

04

Simple execution を選択して下部へスクロールします。

05

Windows OS の場合は以下を入力します。

  • VolumeId
  • DriveLetter
  • SizeGib
  • InstanceId
  • AutomationAssumeRole (Optional)

11

入力が終わったら、下部へスクロールして Execute をクリックすれば終了です。
暫く待つと、Status が Success に変更しましたので、成功です!!
なお、DriveLetter に関する入力は "C" "c" と大小問わないので、どちらの記載方法でも実行可能であることを追加調査で確認してます。

12

対象 EBS は 100 GiB に変更されていました。

13

それでは、ボリューム拡張されているかお好みの方法で RDP 接続して確認します。
以下の通り拡張されています!成功です!

14

まとめ

EventBridge などと組み合わせると可能性が広がると思います。本ブログが誰かの参考になれば幸いです。

参考資料

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

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.