こんにちは、cloudpack田村です。

5分で作ったスクリプトのメモ

  • 管理サーバから実行することを想定
  • (Amazon EC2インスタンスのNameタグ)は「prd-web」等を想定
  • IAMrole使用
  • jq使用
  • 並列実行風
#!/bin/bash
################
# Sync2DocRoot #
################

SYNCHOST=(`aws ec2 describe-instances --filters Name=tag-value,Values="(EC2インスタンスのNameタグ)*" | jq '.Reservations[].Instances[]|{PrivateIpAddress}' | grep "PrivateIpAddress" | awk '{print $NF}' | sed -e "s/"//g"`)

SRCDIR="(DocumentRootに配置するコンテンツのあるディレクトリ)"
DSTDIR="(WebサーバのDocumentRoot)"
#USER="root"

for ((i=0; i<${#SYNCHOST[*]}; i++))
do
  rsync -avc --delete -e 'ssh -c arcfour256 -o StrictHostKeyChecking=no' ${SRCDIR} ${USER}@${SYNCHOST[$i]}:${DSTDIR} &
done
wait

exit 0

参考

元記事はこちらです。
rsyncするインスタンスをAWS EC2のNameタグを元に判断する