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に変換させることが可能です。
構文
!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
注記
スクリプトの中にパラメーターをもつパターンの記述例がドキュメントで説明されています。
課題
WordPressがインストールされた環境をデプロイしてください。
ユーザーデータの更新にはEC2を停止する必要があります。CloudFormationで更新すると自動でEC2が停止しユーザーデータを更新した後、EC2が起動します。
これでWordPressが自動でインストールされたEC2を起動できました。
テンプレートファイル