API実行-コマンドライン編#

初期構築ガイドでは、初めて本サービスを利用される方向けにIaaSポータルを中心に仮想サーバーRHELを構築し、OS接続するまでの手順を説明しました。

本章では、構築済み仮想サーバーRHELを使用して、仮想サーバーの操作に関連するAPIの実行手順を説明します。

API実行の全体の流れ#

本ガイドで説明する全体の流れを以下に示します。

No 項目 説明
1 実行環境(RHEL)の準備 APIを実行する環境を準備します。
あらかじめ初期構築ガイドにしたがい、
仮想サーバーRHELを作成し、
OSに接続できることが前提となります。
2 curlコマンドの使用方法 本サービスのAPIを実行する上で必要となる
curlコマンドの使用方法を説明します。
3 トークンの取得方法 API利用時に必要となるトークンの取得方法を説明します。
4 エンドポイントの設定 APIを発行するエンドポイントについて説明します。
5 APIの実行方法 仮想サーバーに対するAPIの実行方法を説明します。
5.1 仮想サーバーの一覧情報取得 仮想サーバーの一覧情報を取得する方法を説明します。
5.2 仮想サーバーの状態確認 仮想サーバー一覧の状態を確認する方法を説明します。
5.3 仮想サーバーの停止 仮想サーバーの状態を確認し、仮想サーバーを
停止する方法を説明します。
5.4 仮想サーバーの起動 仮想サーバーの状態を確認し、仮想サーバーを
起動する方法を説明します。
5.5 仮想サーバーの削除 仮想サーバーの一覧を確認し、対象の仮想サーバーを
削除する方法を説明します。
5.6 仮想サーバーの作成 新規に仮想サーバーを作成する方法を説明します。
5.7 仮想サーバーの情報更新 作成した仮想サーバーの情報(ここでは仮想サーバー名)を
更新する方法を説明します。


1.実行環境(RHEL)の準備#

初期構築ガイドで構築した仮想サーバーRHELを使用して、APIを実行する手順を説明します。
本ガイドでは、仮想サーバーRHELからAPIを実行するため、必要なツールをOSにインストールします。
仮想サーバー接続を参照し、仮想サーバーにログインしてください。

1.1 rootユーザーへの変更#

以下のコマンドでrootユーザーへ変更します。

$ sudo su -


1.2 jqパッケージのインストール#

curlコマンドの出力結果を整形し、見やすくするため、jqパッケージをインストールします。 以下のdnfコマンドでインストールしてください。

# dnf install jq

以上で準備作業は完了です。この仮想サーバーからAPIを実行する方法を説明します。



2. curlコマンドの使用方法#

本サービスのリソースを操作するには、APIまたはGUIを利用できます。ここでは、APIでの方法を説明します。GUIでの操作は、以下を参照してください。

2.1 curlコマンドについて#

  • curl - transfer a URL
    curlコマンドは、次のプロトコルを使うために、サーバーに対してデータを転送するためのツールです。コマンド自体は、ユーザーとシステムのやり取りをせずに動作するように設計されています。
    本ガイドでは、HTTPSプロトコルを用いた操作方法について説明します。
    • [サポートプロトコル]
      DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP
  • 書式
    curl [オプション] [URL]
  • オプション
    curlコマンドには様々なオプションが利用できます。ここでは代表的なオプションを説明します。
オプション
(略称)
オプション
(意味)
内容
-d --data リクエストボディーを指定します。
-H
--header
ヘッダー情報を指定します。
-k --insecure セキュアーではないSSL接続および通信を実行することを
明示的に許可するためのオプションです。
-S --show-error エラーメッセージを表示します。
-s --silent 進捗やエラーメッセージを抑止します。
-X --request HTTPの場合、HTTPサーバーと通信するとき、リクエストメソッドを指定します。
メソッドの種類としては、GET、PUT、DELETE、POSTなどがあります。
リクエストURLを指定します。

本章で扱うcurlコマンドのメソッド、ヘッダー、ボディー、および操作についての関係は以下のようになります。POSTおよびPUTメソッドを使用する場合は、ボディーにJSON形式のデータを指定する必要があるため、ヘッダーに"Content-Type: application/json" を指定します。

メソッド
(-X指定)
ヘッダー
(-H指定)
ボディー
(-d指定)
操作例
-X GET -H "X-Auth-Token: トークン情報"
※トークン情報:APIを実行する
際に認証処理の代わりとなる情報
不要 仮想サーバーの一覧情報取得
仮想サーバーの詳細情報取得
-X DELETE -H "X-Auth-Token: トークン情報" 不要 仮想サーバーの削除
-X POST -H "X-Auth-Token: トークン情報"
-H "Content-Type: application/json"
必要 仮想サーバーの作成
仮想サーバーの起動・停止
-X PUT -H "X-Auth-Token: トークン情報"
-H "Content-Type: application/json"
必要 仮想サーバーの情報更新


  • URL
    APIのリクエストURLは、以下のルールになっています。
    リクエストURL  APIエンドポイント一覧で取得したURL  APIリファレンスのURI
    
    APIエンドポイント一覧の取得の方法は、後述のエンドポイントの設定を参照してください。

APIリファレンスのURIは、各APIの以下の箇所を参照してください。

  • 例1)コンピュートの一覧取得(List Servers)のAPIの場合
    エンドポイント一覧で取得したcomputeのURLは以下になります。

    https://compute.jp-west-3.cloud.global.fujitsu.com/v2.1/<プロジェクトID
    
    APIリファレンスに記載されているList ServersのURIは以下になります。
    /servers
    
    これらを組み合わせて、APIのURLは以下になります。
    https://compute.jp-west-3.cloud.global.fujitsu.com/v2.1/<プロジェクトID/servers
    

  • 例2)ネットワークの一覧取得(List Networks)のAPIの場合
    エンドポイント一覧で取得したnetworkingのURLは以下になります。

    https://networking.jp-west-3.cloud.global.fujitsu.com
    
    APIリファレンスに記載されているList NetworksのURIは以下になります。
    /v2.0/networks
    

Note

Windows10以降の環境では、標準でcurlがインストールされています。Cygwinでcurlを実行する際に、Windowsのcurlを参照する設定になっていると、トークンを取得できません。その場合には、Cygwinのcurlパッケージをインストール・参照するよう設定してください。

  • 確認方法
  •   以下2つの応答では、Windowsのcurlが参照されています
       ・確認コマンド1:curl --version
           ・応答例:curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN Release-Date: 2023-03-20
       ・確認コマンド2:which curl
           ・応答例:/cygdrive/c/WINDOWS/system32/curl

    2.2 リクエストボディーの記載方法#

    APIのリクエストボディーはJSON(JavaScript Object Notation)という表記方式で記載します。

    リクエストボディーにパラメーター名とパラメーターの値を組み合わせて、以下のように記載します。

    { " パラメーター名 " : " パラメーターの値 " ,  , " パラメーター名 " : " パラメーターの値 " }
    

    以下のルールに従って記載してください。

    • パラメーター名とパラメーターの値はそれぞれ " (ダブルクォーテーション)で囲みます。
    • パラメーター名とパラメーターの値の間は : (コロン)で区切ります。
    • パラメーター名とパラメーターの値のセット(メンバーと呼ぶ)の間は , (カンマ)で区切ります。
    • 半角スペースや改行は自由に入れることができます。
    • パラメーターの値にメンバーを入れ子にして指定できます。

    • 入れ子の例)

      { " user " :
          {   " userid " : " 1900 " ,
              " username " : " fujitsu " ,
              " password " : " secret " ,
              " groups " : [ " admins " , " users " , " maintainers " ]
          }
      }
      


    2.3 配列の記載方法#

    パラメーターの値に配列を使用することもできます。リクエストパラメーターのTypeがarrayの場合は、以下のように値を配列で指定します。

    { " パラメーター名 " : [ " パラメーターの値 " ,  , " パラメーターの値 " ] }
    

    パラメーターの値を配列で指定する場合は、以下のルールに従って記載してください。

    • 個々のパラメーターの値を " (ダブルクォーテーション)で囲みます。
    • パラメーターの値は , (カンマ)で区切ります。
    • パラメーターの値の配列全体を [ ] で囲みます。


    3. トークンの取得方法#

    トークン情報(以降、トークン)を取得することで、ユーザー権限に対応したAPI操作が許可されます。
    本章では、仮想サーバーやストレージなどのリージョナルサービスに対応する [ リージョナルトークン ] の取得方法を説明します。ポータルログイン時の認証方式により異なりますので、以下より必要な手順を参照してください。

    ポータル認証方式と参照手順:

    認証方式 概要 参照手順
    ・パスワード認証
    ・ワンタイム認証+パスワード認証
    ・クライアント証明書+パスワード認証
    IaaSポータルでトークンを取得
    ※ポータル認証方式に関わらず、最も簡単にトークン取得できる方法です。
    3.1 IaaSポータルでのトークン取得
    ・パスワード認証
    ・ワンタイム認証+パスワード認証
    コマンドラインでトークンを取得 3.2 パスワード認証、または、ワンタイムパスワード+パスワード認証 でのトークン取得
    ・クライアント証明書+パスワード認証 コマンドラインでトークンを取得 3.3 クライアント証明書+パスワード認証でのトークン取得

    なお、トークンには、利用可能な有効期限が設定されています。機能説明書-付録の制限値 内、[ 表 19. トークンに関する制限値一覧 ] を参照してください。

    Note

    グローバル利用者管理などの[ グローバルサービス ]でのトークン取得には、グローバルトークンが必要です。エンドポイントなどの詳細は、機能説明書-エンドポイントを参照してください。参考として、ポータルへのログインに [ クライアント証明書+パスワード認証 ] を設定している場合のグローバルトークン取得スクリプトもご活用ください。

    Note

    プロジェクトやロール割当てなど、リージョナルリソースの管理をAPIで行う際は、 利用者管理APIリファレンスマニュアル を参照してください。

    3.1 IaaSポータルでのトークン取得#

    ユーザーがポータルにログインする際、いずれの認証方式でも利用可能なトークンの取得手順です。


    1 . ポータル にログイン後、IaaSポータル内で対象リージョン・プロジェクトを選択します。 IaaSポータルのサイドバーから [ API実行 ] をクリックします。

    2 . [ HTTPヘッダ ] 内の[ X-Auth-Token ] 右側にある値がトークンです。

    3.2 パスワード認証、または、ワンタイムパスワード+パスワード認証 でのトークン取得#

    ユーザーがポータルにログインする際、[ パスワード認証 ] が設定されている場合のトークン取得手順です。


    トークンを取得するために必要な情報を以下の表に示します。

    設定項目 変数名 説明
    ドメイン名(契約番号) DOMAIN_NAME ポータルログイン時に指定するドメイン名(契約番号)
    プロジェクト名 PROJECT_NAME 操作対象のプロジェクト名
    ユーザー名 USER_NAME ポータルログイン時に指定するユーザー名
    リージョンID REGION_ID 操作対象のプロジェクトが所属するリージョンID

    RHEL上の任意のディレクトリーで、トークン取得用のスクリプト(例:get_token.sh)を作成します。今後の利用を考えて、シェルスクリプトにしておくことをお勧めします。

    $ cd <任意のディレクトリー>
    $ vi get_token.sh
    

    以下の内容を記載したシェルスクリプトを作成します。ドメイン名、プロジェクト名、ユーザー名、およびリージョンIDについては、あらかじめ確認した情報を設定します。
    URL_AUTHには、identityのAPIエンドポイントを使用するため、固定の情報としてエンドポイントをあらかじめ設定しています。リージョナルトークンはOS_AUTH_TOKENに格納されます。

    #!/bin/bash
     
    DOMAIN_NAME=F2aOOXYZ #契約番号を入力
    PROJECT_NAME=F2aOOXYZ-prj #プロジェクト名を入力  
    USER_NAME=fujitsu-user #ユーザー名を入力
    REGION_ID=jp-west-3 #プロジェクトの利用リージョンを入力
    URL_AUTH=https://identity.${REGION_ID}.cloud.global.fujitsu.com/v3/auth/tokens
    
    # トークン格納ファイル: 利用者毎に変更
    TMPFILE=./token.txt
    
    # パスワード: 画面から入力
    echo -n パスワードを入力し、Enterキー:
    
    # パスワードを画面に表示する場合
    #read USER_PW
    
    # パスワードを画面に表示しない場合
    read -s USER_PW
    
    echo ""
    
    # トークン取得処理
    curl -k -X POST -si $URL_AUTH \
    -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": {
                         "name": "'$PROJECT_NAME'",
                         "domain":{
                             "name":"'$DOMAIN_NAME'"
                         }
                     }
                 }
             }
         }' | awk '/X-Subject-Token/ {print $2}' > $TMPFILE | tr -d '\r\n'
    
    OS_AUTH_TOKEN=`cat $TMPFILE | tr -d '\r\n'`
    
    echo ""
    echo "---"
    echo "トークン  :下に文字列が表示されない場合は、パスワードの入力値をご確認ください"
    echo "---"
    echo $OS_AUTH_TOKEN
    

    Note

    コマンドプロンプトおよびシェルスクリプト内で長い文字列を入力する場合、\(バックスラッシュ)を付けるとその部分の改行が無視されます。

    作成したget_token.shを実行します。ここでは、コマンドの実行形式として、"source ./get_token.sh" または ". ./get_token.sh"で指定可能ですが、省略形の ". ./get_token.sh"の形式で実行しています。
    パスワードを入力し、Enterキー:と表示されたらポータルログイン時のパスワードを入力してください。

    実行例:

    $ . ./get_token.sh 
    パスワードを入力し、Enterキー:
    
    ---
    トークン  :下に文字列が表示されない場合は、パスワードの入力値をご確認ください
    ---
    gAAAAABlMoQfaySdxa0vhP93lc9cJwfvtENsISlHswfWbyOu6nl3404YMesL6OJhU5MaIiTzrG5GKsB6zBkShI7y9SKdR8por3T6NHLdqt9JAmGZMmD9PcIuTl2NDUzsXyc_HOs4pg6LlCXAI8_tAgw5klG
    JWjeBWeSGz0qFFv3h0rnhtRL-2nM
    


    OS_AUTH_TOKEN変数にトークン情報が記録されていることを確認します。

    $ echo $OS_AUTH_TOKEN
    gAAAAABlMoQfaySdxa0vhP93lc9cJwfvtENsISlHswfWbyOu6nl3404YMesL6OJhU5MaIiTzrG5GKsB6zBkShI7y9SKdR8por3T6NHLdqt9JAmGZMmD9PcIuTl2NDUzsXyc_HOs4pg6LlCXAI8_tAgw5klG
    JWjeBWeSGz0qFFv3h0rnhtRL-2nM
    


    3.3 クライアント証明書+パスワード認証でのトークン取得#

    ユーザーがポータルにログインする際、[ クライアント証明書+パスワード認証 ] が設定されている場合のトークン取得手順です。
    トークン取得のためのシェルスクリプト実行前に、クライアント証明書(.p12形式)を変換したキーペアファイル(.pem形式)が必要です。本章では、Windows端末にOpenSSLをインストールし、クライアント証明書の形式を変換する手順を説明します。


    3.31 OpenSSLのインストール#

    1 . OpenSSLをインストールするため、OpenSSLダウンロードページにアクセスします。Win64 OpenSSL v1.1.1w Lightのexeファイルを任意の場所にダウンロードします。
    ※証明書の変換で、動作確認済みのバージョンはv1.1.1のみとなります。

    2 . ダウンロードした exeファイルをダブルクリックし、実行します。License Agreement画面では、[ I accept the agreement ] にチェックを入れ、[ Next ]ボタンをクリックします。

    3 . インストールフォルダを確認し、[ Next ] ボタンをクリックします。

    4 . [ The OpenSSL binaries (/bin) directory ] にチェックを入れ、[ Next ] ボタンをクリックします。

    5 . 設定内容を確認し、[ Next ] ボタンをクリックします。インストールの完了後、ウィザードを閉じてください。

    6 . 環境変数にPATHを追加するため、[ システムのプロパティ ] 画面を開き、[ 詳細設定 ] タブをクリックします。
    ※システムのプロパティ画面は、[ ファイル名を指定して実行 ] ダイアログに [ sysdm.cpl ] と入力、[ OK ] ボタンをクリックすることで表示できます。

    7 . [環境変数]ボタンをクリックします。

    8 . [ システム環境変数 ] 内の [ Path ]を選択し、[ 編集 ] をクリックします。

    9 . 環境変数名の編集画面では、[新規]をクリックし、以下の行を追加します。

    C:\Program Files\OpenSSL-Win64\bin
    

    10 . 環境変数の追加完了後は、[ OK ] ボタンをクリックし、環境変数名の編集画面を閉じます。さらに、環境変数画面では[ OK ] ボタンをクリックします。システムのプロパティ画面でも、右上の[ X ]ボタンをクリックし画面を閉じます。

    3.32 クライアント証明書の形式変換#

    1 . コマンドプロンプトを開き、以下のコマンドを入力します。OpenSSLがバージョン1.1.1wで正しくインストールされたことを確認します。  

    openssl version 
    

    2 . 以下のコマンドを入力し、クライアント証明書をダウンロードしたフォルダに移動します。

    cd <クライアント証明書をダウンロードしたフォルダのパス>
    

    3 . 以下のコマンドを入力し、クライアント証明書の形式を変換します。Enter Import Password: が表示されたら、クライアント証明書発行時に、ポータルで入力したパスフレーズ を入力します。

    openssl pkcs12 -in EndUser.p12 -out keypair.pem -nodes -clcerts
    

    3.33 トークン取得#

    トークンを取得するために必要な情報を以下の表に示します。

    設定項目 変数名 説明
    ドメイン名(契約番号) DOMAIN_NAME ポータルログイン時に指定するドメイン名(契約番号)
    プロジェクト名 PROJECT_NAME 操作対象のプロジェクト名
    ユーザー名 USER_NAME ポータルログイン時に指定するユーザー名
    リージョンID REGION_ID 操作対象のプロジェクトが所属するリージョンID
    キーペアのパス KEY_PAIR_FILE 3.32 クライアント証明書の形式変換で変換したキーペアファイル(.pem形式)のパス
    以下手順でRHELに格納

    はじめに、3.32 クライアント証明書の形式変換で作成したキーペア(.pem形式)をRHELに格納します。
    仮想サーバー RHELへの接続 手順に従い、TeraTermでRHELにログインします。

    ローカル側任意の場所に保存した変換済みのキーペア(.pem形式)を、RHEL側にドラッグ&ドロップします。

    RHEL上の任意のディレクトリーを指定し、[ OK ] ボタンをクリックします。

    続いて、トークン取得用のスクリプト(例:get_token_tfa.sh)を作成します。今後の利用を考えて、シェルスクリプトにしておくことをお勧めします。

    $ cd <任意のディレクトリー>
    $ vi get_token_tfa.sh
    

    以下の内容を記載したシェルスクリプトを作成します。ドメイン名、プロジェクト名、ユーザー名、およびリージョンID、キーペアのパスについては、あらかじめ確認した情報を設定します。
    URL_AUTHには、identityのAPIエンドポイントを使用するため、固定の情報としてエンドポイントをあらかじめ設定しています。リージョナルトークンはOS_AUTH_TOKENに格納されます。

    #!/bin/bash
    
    DOMAIN_NAME=F2aOOXYZ #契約番号を入力
    PROJECT_NAME=F2aOOXYZ-prj #プロジェクト名を入力
    USER_NAME=fujitsu-user #ユーザー名を入力
    REGION_ID=jp-west-3 #プロジェクトの利用リージョンを入力
    URL_AUTH=https://identity.${REGION_ID}.cloud.global.fujitsu.com/v3/auth/tokens
    
    # トークン格納ファイル: 利用者毎に変更
    TMPFILE=./token.txt
    
    # 2段階認証: クライアント証明書から作成した、キーペアファイル
    KEY_PAIR_FILE=./keypair.pem
    
    # パスワード: 画面から入力
    echo -n パスワードを入力し、Enterキー:
    
    # パスワードを画面に表示する場合
    #read USER_PW
    
    # パスワードを画面に表示しない場合
    read -s USER_PW
    
    echo ""
    
    # トークン取得処理
    curl -k -X POST -si $URL_AUTH \
    -H "Content-Type: application/json" \
    -H "Accept:application/json" \
    -E $KEY_PAIR_FILE \
    -d '{
            "auth":{
                "identity":{
                    "methods":["password"],
                    "password":{
                        "user":{
                            "domain":{
                                "name":"'$DOMAIN_NAME'"
                            },
                            "name": "'$USER_NAME'",
                            "password": "'"$USER_PW"'"
                        }
                    }
                },
                "scope": {
                     "project": {
                         "name": "'$PROJECT_NAME'",
                         "domain":{
                             "name":"'$DOMAIN_NAME'"
                         }
                     }
                 }
             }
         }' | awk '/X-Subject-Token/ {print $2}' > $TMPFILE | tr -d '\r\n'
    
    OS_AUTH_TOKEN=`cat $TMPFILE | tr -d '\r\n'`
    
    echo ""
    echo "---"
    echo "トークン  :下に文字列が表示されない場合は、パスワードの入力値をご確認ください"
    echo "---"
    echo $OS_AUTH_TOKEN
    

    Note

    コマンドプロンプトおよびシェルスクリプト内で長い文字列を入力する場合、\(バックスラッシュ)を付けるとその部分の改行が無視されます。

    作成したget_token_tfa.shを実行します。ここでは、コマンドの実行形式として、"source ./get_token_tfa.sh" または ". ./get_token_tfa.sh"で指定可能ですが、省略形の ". ./get_token_tfa.sh"の形式で実行しています。
    パスワードを入力し、Enterキー:と表示されたらポータルログイン時のパスワードを入力してください。

    実行例:

    $ . ./get_token_tfa.sh 
    パスワードを入力し、Enterキー:
    
    ---
    トークン  :下に文字列が表示されない場合は、パスワードの入力値をご確認ください
    ---
    gAAAAABlMnhs0ow2xuPmQr0oIskMjPWcRxZLcKgBunQmw87lY4BCrWHbPkodfeksWWCO76vWOnwhHEaZwFY8Yq9sja20eQ8mWYrRq14_0FTw9lrpPUGKy1ZnLgOcqBr6awXuJOYmvdfzN5G1i535omVi51w
    EB4Fg5Ms-YGevserQog4TfficNKI
    


    OS_AUTH_TOKEN変数にトークン情報が記録されていることを確認します。

    $ echo $OS_AUTH_TOKEN
    gAAAAABlMnhs0ow2xuPmQr0oIskMjPWcRxZLcKgBunQmw87lY4BCrWHbPkodfeksWWCO76vWOnwhHEaZwFY8Yq9sja20eQ8mWYrRq14_0FTw9lrpPUGKy1ZnLgOcqBr6awXuJOYmvdfzN5G1i535omVi51w
    EB4Fg5Ms-YGevserQog4TfficNKI
    


    4.エンドポイントの設定#

    APIのエンドポイント一覧を取得します。 この例ではリージョナルエンドポイント一覧を取得します。 以下のコマンドを実行してください。 APIの実行方法については後述しますので、この時点ではコマンドをそのまま実行してください。

    $ IDENTITY=https://identity.${REGION_ID}.cloud.global.fujitsu.com
    $ curl -s $IDENTITY/v3/auth/catalog -X GET -H  "X-Auth-Token: $OS_AUTH_TOKEN" | jq -c '.catalog[]|.endpoints[]|[.name,.url]'
    

    以下のように、リージョナルエンドポイント一覧が表示されます。表示形式は、[ 機能名 , APIエンドポイント一覧で取得したURL ] のようになっています。

    ["objectstorage","https://objectstorage.jp-west-3.cloud.global.fujitsu.com/v2/AUTH_1234567890abcdefghigklmlopqrstuvwxyz"]
    ["image","https://image.jp-west-3.cloud.global.fujitsu.com"]
    ["compute","https://compute.jp-west-3.cloud.global.fujitsu.com/v2/1234567890abcdefghigklmlopqrstuvwxyz"]
    ["blockstorage","https://blockstorage.jp-west-3.cloud.global.fujitsu.com/v3/1234567890abcdefghigklmlopqrstuvwxyz"]
    ["orchestration","https://orchestration.jp-west-3.cloud.global.fujitsu.com/v1/1234567890abcdefghigklmlopqrstuvwxyz"]
    ["blockstorage","https://blockstorage.jp-west-3.cloud.global.fujitsu.com/v2/1234567890abcdefghigklmlopqrstuvwxyz"]
    ["networking","https://networking.jp-west-3.cloud.global.fujitsu.com"]
    ["octavia","https://loadbalancer.jp-west-3.cloud.global.fujitsu.com"]
    ["keymanagement","https://keymanagement.jp-west-3.cloud.global.fujitsu.com"]
    ["identity","https://identity.jp-west-3.cloud.global.fujitsu.com"]
    ["compute","https://compute.jp-west-3.cloud.global.fujitsu.com/v2.1/1234567890abcdefghigklmlopqrstuvwxyz"]
    ["nfv","https://nfv.jp-west-3.cloud.global.fujitsu.com"]
    ["bms","https://baremetal.jp-west-3.cloud.global.fujitsu.com"]
    ["alarm","https://telemetry.jp-west-3.cloud.global.fujitsu.com"]
    ["software","https://software.jp-west-3.cloud.global.fujitsu.com"]
    ["appformix","https://telemetry.jp-west-3.cloud.global.fujitsu.com"]
    ["autoscale","https://autoscale.jp-west-3.cloud.global.fujitsu.com"]
    ["identityv3","https://identity.jp-west-3.cloud.global.fujitsu.com/v3"]
    ["import-export","https://import-export.jp-west-3.cloud.global.fujitsu.com"]
    ["objectstorage-s","https://objectstorage-s.jp-west-3.cloud.global.fujitsu.com"]
    ["logservice","https://logservice.jp-west-3.cloud.global.fujitsu.com"]
    ["database-ex","https://database-ex.jp-west-3.cloud.global.fujitsu.com"]
    ["user-monitoring","https://telemetry.jp-west-3.cloud.global.fujitsu.com"]
    ["filestorage","https://filestorage.jp-west-3.cloud.global.fujitsu.com"]
    

    この一覧を元に、使用するAPIのリクエストURLを確認してください。

    COMPUTEなどのAPIエンドポイントを使用する際は、プロジェクトID(この上のリクエストURLの例では、1234567890abcdefghigklmlopqrstuvwxyzと記載されているもの)が必要です。

    IaaSポータルでプロジェクトIDを確認する場合は、以下の手順になります。

    • IaaSポータル内で対象リージョン・プロジェクトを選択します。
    • サイドバーから [ API実行 ] をクリックします。
    • [ プロジェクトID(テナントID) ] 右側にある値を任意の場所に控えてください。

    確認したプロジェクトIDを、PROJECT_ID変数に設定します。

    $ export PROJECT_ID=<プロジェクトID>      
    

    5. APIの実行方法#

    仮想サーバーの操作に関連するAPIの実行手順を説明します。

    5.1 仮想サーバーの一覧情報取得#

    トークン取得時・エンドポイントの設定時に設定した変数が設定されていることを確認します。

    $ echo $DOMAIN_NAME
    F2aOOXYZ
      
    $ echo $PROJECT_ID  
    1234567890abcdefghigklmlopqrstuvwxyz  
       
    $ echo $USER_NAME
    fujitsu-user
     
    $ echo $REGION_ID
    jp-west-3
    

    URLとして、computeのAPIエンドポイントを設定します。REGION_IDやPROJECT_IDをそのまま流用できるように、以下のように設定します。ここでは、APIの命令部分であるURI部分は後で変更が入る部分となるため、URL変数に含めないようにしておきます。

    $ export URL_COMPUTE=https://compute.${REGION_ID}.cloud.global.fujitsu.com/v2.1/${PROJECT_ID}
    $ echo $URL_COMPUTE
    https://compute.jp-west-3.cloud.global.fujitsu.com/v2.1/1234567890abcdefghigklmlopqrstuvwxyz
    

    APIリファレンスを確認し、仮想サーバーの一覧情報を取得するAPIを確認します。

    curlコマンドに必要なパラメーターを以下のように設定します。

    • URI :/servers
    • メソッド: -X GET
    • リクエストヘッダー:-H "X-Auth-Token: $OS_AUTH_TOKEN"
    • リクエストボディー:なし

    URLには、すでに定義したURL_COMPUTE変数にURIを足したものを使用します。仮想サーバーの一覧情報を取得するAPIの例を以下に示します。

    $ curl -Ss ${URL_COMPUTE}/servers -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq .
    
    {
      "servers": [
        {
          "id": "13c4b868-3809-4e2c-9340-d5c8c5963612",
          "links": [
            {
              "href": "https://compute.jp-west-3.cloud.global.fujitsu.com/v2.1/1234567890abcdefghigklmlopqrstuvwxyz/servers/13c4b868-3809-4e2c-9340-d5c8c5963612",
              "rel": "self"
            },
            {
              "href": "https://compute.jp-west-3.cloud.global.fujitsu.com/1234567890abcdefghigklmlopqrstuvwxyz/servers/13c4b868-3809-4e2c-9340-d5c8c5963612",
              "rel": "bookmark"
            }
          ],
          "name": "RHEL_V1"
        },
    (省略)
    

    特定のキー情報に絞って情報を表示したい場合は、以下のように指定できます。ここでは、servers情報の中にあるnameキーとidキーを指定しています。

    $ curl -Ss ${URL_COMPUTE}/servers -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.servers[] | {"name":.name, "id":.id}'
    
    {
      "name": "RHEL_V1",      ※以降の説明では、"RHEL_V1"を操作対象に扱います。
      "id": "13c4b868-3809-4e2c-9340-d5c8c5963612"
    }
    {
      "name": "RHEL_API2",
      "id": "d2fd64eb-995e-426d-a7ae-4739e90b7091"
    }
    {
      "name": "RHEL-old",
      "id": "d2238f1d-5075-451f-b54a-4afa528b5132"
    }
    


    5.2 仮想サーバーの状態確認#

    取得したサーバー一覧のうち、ここでは仮想サーバー名"RHEL_V1"を操作対象にします。APIではIDを元に操作するため、仮想サーバーIDをSERVER_IDとして設定しておきます。

    $ export SERVER_ID=13c4b868-3809-4e2c-9340-d5c8c5963612
    

    APIリファレンスから、仮想サーバーの詳細を表示するAPIを確認します。

    上記より、メソッドおよびURIは以下のようになります。

    • URI: /servers/${SERVER_ID} ※すでに定義したSERVER_IDを利用します。
    • メソッド: -X GET
    • リクエストヘッダー:-H "X-Auth-Token: $OS_AUTH_TOKEN"
    • リクエストボディー:なし
    $ export SERVER_ID=13c4b868-3809-4e2c-9340-d5c8c5963612
    

    仮想サーバーの詳細情報を取得するAPIを以下のように実行します。

    $ curl -Ss ${URL_COMPUTE}/servers/${SERVER_ID} -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq .
    
    {
      "server": {
        "OS-EXT-STS:task_state": null,
        "addresses": {
          "ssl-vpn-network": [
            {
              "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:d5:ad:dd",
              "version": 4,
              "addr": "192.168.0.7",
              "OS-EXT-IPS:type": "fixed"
            }
          ]
        },
        "links": [
          {
            "href": "https://compute.jp-west-3.cloud.global.fujitsu.com/v2.1/1234567890abcdefghigklmlopqrstuvwxyz/servers/13c4b868-3809-4e2c-9340-d5c8c5963612",
            "rel": "self"
          },
          {
            "href": "https://compute.jp-west-3.cloud.global.fujitsu.com/1234567890abcdefghigklmlopqrstuvwxyz/servers/13c4b868-3809-4e2c-9340-d5c8c5963612",
            "rel": "bookmark"
          }
        ],
        "image": "",
        "OS-EXT-STS:vm_state": "active",
        "OS-EXT-SRV-ATTR:instance_name": "inst-0000b787",
        "OS-SRV-USG:launched_at": "2018-10-25T01:47:05.000000",
        "flavor": {
          "id": "1346eb39-10ef-405d-bef6-f451fe3b12d1",
          "links": [
            {
              "href": "https://compute.jp-west-3.cloud.global.fujitsu.com/1234567890abcdefghigklmlopqrstuvwxyz/flavors/1346eb39-10ef-405d-bef6-f451fe3b12d1",
              "rel": "bookmark"
            }
          ]
        },
        "id": "13c4b868-3809-4e2c-9340-d5c8c5963612",
        "security_groups": [
          {
            "name": "ssl-vpn-SG"
          }
        ],
        "user_id": "1a737cf857f9497cbb7a4e903c9be38d",
        "OS-DCF:diskConfig": "MANUAL",
        "accessIPv4": "",
        "accessIPv6": "",
        "progress": 0,
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-AZ:availability_zone": "jp-west-3a",
        "metadata": {},
        "status": "ACTIVE",
        "updated": "2018-10-25T01:47:05Z",
        "hostId": "098d035ce24ab4defbe355b267cc9ba579520c60f4dcb69ec0a27cda",
        "OS-EXT-SRV-ATTR:host": "sv-01-01-11-03.management.jp-west-3.local",
        "OS-SRV-USG:terminated_at": null,
        "key_name": "test-keypair",
        "OS-EXT-SRV-ATTR:hypervisor_hostname": "sv-01-01-11-03.management.jp-west-3.local",
        "name": "RHEL_V1",
        "created": "2018-10-25T01:46:53Z",
        "tenant_id": "1234567890abcdefghigklmlopqrstuvwxyz",
        "os-extended-volumes:volumes_attached": [
          {
            "id": "067438e8-3760-4b32-ad2c-e24fa773dba6"
          }
        ],
        "config_drive": ""
      }
    }
    

    name、id、statusキーに絞って表示する場合は、以下のように指定します。

    $ curl -Ss ${URL_COMPUTE}/servers/${SERVER_ID} -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.server | {"name": .name, "id": .id, "status": .status}'
    
    {
      "name": "RHEL_V1",
      "id": "13c4b868-3809-4e2c-9340-d5c8c5963612",
      "status": "ACTIVE"
    }
    


    5.3 仮想サーバーの停止#

    仮想サーバーの状態を確認し、仮想サーバーを停止します。APIリファレンスから仮想サーバーを停止するAPIを確認します。

    上記より、必要なパラメーターを以下のように設定します。

    • URI: /servers/${SERVER_ID}/action
    • メソッド: -X POST
    • リクエストヘッダー: -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json"
    • リクエストボディー:-d '{"os-stop": null}'

    操作対象の仮想サーバーの状態を確認します。

    $ curl -Ss ${URL_COMPUTE}/servers/${SERVER_ID} -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.server | {"name": .name, "id": .id, "status": .status}'
    

    仮想サーバーが起動状態(ACTIVE)になっていることが確認できます。

    {
      "name": "RHEL_V1",
      "id": "13c4b868-3809-4e2c-9340-d5c8c5963612",
      "status": "ACTIVE"
    }
    

    起動状態の仮想サーバーに対して、仮想サーバーの停止APIを実行します。

    $ curl -Ss ${URL_COMPUTE}/servers/${SERVER_ID}/action -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"os-stop" : null }' | jq .
    

    再度仮想サーバーの状態を確認します。

    $ curl -Ss ${URL_COMPUTE}/servers/${SERVER_ID} -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.server | {"name": .name, "id": .id, "status": .status}'
    

    仮想サーバーが停止状態(SHUTOFF)になっていることが確認できます。

    {
     "name": "RHEL_V1",
     "id": "13c4b868-3809-4e2c-9340-d5c8c5963612",
     "status": "SHUTOFF"
    }
    


    5.4 仮想サーバーの起動#

    仮想サーバーの状態を確認し、仮想サーバーを起動します。APIリファレンスから仮想サーバーを起動するAPIを確認します。curlコマンドに指定するパラメーターは以下のようになります。

    • URI: /servers/${SERVER_ID}/action
    • メソッド: -X POST
    • リクエストヘッダー:-H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json"
    • リクエストボディー:-d '{"os-start": null}'

    仮想サーバーの状態を確認します。

    $ curl -Ss ${URL_COMPUTE}/servers/${SERVER_ID} -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.server | {"name": .name, "id": .id, "status": .status}'
    

    仮想サーバーが停止状態(SHUTOFF)になっていることが確認できます。

    {
      "name": "RHEL_V1",
      "id": "13c4b868-3809-4e2c-9340-d5c8c5963612",
      "status": "SHUTOFF"
    }
    

    停止状態の仮想サーバーに対して、仮想サーバーの起動APIを実行します。

    $ curl -Ss ${URL_COMPUTE}/servers/${SERVER_ID}/action -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"os-start" : null }' | jq .
    

    仮想サーバーの状態を確認します。

    $ curl -Ss ${URL_COMPUTE}/servers/${SERVER_ID} -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.server | {"name": .name, "id": .id, "status": .status}'
    

    仮想サーバーが起動状態(ACTIVE)になっていることが確認できます。

    {
      "name": "RHEL_V1",
      "id": "13c4b868-3809-4e2c-9340-d5c8c5963612",
      "status": "ACTIVE"
    }
    


    5.5 仮想サーバーの削除#

    APIリファレンスより仮想サーバーを削除するAPIを確認します。

    curlコマンドに必要なパラメーターを以下のように設定します。

    • URI: /servers/${SERVER_ID}
    • メソッド: -X DELETE
    • リクエストヘッダー:-H "X-Auth-Token: $OS_AUTH_TOKEN"
    • リクエストボディー: なし

    対象の仮想サーバーIDを確認します。

    $ echo $SERVER_ID
    13c4b868-3809-4e2c-9340-d5c8c5963612
    

    仮想サーバーを削除するAPIを実行します。

    $ curl -Ss ${URL_COMPUTE}/servers/${SERVER_ID} -X DELETE -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq .
    

    SERVER_ID変数で設定したIDが存在しないことを確認します。

    $ curl -Ss ${URL_COMPUTE}/servers -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.servers[] | {"name": .name, "id": .id}'
    
    {
      "name": "RHEL_API2",
      "id": "d2fd64eb-995e-426d-a7ae-4739e90b7091"
    }
    {
      "name": "RHEL-old",
      "id": "d2238f1d-5075-451f-b54a-4afa528b5132"
    }
    

    対象の仮想サーバーIDが存在しないため、仮想サーバーが正常に削除されたことが確認できます。


    5.6 仮想サーバーの作成#

    APIリファレンスより仮想サーバーを作成するAPIを確認します。

    APIリファレンスのリクエストパラメーターから、API実行に必要なパラメーターを確認します。ここでは、仮想サーバー名を"RHEL_API"、仮想マシンタイプを"P3-1"、イメージに"RHEL 7 64bit"、配備するネットワークを"ssl-vpn"、セキュリティグループに"ssl-vpn-SG"を割り当てるものとします。

    パラメーターについては、以下の表を参考にしてください。

    名前 説明
    server name 仮想サーバーの名前として、"RHEL_API" を指定します。
    flavorRef フレーバのID を指定します(※)。
    本ガイドでは、"P3-1"タイプのフレーバIDを指定します。
    block_device_mapping_v2 boot_index ブートインデックスには、"0 "を指定します。
    uuid イメージのIDを指定します(※)。
    本ガイドでは、"RHEL 8.8 64bit"のイメージIDを指定します。
    volume_size "30"(GB)を指定します。
    device_name "/dev/vda"を指定します。
    source_type "image"を指定します。
    destination_type "volume"を指定します。
    key_name すでに作成しているキーペア名を指定します。
    networks uuid ネットワークのIDを指定します(※)。
    本ガイドでは、"ssl-vpn"のネットワークのIDを指定します。
    security_groups name セキュリティグループの名前を指定します(※)。
    本ガイドでは、"ssl-vpn-SG"に対応する名前を指定します。

    (※)上記のフレーバのID、イメージのID、ネットワークのID、セキュリティグループのIDについては、APIを使用して各IDを確認する必要があります。

    以下に取得方法を説明します。


    5.61.フレーバIDの取得#

    フレーバーの一覧を取得するAPIをAPIリファレンスから確認します。

    上記よりURLを設定し、フレーバー一覧を取得します。

    $ export URL_COMPUTE=https://compute.$REGION_ID.cloud.global.fujitsu.com/v2.1/$PROJECT_ID
    $ curl -Ss $URL_COMPUTE/flavors -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.flavors[] | {"name": .name, "id": .id}'
    

    P3-1に対応するIDを確認します。

    {
      "name": "M3-4",
      "id": "00f26551-ef1c-49a6-9725-b885c31d4d25"
    }
    {
      "name": "S3-8",
      "id": "13246307-6b41-47a1-aaf2-a985398c1722"
    }
    {
      "name": "P3-1",
      "id": "1346eb39-10ef-405d-bef6-f451fe3b12d1"
    }
    (省略)
    

    P3-1のフレーバIDをFLAVOR_ID変数として設定します。

    $ export FLAVOR_ID=1346eb39-10ef-405d-bef6-f451fe3b12d1
    


    5.62.イメージのIDの取得#

    イメージの一覧を取得するAPIをAPIリファレンスから確認します。

    上記よりURLを設定し、イメージ一覧を取得します。
    イメージは多いため、Selectを使用してRHELに絞って表示します。

    $ export URL_IMAGE=https://image.jp-west-3.cloud.global.fujitsu.com
    $ curl $URL_IMAGE/v2/images?limit=200 -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.images[] | select(.name | contains("Red Hat Enterprise Linux 8.8")) | {"name": .name, "id":.id}'
    

    "RHEL 8.8 64bit (English) 01"に対応するIDを確認します。

    {
      "name": "[Hourly] Red Hat Enterprise Linux 8.8 64bit (English) 01",
      "id": "7371b4e5-f16e-4e70-80e7-92e895f1de2c"
    }
    {
      "name": "Red Hat Enterprise Linux 8.8 64bit (English) 01",
      "id": "8ab2daa4-ecf5-4423-8d2f-38db115989f7"
    }
    

    時間単位での課金となる"[Hourly] Red Hat Enterprise Linux 8.8 64bit (English) 01"のイメージIDをIMAGE_ID変数として設定します。

    $ export IMAGE_ID=7371b4e5-f16e-4e70-80e7-92e895f1de2c
    


    5.63.ネットワーク一覧情報の取得#

    ネットワークの一覧を取得するAPIをAPIリファレンスから確認します。

    上記よりURLを設定し、ネットワーク一覧を取得します。

    $ export URL_NW=https://networking.jp-west-3.cloud.global.fujitsu.com
    $ curl -Ss $URL_NW/v2.0/networks -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.networks[] | {"name": .name, "id": .id}'
    

    ネットワーク一覧を取得し、"ssl-vpn-network"に対応するIDを確認します。

    {
      "name": "ssl-vpn-network",
      "id": "478043e0-74c2-48b7-baf4-fc8a79c17c57"
    }
    {
      "name": "fip-net",
      "id": "5234aa88-9cd8-49bd-b613-d0006eacb87b"
    }
    

    ネットワークのIDをNETWORK_ID変数として設定します。

    $ export NETWORK_ID=478043e0-74c2-48b7-baf4-fc8a79c17c57
    


    5.64. セキュリティグループ名の取得#

    セキュリティグループの一覧を取得するAPIをAPIリファレンスから確認します。

    先ほど設定したURLを使用して、ネットワーク一覧を取得します。

    $ curl -Ss $URL_NW/v2.0/security-groups -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.security_groups[] | {"name": .name, "id": .id}'
    

    セキュリティグループ名に"ssl-vpn-SG"があることを確認します。

    {
      "name": "ssl-vpn-SG",
      "id": "0e3c0936-bf88-406d-82fb-0d26a0b12ee0"
    }
    {
      "name": "default",
      "id": "9290fea4-56fc-4030-9d37-03d3c8222e1b"
    }
    

    セキュリティグループ名をSG_NAME変数として設定します。

    $ export SG_NAME=ssl-vpn-SG
    


    5.65. その他のパラメーター設定#

    仮想サーバー名(VM_NAME)、ボリュームサイズ(VOL_SIZE)、デバイス名(DEVICE_NAME)、ボリュームのソースタイプ(SOURCE)、キーペア名(KEYNAME)についても、それぞれ以下のように設定します。

    $ export VM_NAME=RHEL_API
    $ export VOL_SIZE=30
    $ export DEVICE_NAME=/dev/vda
    $ export SOURCE=image
    $ export KEYNAME=test-keypair
    

    すべて必要なパラメーターが設定されていることを確認してください。

    $ echo $VM_NAME
    $ echo $FLAVOR_ID
    $ echo $IMAGE_ID
    $ echo $VOL_SIZE
    $ echo $DEVICE_NAME
    $ echo $SOURCE
    $ echo $KEYNAME
    $ echo $NETWORK
    $ echo $SG_NAME
    

    curlコマンドに必要なパラメーターを決定します。

    • URI: /servers/${SERVER_ID}
    • メソッド: -X POST
    • リクエストヘッダー:
      -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json"
      
    • リクエストボディー:
      -d {"server": {"name": "$VM_NAME", "flavorRef": "$FLAVOR_ID" , "block_device_mapping_v2":[ {"boot_index": "0", "uuid":"$IMAGE_ID", "volume_size": "$VOL_SIZE", "device_name": "$DEVICE_NAME", "source_type": "$SOURCE", "destination_type": "volume"} ] , "key_name": "$KEYNAME", "networks": [{"uuid": "$NETWORK_ID"}], "security_groups": [{"name": "$SG_NAME"}] }}
      
      上記のようなJSON形式をリクエストボディーに指定することは難しいため、次に示すようなヒアドキュメントを用いた形式で実行する、またはシェルスクリプトにJSON形式でリクエストボディーを指定することをお勧めします。
      仮想サーバーを作成するAPIを以下のとおりに実行します。
      ここでは、シェルスクリプトに文字列をそのまま読み込ませる方法(ヒアドキュメント)を用いることにより、"@- <<EOF"から"EOF"までの内容をJSON形式のまま指定しています。

    ※ヒアドキュメントでは、シングルクォート(’)を用いると正しく動作しないためご注意ください。
    ※以下は実行例の画面イメージです。

    出力結果は以下のようになります。

      {"server": {"security_groups": [{"name": "0e3c0936-bf88-406d-82fb-0d26a0b12ee0"}], "OS-DCF:diskConfig": "MANUAL", "id": "1c84de54-78a3-48c0-bdd6-654abafc2d6f", "links": [{"href": "https://compute.jp-west-3.cloud.global.fujitsu.com/v2.1/1234567890abcdefghigklmlopqrstuvwxyz/servers/1c84de54-78a3-48c0-bdd6-654abafc2d6f", "rel": "self"}, {"href": "https://compute.jp-west-3.cloud.global.fujitsu.com/1234567890abcdefghigklmlopqrstuvwxyz/servers/1c84de54-78a3-48c0-bdd6-654abafc2d6f", "rel": "bookmark"}], "adminPass": "gnSgE2mGw3Bn"}}
    

    仮想サーバーの一覧情報を取得します。ここでは、jqコマンドを使用して、確認に必要な情報(name, id, status)のみ抽出しています。

    $ curl -Ss ${URL_COMPUTE}/servers/detail -X GET  \
    >-H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.servers[] | {name:.name, id:.id, status: .status}'
    

    出力内容に"RHEL_API"が作成されていれば、正常に仮想サーバーが作成されていることを確認できます。なお、仮想サーバー作成後は、自動的に仮想サーバーが起動状態(ACTIVE)になっていますのでご注意ください。

      {
        "name": "RHEL_API",
        "id": "1c84de54-78a3-48c0-bdd6-654abafc2d6f",
        "status": "ACTIVE"
      }
      (省略)
    


    5.7 仮想サーバーの情報更新#

    作成した仮想サーバーを更新します。本手順では、仮想サーバー名を更新する方法を説明します。

    curlコマンドに必要なパラメーターを以下のように設定します。

    • URI: /servers/${SERVER_ID} ※仮想サーバーIDは今回操作対象の仮想サーバーを指定します。
    • メソッド: -X PUT
    • リクエストヘッダー: -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json"
    • リクエストボディー:-d '{"server": {"name": "RHEL_update" }}'

    仮想サーバーの情報を更新するAPIを以下のように実行します。

    ※ "-d" 指定には、'{ xxxx }' の形式で指定してください。
    ※ヒアドキュメントを利用する場合は、-d { xxxx } の形式に変更する必要がありますのでご注意ください。

    $ curl -Ss ${URL_COMPUTE}/servers/${SERVER_ID} -X PUT -H "X-Auth-Token: $OS_AUTH_TOKEN"  -H "Content-Type: application/json" -d '{"server": {"name": "RHEL_update" }}' | jq .
    

    name部分の値が "RHEL_update"になっていることを確認します。

    {
      "server": {
        "status": "ACTIVE",
        "updated": "2018-11-06T09:38:31Z",
        "hostId": "216321eb3c71b5f95ac101bed3dcf0ed4af24417c83e73444336879f",
        "user_id": "1a737cf857f9497cbb7a4e903c9be38d",
        "name": "RHEL_update",
        "links": [
          {
            "href": "https://compute.jp-west-3.cloud.global.fujitsu.com/v2.1/1234567890abcdefghigklmlopqrstuvwxyz/servers/1c84de54-78a3-48c0-bdd6-654abafc2d6f",
            "rel": "self"
          },
          {
            "href": "https://compute.jp-west-3.cloud.global.fujitsu.com/1234567890abcdefghigklmlopqrstuvwxyz/servers/1c84de54-78a3-48c0-bdd6-654abafc2d6f",
            "rel": "bookmark"
          }
        ],
    (省略)
    


    Note

    ヒアドキュメントを用いたコマンド実行例は、以下となります。

    $ curl -Ss ${URL_COMPUTE}/servers/${SERVER_ID} -X PUT \
    -H "X-Auth-Token: $OS_AUTH_TOKEN"  \
    -H "Content-Type: application/json" \
    -d @- <<EOF
    {
            "server":
                   {
                              "name": "RHEL_update"
                   }
    }
    EOF
    

    nameおよびidキーのみを表示する場合は、以下のように実行します。

    $ curl -Ss ${URL_COMPUTE}/servers -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.servers[] | {name: .name, id: .id}'
    

    出力結果は以下のようになります。

    {
      "name": "RHEL_update",
      "id": "1c84de54-78a3-48c0-bdd6-654abafc2d6f"
    }
    (省略)
    


    本ガイドでは、仮想サーバーを中心にAPIの利用方法を説明しました。このほかにネットワークなどのリソースを扱う場合は、APIリファレンスを参照し、本書で記載した操作方法を参考にお試しください。