ユーザーデータを指定して EC2 構築時の定型作業を自動化する

 N番煎じもいいとこですが、自分用のメモとして残します。

 EC2 インスタンスを構築する際に、決まって行う作業があると思います。この作業をインスタンスを構築するたびに行うのは非常に手間だと思います。そこで「ユーザーデータ」という機能を使って、インスタンス構築時に自動的に定型作業を実施するようにします。

ユーザーデータを指定する場所

 マネージメントコンソールから行う場合は、下記で指定することができます。「高度な詳細」を押さないと、設定項目が出てこないのでご注意ください。もちろん CLI からインスタンスを構築する際も、ユーザーデータを利用することができます。

f:id:ketancho_jp:20180612065700p:plain

何をかくか

 こちらは「定型作業」が何かによって変わってきますが、今回は

  • ホスト名の変更
  • タイムゾーンの変更
  • 言語設定
  • yum update

を自動化したいと思います。

#!/bin/bash

# ホスト名
sed -i 's/^HOSTNAME=[a-zA-Z0-9\.\-]*$/HOSTNAME=udemy-aws-14days-db-1a/g' /etc/sysconfig/network
hostname 'udemy-aws-14days-db-1a'

# タイムゾーン
cp /usr/share/zoneinfo/Japan /etc/localtime
sed -i 's|^ZONE=[a-zA-Z0-9\.\-\"]*$|ZONE="Asia/Tokyo”|g' /etc/sysconfig/clock

# 言語設定
echo "LANG=ja_JP.UTF-8" > /etc/sysconfig/i18n

# yum update
yum update -y

こちらをユーザーデータに記載することで、期待する状態でインスタンスが構築されます。

まとめと今後

 ユーザーデータで Ansible を呼び出して、Play Book に従って構築!的なことにチャレンジしてみたいです!(Chef しか使ったことなく、Ansible 使ったことない人です。)