メインコンテンツまでスキップ

WordPressのインストール

WordPressはユーザーデータに以下のスクリプトを指定してインストールします。

#!/bin/bash

dnf update -y
dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel mariadb105

wget http://ja.wordpress.org/latest-ja.tar.gz -P /tmp/
tar zxvf /tmp/latest-ja.tar.gz -C /tmp
cp -r /tmp/wordpress/* /var/www/html/
chown apache:apache -R /var/www/html

systemctl enable httpd.service
systemctl start httpd.service

yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
systemctl restart amazon-ssm-agent

CloudFormationでユーザーデータを指定するにはBase64でエンコードした文字列を指定する必要があります。

The user data script to make available to the instance. User data is limited to 16 KB. You must provide base64-encoded text. For more information, see Fn::Base64.

参照:UserData

Fn::Base64

Base64でエンコードした文字列を事前に作成して指定することも可能ですが、Fn::Base64組み込み関数を使用することでBase64に変換させることが可能です。

Fn::Base64

構文
!Base64 valueToEncode

valueToEncodeとして文字列を指定します。
スクリプトは改行を含むので、|を使い以下のように指定します。

      UserData: 
Fn::Base64: |
#!/bin/bash

dnf update -y
dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel mariadb105

wget http://ja.wordpress.org/latest-ja.tar.gz -P /tmp/
tar zxvf /tmp/latest-ja.tar.gz -C /tmp
cp -r /tmp/wordpress/* /var/www/html/
chown apache:apache -R /var/www/html

systemctl enable httpd.service
systemctl start httpd.service

yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
systemctl restart amazon-ssm-agent
注記

スクリプトの中にパラメーターをもつパターンの記述例がドキュメントで説明されています。

Base64 でエンコードされた UserData プロパティ

課題

WordPressがインストールされた環境をデプロイしてください。

ユーザーデータの更新にはEC2を停止する必要があります。CloudFormationで更新すると自動でEC2が停止しユーザーデータを更新した後、EC2が起動します。

これでWordPressが自動でインストールされたEC2を起動できました。

image.png

テンプレートファイル