Help us understand the problem. What is going on with this article?

[JAWS-UG CLI] OpsWorks #3 アプリケーションの作成

More than 3 years have passed since last update.

前提条件

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

0. 準備

まず変数の確認をします。

変数の確認
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

1. 事前作業

2. 本作業

作成

変数の設定
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}

3. 事後作業

変数の設定
ARRAY_OPSW_APP_IDS="${OPSW_APP_ID}" \
        && echo ${ARRAY_OPSW_APP_IDS}
コマンド
aws opsworks describe-apps \
        --app-ids ${ARRAY_OPSW_APP_IDS}

完了

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away