ハンズオン(簡易版): VPC入門

2.1. ユーザデータの作成 (httpd: handson-cli-ec2-httpd-userdata)

目的

ユーザデータ名"handson-cli-ec2-httpd-userdata"を作成します。

パラメータの指定

作業に必要なパラメータを変数に格納をします。

1. ユーザデータ用ディレクトリ

ユーザデータ用ディレクトリを指定します。

変数の設定:

DIR_USER_DATA="${HOME}/environment/conf-handson-cli-ec2"
  • 今回は"${HOME}/environment/conf-handson-cli-ec2"をユーザデータ用ディレクトリとします。

ディレクトリが存在することを確認します。

コマンド:

ls -d ${HOME}/environment/conf-handson-cli-ec2

結果(例:存在する場合):

${HOME}/environment/conf-handson-cli-ec2

存在しない場合は作成します。

コマンド:

mkdir -p ${HOME}/environment/conf-handson-cli-ec2

2. ユーザデータファイル名

ユーザデータファイル名を指定します。

ユーザデータの名称を指定します。

変数の設定:

USER_DATA_NAME='handson-cli-ec2-httpd-userdata'

変数の設定:

FILE_USER_DATA="${DIR_USER_DATA}/${USER_DATA_NAME}.bash" \
  && echo ${FILE_USER_DATA}

結果(例):

${HOME}/environment/conf-handson-cli-ec2/handson-cli-ec2-httpd-userdata.bash

各変数に正しいパラメータ値が格納されていることを確認します。

変数の確認:

cat << END

  # 1. DIR_USER_DATA:"${HOME}/environment/conf-handson-cli-ec2"
       DIR_USER_DATA="${DIR_USER_DATA}"
  # 2. FILE_USER_DATA:"${HOME}/environment/conf-handson-cli-ec2/handson-cli-ec2-httpd-userdata.bash"
       FILE_USER_DATA="${FILE_USER_DATA}"

END

手順

ユーザデータファイルを作成します。

コマンド:

cat << EOF0 > ${FILE_USER_DATA}
#!/bin/bash
yum -y update

EC2_METADATA_SECOND='600'

EC2_METADATA_TOKEN=\$( \\
  curl -s \\
    -X PUT "http://169.254.169.254/latest/api/token" \\
    -H "X-aws-ec2-metadata-token-ttl-seconds: \${EC2_METADATA_SECOND}" \\
)

EC2_METADATA_HEADER="X-aws-ec2-metadata-token: \${EC2_METADATA_TOKEN}"

EC2_AZ_NAME=\$( \\
  curl -s -H "\${EC2_METADATA_HEADER}" \\
    http://169.254.169.254/latest/meta-data/placement/availability-zone \\
)

EC2_INSTANCE_ID=\$( \\
  curl -s -H "\${EC2_METADATA_HEADER}" \\
    http://169.254.169.254/latest/meta-data/instance-id \\
) 

# setup httpd
yum install -y httpd
systemctl start httpd.service
systemctl enable httpd.service

# setup contents
cat << EOF > /var/www/html/index.html
<!DOCTYPE html>
<title>AZ: \${EC2_AZ_NAME}</title>
<h1>AZ: \${EC2_AZ_NAME}</h1>
<p>ID: \${EC2_INSTANCE_ID}</p>
EOF

EOF0

cat ${FILE_USER_DATA}

結果(例):

#!/bin/bash
yum -y update

EC2_METADATA_SECOND='600'

EC2_METADATA_TOKEN=$( \
  curl -s \
    -X PUT "http://169.254.169.254/latest/api/token" \
    -H "X-aws-ec2-metadata-token-ttl-seconds: ${EC2_METADATA_SECOND}" \
)

EC2_METADATA_HEADER="X-aws-ec2-metadata-token: ${EC2_METADATA_TOKEN}"

EC2_AZ_NAME=$( \
  curl -s -H "${EC2_METADATA_HEADER}" \
    http://169.254.169.254/latest/meta-data/placement/availability-zone \
)

EC2_INSTANCE_ID=$( \
  curl -s -H "${EC2_METADATA_HEADER}" \
    http://169.254.169.254/latest/meta-data/instance-id \
)

# setup httpd
yum install -y httpd
systemctl start httpd.service
systemctl enable httpd.service

# setup contents
cat << EOF > /var/www/html/index.html
<!DOCTYPE html>
<title>AZ: ${EC2_AZ_NAME}</title>
<h1>AZ: ${EC2_AZ_NAME}</h1>
<p>ID: ${EC2_INSTANCE_ID}</p>
EOF

完了確認

「ユーザデータファイル名"${HOME}/environment/conf-handson-cli-ec2/handson-cli-ec2-httpd-userdata.bash"が存在する。」ことを確認します。

コマンド:

ls ${FILE_USER_DATA}

結果(例):

${HOME}/environment/conf-handson-cli-ec2/handson-cli-ec2-httpd-userdata.bash