Run Commandで行うログインしないEC2設定~CentOS6ディスク認識~
ご機嫌いかがでしょうか、豊崎です。
最近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
以下の矢印の箇所になります。
もちろんEBSのサイズは8GBよりも大きな値にしておきます。
さらに設定した「IAM Role」には「AmazonEC2RoleforSSM」ポリシーを割り当てておきます。
AWSマネジメントコンソールからEC2画面を開きRun Commandを選択します。
*日本語だと「コマンド履歴」となっているのが少しわかりづらいですね。
まずは現状から確認しましょう。
コマンドの実行から以下を選択し、実行をします。
コマンドのドキュメント:AWS-RunShellScript
ターゲットインスタンス:対象のEC2(複数台の指定が可能です)
*結果の出力は2500文字までなので、全文を確認したい場合はS3にログを出力してください。
Commands:以下
df -h lsblk
結果を確認します。
ルートディスクを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
ルートディスクが正しく認識していることが確認できました。
さいごに
RunCommandを利用することでサーバにログインすることなくルートディスクの認識を行わせることができました。
また、複数のサーバにまとめて操作を行うことができます。
非常に簡単に利用できるところもポイントです。
構築にも、運用にも利用できるシーンは多いと思いますので、ぜひご活用ください。