EC2インスタンス作成時、初期設定自動化

概要

EC2のインスタンスの新規作成時「Amazon Linux2」で作成する際、作成時に初期設定をシェルスクリプと経由で実行する方法。例としてApacheをインストールしてウェブサーバーとして設定。

 

前提条件

・AWSアカウントを所持していること。

 

新規インスタンス作成

① AWSマネジメントコンソールから「EC2」を検索し「EC2」を選択します。

 

② 「インスタンスを起動」→「インスタンスの起動」をクリックします。

 

③ 「Amazon Linux2」を選択します。

 

④ インスタンスタイプの選択し、「次のステップ:インスタンスの詳細設定」をクリックします。

 

⑤ インスタンスの詳細の設定、「ユーザーデータ」にシェルコマンドの入力します。

 

⑥ 初期設定の入力例は以下の通りです。

#!/bin/bash

## パッケージの更新
##----------------------------------------------------------------------------
sudo yum update -y
 

## ホスト名の変更(hostnameを任意の値に変更)
##----------------------------------------------------------------------------
sudo sed -i 's/^HOSTNAME=[a-zA-Z0-9\.\-]*$/HOSTNAME=(hostname)/g' /etc/sysconfig/network
hostname '(hostname)'

## タイムゾーンの変更
##----------------------------------------------------------------------------
# ローカルタイムを日本に変更
sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime

# ハードウェアクロックを日本に変更
sudo sed -i "s/\"UTC\"/\"Japan\"/g" /etc/sysconfig/clock


## 文字コードを日本語に変更
##----------------------------------------------------------------------------
sudo sed -i "s/en_US\.UTF-8/ja_JP\.UTF-8/g" /etc/sysconfig/i18n
LANG=ja_JP.UTF-8


## パッケージの自動更新設定 (任意)
##----------------------------------------------------------------------------
# インストール
sudo yum install yum-cron -y

# 有効化
sudo chkconfig yum-cron on

# 自動更新設定
sudo sed -i "s/^apply_updates.*$/apply_updates = yes/g" /etc/yum/yum-cron.conf

# 起動
sudo service yum-cron start


## 新規ユーザー「test-user」(サンプル)を作成し「ec2-user」を削除(任意)
##----------------------------------------------------------------------------
# 新規ユーザーの作成
sudo useradd test-user

# 新規ユーザー用の.sshディレクトリの作成
sudo mkdir /home/test-user/.ssh

# ec2-userの用のauthorized_keysをコピー
sudo cp -a /home/ec2-user/.ssh/authorized_keys /home/test-user/.ssh/

# パーミッションの変更
sudo chmod 700 /home/test-user/.ssh
sudo chmod 600 /home/test-user/.ssh/authorized_keys

# オーナーの変更
sudo chown -R test-user:test-user /home/test-user/.ssh

# sudoの許可
sudo bash -c "echo 'test-user     ALL=(ALL)       NOPASSWD:ALL' >> /etc/sudoers"

# ec2-userの削除
userdel -r ec2-user


## Apacheのインストール(任意)
##----------------------------------------------------------------------------
sudo yum install httpd -y 
sudo chkconfig httpd on

⑦ 「確認と作成」をクリックします。

 

⑧ 「起動」をクリックします。

⑨ 既存のキーペアを選択し「インスタンスの作成」をクリックします。
(作成していない場合は新規作成を実施してください)

 

⑩ 作成ステータスで「インスタンスの表示」をクリックします。

 

設定確認

① 自動設定した項目の確認をします。

# ホスト名の確認
hostname

# タイムゾーンの確認 
cat /etc/sysconfig/i18n
echo $LANG

# ローカルタイムの確認 (JTS-9と表示されればOK)
strings /etc/localtime

# yumの確認
yum check-update
yum list installed | grep yum-cron

# Apacheの確認
httpd -v