shellの準備
APIの実行をするための設定をするshellを準備します。
作業ディレクトリを作成および環境変数の設定、サービスの認証のための2つのスクリプトの作成、および格納方法について説明します。
-
作業ディレクトリを作成します。
ユーザーのホームディレクトリ配下に作業ディレクトリを新規作成し、移動します。
$ mkdir <任意の作業ディレクトリ名>
$ cd <任意の作業ディレクトリ名>
-
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)」でのみ提供されます。
-
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"には「パスワード認証」「証明書+パスワード認証」の両パターンのコマンドを記載しています。必要に応じて不要な行をコメントアウトして使用してください。
- 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 "=== ここまで、取得された認証トークン ==="
-
確認
作成したスクリプトを確認します。
$ ls get_global_token.sh get_token.sh init.sh init_global.sh