どんな時の話?
AWSでコミュニティAMIを選択し、インスタンスを立ち上げる時・・・
「t3.micro」が選べなくなっている。
など、選べないインスタンスタイプがあるときにどうすればよいかの話です。
状況の確認
インスタンスタイプが選べない理由は2つあります。
・NVMeドライバがない。バージョンが足りない (実質karnerlのバージョンが足りない)
・ENA有効化されていない
1つずつ確認してみましょう。
実行環境を整える。
★対象のサーバーを操作するための、別のLinuxサーバー内でのセットアップーーーーーーーー
・パイソンを入れて、pip3を手に入れる。jqとは、awscliを編集するのに必要なパッケージなのでとりあえずいれておく。
yum install python3 jq
・awscliをインストール インスタンス情報の変更に使うため、awscliを入れる。
pip3 install awscli
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
NVMeドライバの確認方法
NVMeドライバは、kernel 3.19 以降であれば自動的に組み込まれています。
対象のサーバーにログインし、 ★t3.microを入れたいAMIのサーバー
uname -r
と打ち込んで、3.19以降が表示されれば大丈夫です。
Amazon Linuxの場合、2015.09のバージョンから、kernel 4.1.17が自動的に組み込まれているため、それ以前のAmazon Linuxの場合はアップデートが必要になります。
大丈夫そうということで一旦スルー。
ENAの確認と有効化
同じような話をすれば、 2016.09のイメージからAmazon LinuxにおいてENAが有効になりました。 なので、2015.09以降、2016.09以前のバージョンの場合は、 手動でENAを有効にする必要があります。
確認方法ですが、awscliは対象のインスタンスをシャットダウンした状態で変更をかけるので、 別のサーバーから(あるいはリモートマシンから)アクセスします。
AWSにログインできるようにします。
★別の操作用サーバー
# vi ~/.aws/credentials [default] aws_access_key_id = xxxxxxxxxxxxxx aws_secret_access_key = xxxxxxxxxxxx region=ap-northeast-1
次に以下のコマンドでenaの設定がどうなっているかを確認します。
# aws ec2 describe-instances --instance-ids i-xxxxx --query 'Reservations[].Instances[].EnaSupport'
長いですが、調べたいインスタンスのidをxxxxxxxxxxをいれてコマンドを打つと
[]
となっていたらoffになっているので
# aws ec2 modify-instance-attribute --instance-id i-xxxxx --ena-support
と入力することで、enaの設定をonにすることが出来ます。
先ほどのコマンドと同じものをもう一度入力して、
# aws ec2 describe-instances --instance-ids i-xxxxx --query 'Reservations[].Instances[].EnaSupport' [ true ]
と帰ってくればenaの設定は大丈夫です。
インスタンスを起動してみよう
上記の設定をいじったインスタンスから「イメージの作成」を押して、新しいAMIを作ります。 インスタンスの作成、マイ AMIの中から先ほど作ったAMIを選択すると、 「t3-micro」が選択できる!
ということで、設定を進めていき、インスタンスを作成すると、・・・
ステータスチェック : 1/2のチェックに合格しました。
何かがうまくいってないらしい。作業ログを確認していると、意味はよくわからないが、Karnelがうまく動いていない模様。
結局Kernelをアップデートする
(バージョン情報的には足りているような気がするんだが・・・?)
もう一度、対象のサーバーのインスタンスを開始、ログインして
★t3.microを入れたいAMIのサーバー
yum update -y
とすると、Karnelがアップデートされていきます。
もう一度、AMIを作成、t3microのインスタンスを作成すると、無事ログイン出来ました。