まずは触れるだけの記事。
やりたいこと
インスタンスに対して、WordPressの初期インストールを終わらすスクリプトを流し込む。
準備
今回はこちらで配布しているAMIより立ち上げを行い、WordPressの初期インストールを終わらすスクリプトを流し込みます。
Run Commandを使うにはamazon-ssm-agent.serviceが必要ですが、こちらのAMIのベースはamazon linux2なので、もともとssmが入っています。
ssmを使うためにはインスタンスにIAMロールが必要なため、インスタンスへ割り当てます。
インスタンスを右クリック、【インスタンスの設定】→【IAM ロールの割り当て/置換】より、この画面に移ります。
こちらで、対象のインスタンスにロールを割り振ってあげます。とりあえずテストでフルアクセスの権限を付与しました。
今度はインスタンスに入り、ssmエージェントを立ち上げます。
$ systemctl start amazon-ssm-agent.service
これで使用する準備は完了。
Run Commandでシェルスクリプトを実行してみる。
左上のサービスよりssmを選択します。
左の【アクション】→【Run Command】を選択。
実行されたコマンドが一覧で表示されますが、実行したことがなければ何も表示が無いはず。
右上のコマンドの実行を押してパラメータを埋めていきます。
コマンドのドキュメント
いろいろ実行できるものが選べますが、今回はシェルスクリプトを実行するので、AWS-RunShellScriptを選択
ターゲット
対象のインスタンスを選択してください。一気に全部にながしこんでやるぜー!って場合には複数選択もできます。多分、最大数は50っぽいです。(0個のエラーメッセージで0-50個選択しろと言われる。)
コマンドのパラメータ
実行したいスクリプトを入れます。今回はこんな感じで入れてみました。
#!/bin/sh # IP取得 HOST_IDENTIFIRE=`curl -q http://169.254.169.254/latest/meta-data/public-ipv4` # サイト情報 SITE_URL="http://$HOST_IDENTIFIRE" SITE_TITLE="cloudadvisor" ADMIN_USER="cloudadvisor" while true do ADMIN_PASS=`cat /dev/urandom | tr -dc "[:graph:]" | fold -w 18 | head -n 1000 | grep -e '[0-9]' | grep -e '[a-z]' | grep -e '[A-Z]' | grep -e '[!-/][:-@][\[-\`][\{-~]' | head -n 1` if [ "${ADMIN_PASS}" != "" ]; then break fi done MAIL="xxxxxxxxxxxxxxxxxx@xxxx.com" # プラグイン情報 export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxxxxxxxx export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx export AWS_DEFAULT_REGION=ap-northeast-1 export AWS_DEFAULT_OUTPUT=text S3_PLUGIN="s3://xxxxxxxxxxxxxxxxxxxxxxxx" PLUGIN_INSTALL_PATH="xxxxxxxxxxxxxxxxxxxxxxxx" # wp-cliインストール which wp > /dev/null 2>&1 if [ $? != 0 ]; then wget -O /usr/local/bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar chmod +x /usr/local/bin/wp fi # 初期インストール RES=`wp core install --path=/var/www/html/public_html --url=${SITE_URL} --title=${SITE_TITLE} --admin_user=${ADMIN_USER} --admin_password=${ADMIN_PASS} --admin_email=${MAIL}` if [[ ! `echo "${RES}" | grep "already"` ]]; then echo "${RES}" echo "WORDPRESS USER : ${ADMIN_USER}" > /root/wordpress.txt echo "WORDPRESS PASS : ${ADMIN_PASS}" >> /root/wordpress.txt fi echo ${RES} # プラグインインストール&有効化 aws s3 cp ${S3_PLUGIN} ${PLUGIN_INSTALL_PATH} wp plugin activate --path="/var/www/html/public_html" "xxxxxxxxxxxxxxxxxx"
初期インストールとS3に置いてあるプラグインを取ってきて有効化するスクリプトです。 サイトのURLはipを取ってきています。
まぁ、スクリプトの解説は本題ではないのでこちらを記入。
実行を押したあとに左のRun Commandへ。一覧へ実行されているのがわかります。
しばらくすると完了してステータスに成功と出れば流し込めてます。
準備が完了していれば複数台に一気にコマンドを流し込めるので便利ですね。