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

  • 0
    いいね
  • 0
    コメント

    前提条件

    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}
    

    完了