Run Commandで行うログインしないEC2設定~CentOS6ディスク認識~

アイキャッチ AWS EC2

ご機嫌いかがでしょうか、豊崎です。

最近CentOSを利用する機会があり、
ルートディスクの認識についてRunCommandで対応をしましたので、
ここでご紹介させていただきます。

CentOSのディスクサイズについてはこちらを参照ください。

Run Commandを利用するときに必要なこと

  • ssm-agentがインストールされていること
  • EC2に必要なポリシーが割り当てられていること

早速実践

まずはEC2(ami-fa3d3f94を使用しました)をlaunchしましょう。
その際、ssm-agentをUserDataからインストールしておきましょう。
AWSの公式サイトにUserDataからのインストール手順が用意されています。

AWSマネジメントコンソールからlaunchする場合は以下画面で、

  • IAM Role
  • UserData

を設定しましょう。

ユーザデータにはssm-agentインストール用のスクリプトを記述します。
今回はCentOS64bit版に対応したスクリプトです。
リージョンによってURLがことなるので、ご注意ください。

#!/bin/bash
cd /tmp
curl https://amazon-ssm-ap-northeast-1.s3.amazonaws.com/latest/linux_amd64/amazon-ssm-agent.rpm -o amazon-ssm-agent.rpm
yum install -y amazon-ssm-agent.rpm

以下の矢印の箇所になります。

EC2_Management_Console

もちろんEBSのサイズは8GBよりも大きな値にしておきます。

EC2_Management_Console_5

さらに設定した「IAM Role」には「AmazonEC2RoleforSSM」ポリシーを割り当てておきます。

IAM_Management_Console

AWSマネジメントコンソールからEC2画面を開きRun Commandを選択します。
*日本語だと「コマンド履歴」となっているのが少しわかりづらいですね。

まずは現状から確認しましょう。

コマンドの実行から以下を選択し、実行をします。
コマンドのドキュメント:AWS-RunShellScript
ターゲットインスタンス:対象のEC2(複数台の指定が可能です)
*結果の出力は2500文字までなので、全文を確認したい場合はS3にログを出力してください。
Commands:以下

df -h
lsblk

結果を確認します。

EC2_Management_Console

ルートディスクを8GBしか認識していないので、
growrootをインストールし再起動することでルートディスクの認識をさせます。
*今回使用したamiにはcloud-initがインストールされてた為、再起動後のresize2fsは不要でした。

コマンドのドキュメント:AWS-RunShellScript
ターゲットインスタンス:対象のEC2
Commands:以下

curl -O http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -i epel-release-6-8.noarch.rpm
yum -y --quiet install dracut-modules-growroot
rpm -qa | grep grow
dracut --force --add growroot /boot/initramfs-$(uname -r).img
rm -f epel-release-6-8.noarch.rpm
reboot

改めてコマンドの実行から以下を選択し、ルートディスクを確認します。
コマンドのドキュメント:AWS-RunShellScript
ターゲットインスタンス:対象のEC2
Commands:以下

df -h
lsblk

EC2_Management_Console_と_defaults

ルートディスクが正しく認識していることが確認できました。

さいごに

RunCommandを利用することでサーバにログインすることなくルートディスクの認識を行わせることができました。
また、複数のサーバにまとめて操作を行うことができます
非常に簡単に利用できるところもポイントです。
構築にも、運用にも利用できるシーンは多いと思いますので、ぜひご活用ください。