前提条件
OpsWorksへの権限
OpsWorksに対してフル権限があること。
AWS CLIのバージョン
以下のバージョンで動作確認済
- AWS CLI 1.11.14
コマンド
aws --version
結果(例):
aws-cli/1.11.102 Python/2.7.12 Linux/4.4.11-23.53.amzn1.x86_64 botocore/1.5.65
バージョンが古い場合は最新版に更新しましょう。
コマンド
sudo -H pip install -U awscli
- 準備
=======
まず変数の確認をします。
変数の確認
cat << ETX
AWS_DEFAULT_PROFILE: (0.1) ${AWS_DEFAULT_PROFILE}
OPSW_STACK_ID: (0.2) ${OPSW_STACK_ID}
OPSW_APP_NAME: (0.3) ${OPSW_APP_NAME}
OPSW_APP_SHORTNAME: (0.3) ${OPSW_APP_SHORTNAME}
OPSW_APP_TYPE: (0.4) ${OPSW_APP_TYPE}
OPSW_APP_SOURCE_TYPE: (0.5) ${OPSW_APP_SOURCE_TYPE}
OPSW_APP_SOURCE_URL: (0.5) ${OPSW_APP_SOURCE_URL}
OPSW_APP_ATTRIBUTES_AUTOBUNDLEONDEPLOY: (0.6) ${OPSW_APP_ATTRIBUTES_AUTOBUNDLEONDEPLOY}
OPSW_APP_ENV_VALUE: (0.7) ${OPSW_APP_ENV_VALUE}
OPSW_APP_ENV_KEY: (0.7) ${OPSW_APP_ENV_KEY}
OPSW_APP_ENV_SECURE: (0.7) ${OPSW_APP_ENV_SECURE}
ETX
結果(例):
AWS_DEFAULT_PROFILE: (0.1) opsworksFull-prjZ-mbp13
OPSW_STACK_ID: (0.2) <スタックのID>
OPSW_APP_NAME (0.3) Node.js Sample App
OPSW_APP_SHORTNAME (0.3) nodejs_sample_app
OPSW_APP_TYPE (0.4) other
OPSW_APP_SOURCE_TYPE: (0.5) git
OPSW_APP_SOURCE_URL: (0.5) https://github.com/awslabs/opsworks-windows-demo-nodejs.git
OPSW_APP_ATTRIBUTES_AUTOBUNDLEONDEPLOY: (0.6) true
OPSW_APP_ENV_VALUE: (0.7) admin@example.com
OPSW_APP_ENV_KEY: (0.7) APP_ADMIN_EMAIL
OPSW_APP_ENV_SECURE: (0.7) false
変数が入っていない、適切でない場合は、それぞれの手順番号について作業を
行います。
0.1. プロファイルの指定
プロファイルの一覧を確認します。
コマンド
cat ~/.aws/credentials \
| grep '\[' \
| sed 's/\[//g' | sed 's/\]//g'
結果(例):
iamFull-prjz-mbpr13
opsworksFull-prjZ-mbp13
変数の設定
export AWS_DEFAULT_PROFILE='opsworksFull-prjZ-mbp13'
0.2. スタック名の指定
変数の設定
OPSW_STACK_NAME='My Sample Stack (Linux)'
コマンド
OPSW_STACK_ID=$( \
aws opsworks describe-stacks \
--query "Stacks[?Name ==\`${OPSW_STACK_NAME}\`].StackId" \
--output text \
) \
&& echo ${OPSW_STACK_ID}
結果(例):
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
0.3. アプリケーション名の指定
変数の設定
OPSW_APP_NAME='Node.js Sample App'
変数の設定
OPSW_APP_SHORTNAME='nodejs_sample_app'
0.4. アプリケーションタイプの指定
変数の設定
OPSW_APP_TYPE='other'
0.5. アプリケーションソースの指定
変数の設定
OPSW_APP_SOURCE_TYPE='git'
変数の設定
OPSW_APP_SOURCE_URL='https://github.com/awslabs/opsworks-windows-demo-nodejs.git'
0.6. アプリケーション属性の指定
変数の設定
OPSW_APP_ATTRIBUTES_AUTOBUNDLEONDEPLOY='true'
0.7. アプリケーション環境の指定
変数の設定
OPSW_APP_ENV_VALUE='admin@example.com'
OPSW_APP_ENV_KEY='APP_ADMIN_EMAIL'
OPSW_APP_ENV_SECURE='false'
再確認
設定されている変数の内容を再確認します。
変数の確認
cat << ETX
AWS_DEFAULT_PROFILE: (0.1) ${AWS_DEFAULT_PROFILE}
OPSW_STACK_ID: (0.2) ${OPSW_STACK_ID}
OPSW_APP_NAME: (0.3) ${OPSW_APP_NAME}
OPSW_APP_SHORTNAME: (0.3) ${OPSW_APP_SHORTNAME}
OPSW_APP_TYPE: (0.4) ${OPSW_APP_TYPE}
OPSW_APP_SOURCE_TYPE: (0.5) ${OPSW_APP_SOURCE_TYPE}
OPSW_APP_SOURCE_URL: (0.5) ${OPSW_APP_SOURCE_URL}
OPSW_APP_ATTRIBUTES_AUTOBUNDLEONDEPLOY: (0.6) ${OPSW_APP_ATTRIBUTES_AUTOBUNDLEONDEPLOY}
OPSW_APP_ENV_VALUE: (0.7) ${OPSW_APP_ENV_VALUE}
OPSW_APP_ENV_KEY: (0.7) ${OPSW_APP_ENV_KEY}
OPSW_APP_ENV_SECURE: (0.7) ${OPSW_APP_ENV_SECURE}
ETX
結果(例):
AWS_DEFAULT_PROFILE: (0.1) opsworksFull-prjZ-mbp13
OPSW_STACK_ID: (0.2) <スタックのID>
OPSW_APP_NAME (0.3) Node.js Sample App
OPSW_APP_SHORTNAME (0.3) nodejs_sample_app
OPSW_APP_TYPE (0.4) other
OPSW_APP_SOURCE_TYPE: (0.5) git
OPSW_APP_SOURCE_URL: (0.5) https://github.com/awslabs/opsworks-windows-demo-nodejs.git
OPSW_APP_ATTRIBUTES_AUTOBUNDLEONDEPLOY: (0.6) true
OPSW_APP_ENV_VALUE: (0.7) admin@example.com
OPSW_APP_ENV_KEY: (0.7) APP_ADMIN_EMAIL
OPSW_APP_ENV_SECURE: (0.7) false
-
事前作業
=========== -
本作業
=========
作成
変数の設定
OPSW_APP_SOURCE_STRING="Type=${OPSW_APP_SOURCE_TYPE},Url=${OPSW_APP_SOURCE_URL}" \
&& echo ${OPSW_APP_SOURCE_STRING}
変数の設定
OPSW_APP_ATTRIBUTES_STRING="AutoBundleOnDeploy=${OPSW_APP_ATTRIBUTES_AUTOBUNDLEONDEPLOY}" \
&& echo ${OPSW_APP_ATTRIBUTES_STRING}
変数の設定
OPSW_APP_ENV_STRING="Key=${OPSW_APP_ENV_KEY},Value=${OPSW_APP_ENV_VALUE},Secure=${OPSW_APP_ENV_SECURE}" \
&& echo ${OPSW_APP_ENV_STRING}
変数の確認
cat << ETX
OPSW_STACK_ID: ${OPSW_STACK_ID}
OPSW_APP_NAME: ${OPSW_APP_NAME}
OPSW_APP_TYPE: ${OPSW_APP_TYPE}
OPSW_APP_SHORTNAME: ${OPSW_APP_SHORTNAME}
OPSW_APP_SOURCE_STRING: ${OPSW_APP_SOURCE_STRING}
OPSW_APP_ATTRIBUTES_STRING: ${OPSW_APP_ATTRIBUTES_STRING}
OPSW_APP_ENV_STRING: ${OPSW_APP_ENV_STRING}
ETX
コマンド
aws opsworks create-app \
--stack-id ${OPSW_STACK_ID} \
--name "${OPSW_APP_NAME}" \
--type ${OPSW_APP_TYPE} \
--shortname ${OPSW_APP_SHORTNAME} \
--app-source "${OPSW_APP_SOURCE_STRING}" \
--no-enable-ssl \
--attributes "${OPSW_APP_ATTRIBUTES_STRING}" \
--environment "${OPSW_APP_ENV_STRING}"
結果(例):
{
"AppId": "508de020-bd2c-4f51-bd70-1b287c434a9b"
}
2.2. アプリケーションIDの取得
変数の設定
OPSW_APP_ID=$( \
aws opsworks describe-apps \
--stack-id ${OPSW_STACK_ID} \
--query "Apps[?Name == \`${OPSW_APP_NAME}\`].AppId" \
--output text \
) \
&& echo ${OPSW_APP_ID}
- 事後作業
===========
変数の設定
ARRAY_OPSW_APP_IDS="${OPSW_APP_ID}" \
&& echo ${ARRAY_OPSW_APP_IDS}
コマンド
aws opsworks describe-apps \
--app-ids ${ARRAY_OPSW_APP_IDS}