shellの準備

APIの実行をするための設定をするshellを準備します。

作業ディレクトリを作成および環境変数の設定、サービスの認証のための2つのスクリプトの作成、および格納方法について説明します。

  1. 作業ディレクトリを作成します。

    ユーザーのホームディレクトリ配下に作業ディレクトリを新規作成し、移動します。

    $ mkdir <任意の作業ディレクトリ名>
    $ cd <任意の作業ディレクトリ名>
  2. init.shとinit_global.shを作成します。

    現在のディレクトリにアカウント情報などを環境変数に設定するスクリプト"init.sh"と "init_global.sh"を作成します。

    重要: "init.sh"はリージョナルサービス、"init_global.sh"はグローバルサービスを利用するための環境変数の設定を行います。 リージョナルサービス、グローバルサービスの説明については「機能説明書」を参照してください。
    init.sh
    #!/bin/bash
    # アカウント情報.
    DOMAIN_NAME=<契約番号(ドメイン)>
    DOMAIN_ID=<ドメインID>
    TENANT_ID=<プロジェクトID>
    PROJECT_ID=$TENANT_ID
    USER_NAME=<ユーザー名>
    USER_PW=<パスワード>
    
    # エンドポイントショートカット.
    echo "EP初期設定"
    TOKEN=https://identity.<リージョン識別子>.cloud.global.fujitsu.com
    IDENTITY=$TOKEN
    NETWORK=https://networking.<リージョン識別子>.cloud.global.fujitsu.com
    COMPUTE=https://compute.<リージョン識別子>.cloud.global.fujitsu.com
    CEILOMETER=https://telemetry.<リージョン識別子>.cloud.global.fujitsu.com
    TELEMETRY=$CEILOMETER
    DB=https://database.<リージョン識別子>.cloud.global.fujitsu.com
    BLOCKSTORAGE=https://blockstorage.<リージョン識別子>\
    .cloud.global.fujitsu.com
    HOST_BLOCKSTORAGEV2=$BLOCKSTORAGE
    OBJECTSTORAGE=https://objectstorage.<リージョン識別子>\
    .cloud.global.fujitsu.com
    ORCHESTRATION=https://orchestration.<リージョン識別子>\
    .cloud.global.fujitsu.com
    LB=https://loadbalancing.<リージョン識別子>.cloud.global.fujitsu.com
    AUTOSCALE=https://autoscale.<リージョン識別子>.cloud.global.fujitsu.com
    IMAGE=https://image.<リージョン識別子>.cloud.global.fujitsu.com
    MAILSERVICE=https://mail.<リージョン識別子>.cloud.global.fujitsu.com
    NETWORK_EX=https://networking-ex.<リージョン識別子>.cloud.global.fujitsu.com
    DNS=https://dns.gls.cloud.global.fujitsu.com
    COMPUTE_SAP=https://compute-w.<リージョン識別子>.cloud.global.fujitsu.com
    KEYMANAGEMENT=https://keymanagement.<リージョン識別子>.cloud.global.fujitsu.com
    SOFTWARE=https://software.<リージョン識別子>.cloud.global.fujitsu.com
    VMIMPORT=https://vmimport.<リージョン識別子>.cloud.global.fujitsu.com
    VMEXPORT=https://import-export.<リージョン識別子>.cloud.global.fujitsu.com
    
    
    # 初期設定
    NAME_FORMAT="TES_$(date "+%m%d")_$(who am I | cut -d " " -f1)_"
    # その他
    alias curl='curl --tlsv1.2'
    SCRIPT_PATH=`pwd`
    RES_DIR=response
    RES_PATH=$SCRIPT_PATH/$RES_DIR
    init_global.sh
    #!/bin/bash
    # アカウント情報.
    DOMAIN_NAME=<契約番号(ドメイン)>
    DOMAIN_ID=<ドメインID>
    TENANT_ID=<プロジェクトID>
    PROJECT_ID=$TENANT_ID
    USER_NAME=<ユーザー名>
    USER_PW=<パスワード>
    
    # エンドポイントショートカット.
    echo "EP初期設定"
    TOKEN=https://identity.gls.cloud.global.fujitsu.com
    IDENTITY=$TOKEN
    CONTRACT=https://contract.gls.cloud.global.fujitsu.com
    BILL=https://billing.gls.cloud.global.fujitsu.com
    DNS=https://dns.gls.cloud.global.fujitsu.com
    CATALOG=https://catalog.gls.cloud.global.fujitsu.com
    
    # 初期設定
    NAME_FORMAT="TES_$(date "+%m%d")_$(who am I | cut -d " " -f1)_"
    # その他
    alias curl='curl --tlsv1.2'
    SCRIPT_PATH=`pwd`
    RES_DIR=response
    RES_PATH=$SCRIPT_PATH/$RES_DIR
    重要:
    • ドメインID、プロジェクト名、プロジェクトID、ユーザーIDなど本シェルで必要な情報についてはポータル-「IaaS 管理」をご確認いただき、記入ください。
    • リージョン識別子は「機能説明書」を参照し、自身の使用するリージョンに対応したリージョン識別子に書き換えて使用ください。
    • 本ガイドでは、cURLというコマンドライン・ツールを使用しています。本ガイドはcURLのバージョン7.45.0において動作を確認しています。
    • DNSサービスを利用する場合、以下の作業が必要です。
      • 「東日本リージョン1(jp-east-1)」にプロジェクトを作成し、DNSサービスを利用するユーザーをそのプロジェクトに登録してください。
      • リージョナルトークンを使用してください。
    • メール配信サービスは「東日本リージョン1(jp-east-1)」でのみ提供されます。
  3. get_token.shとget_global_token.shを作成します。

    サービスの認証を行うためのトークンを取得するスクリプト"get_token.sh"と "get_global_token.sh"を作成します。

    重要:
    • "get_token.sh"はリージョナルトークン、"get_global_token.sh"はグローバルトークンを取得するためのスクリプトです。利用するサービスにより、実行するスクリプトを選択してください。
    • 認証方式に「証明書+パスワード認証」を使用する場合は、cURL コマンド行に以下オプションを追加してください。

      --cert <クライアント証明書名> --key <クライアント証明書用秘密鍵名>

      本章に記載している"get_token.sh"と"get_global_token.sh"には「パスワード認証」「証明書+パスワード認証」の両パターンのコマンドを記載しています。必要に応じて不要な行をコメントアウトして使用してください。

      注:

      「証明書+パスワード認証」を利用する場合、事前にポータルにて認証方式の変更と、証明書発行を実施しておく必要があります。詳細については「ポータルユーザーズガイド」を参照ください。

      また、cURL コマンドで証明書を利用する場合はPEM形式への変換が必要となります。証明書の変換については証明書の形式変換を参照してください。

      本手順で記載しているcURLで使用している秘密鍵は証明書の形式変換の「暗号化されていない秘密鍵」を使用することを前提としています。

    get_token.sh
    #!/bin/bash
    ## トークンを取得するスクリプト
    . ~/<任意の作業ディレクトリ名>/init.sh
    TMPFILE=~/<任意の作業ディレクトリ名>/token.txt
    
    echo ""
    echo "****************************************"
    echo "**         トークン取得します         **"
    echo "**(トークン取得後、キーを表示します)**"
    echo "****************************************"
    echo ""
    echo '■設定内容'
    echo '  endpoint':$TOKEN
    echo '  domain_name':$DOMAIN_NAME
    echo '  domain_id':$DOMAIN_ID
    echo '  user_name':$USER_NAME
    echo '  user_pw':$USER_PW
    echo '  project_id':$PROJECT_ID
    
    echo "■CURL"
    echo 'curl -X POST '$TOKEN'/v3/auth/tokens -H "Content-Type:application/json" 
    -H "Accept:application/json" -d'
    echo '{"auth":{"identity":{"methods":["password"],"password":{"user":{"domain":
    {"name":"'$DOMAIN_NAME'"}, "name": "'$USER_NAME'", "password": "'"$USER_PW"'"}}},
    "scope": { "project": {"id": "'$PROJECT_ID'"}}}}' | jq .
    
    echo -n "***** Hit Enter Key *****" 
    
    read
    
    # パスワード認証を利用する場合
    curl -X POST -si $TOKEN/v3/auth/tokens -H "Content-Type: application/json" -H \
    "Accept:application/json" -d '{"auth":{"identity":{"methods":["password"],"password":
    {"user":{"domain":{"name":"'$DOMAIN_NAME'"}, "name": "'$USER_NAME'", "password": 
    "'"$USER_PW"'"}}}, "scope": { "project": {"id": "'$PROJECT_ID'"}}}}' | \
    awk '/X-Subject-Token/ {print $2}' > $TMPFILE | tr -d '\r\n'
    
    # 証明書+パスワード認証を利用する場合
    curl -X POST -si $TOKEN/v3/auth/tokens --cert <クライアント証明書名> --key \
    <クライアント証明書用秘密鍵名> -H "Content-Type: application/json" -H \
    "Accept:application/json" -d '{"auth":{"identity":{"methods":["password"],"password":
    {"user":{"domain":{"name":"'$DOMAIN_NAME'"}, "name": "'$USER_NAME'", "password": 
    "'"$USER_PW"'"}}}, "scope": { "project": {"id": "'$PROJECT_ID'"}}}}' | \
    awk '/X-Subject-Token/ {print $2}' > $TMPFILE | tr -d '\r\n'
    
    OS_AUTH_TOKEN=`cat $TMPFILE | tr -d '\r\n'`
    
    echo "=== ここから、取得された認証トークン ==="
    echo $OS_AUTH_TOKEN
    echo "=== ここまで、取得された認証トークン ==="
    get_global_token.sh
    #!/bin/bash
    ## トークンを取得するスクリプト
    . ~/<任意の作業ディレクトリ名>/init_global.sh
    TMPFILE=~/<任意の作業ディレクトリ名>/token.txt
    
    echo ""
    echo "****************************************"
    echo "**         トークン取得します         **"
    echo "**(トークン取得後、キーを表示します)**"
    echo "****************************************"
    echo ""
    echo '■設定内容'
    echo '  endpoint':$TOKEN
    echo '  domain_name':$DOMAIN_NAME
    echo '  domain_id':$DOMAIN_ID
    echo '  user_name':$USER_NAME
    echo '  user_pw':$USER_PW
    echo '  project_id':$PROJECT_ID
    
    echo "■CURL"
    echo 'curl -X POST '$TOKEN'/v3/auth/tokens -H "Content-Type:application/json" 
    -H "Accept:application/json" -d'
    echo '{"auth":{"identity":{"methods":["password"],"password":{"user":{"domain":
    {"name":"'$DOMAIN_NAME'"}, "name": "'$USER_NAME'", "password": "'"$USER_PW"'"}}},
    "scope": { "project": {"id": "'$PROJECT_ID'"}}}}' | jq .
    
    echo -n "***** Hit Enter Key *****"
    
    read
    
    # パスワード認証を利用する場合
    curl -X POST -si $TOKEN/v3/auth/tokens -H "Content-Type: application/json" -H \
    "Accept:application/json" -d '{"auth":{"identity":{"methods":["password"],"password":
    {"user":{"domain":{"name":"'$DOMAIN_NAME'"}, "name": "'$USER_NAME'", "password": 
    "'"$USER_PW"'"}}}, "scope": { "project": {"id": "'$PROJECT_ID'"}}}}' | \
    awk '/X-Subject-Token/ {print $2}' > $TMPFILE | tr -d '\r\n'
    
    # 証明書+パスワード認証を利用する場合
    curl -X POST -si $TOKEN/v3/auth/tokens --cert <クライアント証明書名> --key \
    <クライアント証明書用秘密鍵名> -H "Content-Type: application/json" -H \
    "Accept:application/json" -d '{"auth":{"identity":{"methods":["password"],"password":
    {"user":{"domain":{"name":"'$DOMAIN_NAME'"}, "name": "'$USER_NAME'", "password": 
    "'"$USER_PW"'"}}}, "scope": { "project": {"id": "'$PROJECT_ID'"}}}}' | \
    awk '/X-Subject-Token/ {print $2}' > $TMPFILE | tr -d '\r\n'
    
    OS_AUTH_TOKEN=`cat $TMPFILE | tr -d '\r\n'`
    
    echo "=== ここから、取得された認証トークン ==="
    echo $OS_AUTH_TOKEN
    echo "=== ここまで、取得された認証トークン ==="
  4. 確認

    作成したスクリプトを確認します。

    $ ls
    get_global_token.sh get_token.sh init.sh init_global.sh