###################################################################### # All Rights Reserved, Copyright FUJITSU LIMITED 2015-2018 # # API実行サンプル名: # 02-006 プロジェクト間の仮想サーバイメージ共有 # # 内容: # 作成したプライベートイメージを、任意のプロジェクト間で共有する # 手順です。 # # 版数:v1.0 # 更新日:2017/09/01 ###################################################################### 手順: ─────────────────────────────────── 項番1.【共有元】イメージの共有 項番2.【共有先】イメージ共有の確認 項番3.【共有先】共有イメージの有効化設定 項番4.【共有元・共有先】イメージ共有状態の確認 参考. 【共有元】イメージ共有の削除 ─────────────────────────────────── 事前準備: あらかじめ以下を準備する必要があります。 ─────────────────────────────────── ・イメージの共有元プロジェクト ・イメージの共有先プロジェクト ・プライベートイメージ ─────────────────────────────────── 注意事項: ・本手順では、イメージの共有元プロジェクトおよび共有先プロジェクトの 双方で設定を行う必要があります。 ・事前にイメージ作成を行ってください。手順については、API実行サン プル「02-005_仮想サーバイメージ作成」を参照してください。 項番1.【共有元】イメージの共有 対象の仮想サーバイメージの共有メンバー情報に、共有するプロジェクト IDを設定します。 注意事項: 仮想サーバイメージを作成したプロジェクトで設定してください。 環境定義コマンド例: ====================================================================== # IMAGE_ID=<共有する仮想サーバイメージID> IMAGE_ID=084e8d2f-ca9e-4d7c-b343-1c0af1ec97f7 # MEMBER=<共有先のプロジェクトID> MEMBER=754997517fe34953adf1850d156XXXXX API実行コマンド例: ====================================================================== curl -Ss $IMAGE/v2/images/$IMAGE_ID/members -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"member": "'$MEMBER'"}' | jq . レスポンス例: ====================================================================== { "schema": "/v2/schemas/member", "member_id": "<共有先プロジェクトID>", "image_id": "084e8d2f-ca9e-4d7c-b343-1c0af1ec97f7", "updated_at": "2017-07-21T07:00:41Z", "created_at": "2017-07-21T07:00:41Z", "status": "pending" } ====================================================================== 項番2.【共有先】イメージ共有の確認 共有先プロジェクトで共有したプライベートイメージが参照できることを 確認します。 注意事項: 仮想サーバイメージの共有先プロジェクトで確認してください。 環境定義コマンド例: ====================================================================== # IMAGE_ID=<共有されたイメージID> IMAGE_ID=084e8d2f-ca9e-4d7c-b343-1c0af1ec97f7 API実行コマンド例: ====================================================================== curl -Ss $IMAGE/v2/images/$IMAGE_ID/members -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "schema": "/v2/schemas/members", "members": [ { "schema": "/v2/schemas/member", "member_id": "<共有先プロジェクトID>", "image_id": "084e8d2f-ca9e-4d7c-b343-1c0af1ec97f7", "updated_at": "2017-07-21T07:00:41Z", "created_at": "2017-07-21T07:00:41Z", "status": "pending" } ] } ====================================================================== 項番3.【共有先】共有イメージの有効化設定 共有されたイメージを利用するために、有効化設定を行います。 注意事項: 仮想サーバイメージの共有先プロジェクトで設定してください。 環境定義コマンド例: ====================================================================== # IMAGE_ID=<共有されたイメージID> IMAGE_ID=084e8d2f-ca9e-4d7c-b343-1c0af1ec97f7 # MEMBER=<共有先のプロジェクトID> MEMBER=754997517fe34953adf1850d156XXXXX # STATUS=<有効化ステータスを指定> STATUS=accepted API実行コマンド例: ====================================================================== curl -Ss $IMAGE/v2/images/$IMAGE_ID/members/$MEMBER -X PUT -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"status": "'$STATUS'"}' | jq . レスポンス例: ====================================================================== { "schema": "/v2/schemas/member", "member_id": "<共有先プロジェクトID>", "image_id": "084e8d2f-ca9e-4d7c-b343-1c0af1ec97f7", "updated_at": "2017-07-21T07:19:20Z", "created_at": "2017-07-21T07:01:34Z", "status": "accepted" } ====================================================================== 注意事項: ・共有されたイメージを利用して仮想サーバを作成する場合は、仮想 サーバ作成APIで以下のパラメータを設定してください。 ・"block_device_mapping_v2":[{"uuid":"<作成したイメージID>"}] ・"block_device_mapping_v2":[{"source_type":"image"}] なお、APIユーザーズガイド「仮想サーバ作成」を参照し、仮想サーバ を作成する場合は、以下のパラメータを設定してください。 ・IMAGE_REF_ID=<作成したイメージID> ・SOURCE=image 項番4.【共有元・共有先】イメージ共有状態の確認 共有された仮想サーバイメージの共有状態を確認します。 ステータスが「accepted」であることを確認します。 共有ステータス:「pending」:公開中 「accepted」:有効化 「rejected」:無効化 環境定義コマンド例: ====================================================================== # IMAGE_ID=<共有されたイメージID> IMAGE_ID=084e8d2f-ca9e-4d7c-b343-1c0af1ec97f7 # MEMBER=<共有先のプロジェクトID> MEMBER=754997517fe34953adf1850d156XXXXX API実行コマンド例: ====================================================================== curl -Ss $IMAGE/v2/images/$IMAGE_ID/members/$MEMBER -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "schema": "/v2/schemas/member", "member_id": "<共有先プロジェクトID>", "image_id": "084e8d2f-ca9e-4d7c-b343-1c0af1ec97f7", "updated_at": "2017-07-21T07:18:46Z", "created_at": "2017-07-21T07:00:41Z", "status": "accepted" } ====================================================================== 参考.【共有元】イメージ共有の削除 仮想サーバイメージの共有メンバーから削除します。 環境定義コマンド例: ====================================================================== # TMP_IMAGE_ID=<共有されたイメージID> TMP_IMAGE_ID=084e8d2f-ca9e-4d7c-b343-1c0af1ec97f7 # MEMBER=<共有先のプロジェクトID> MEMBER=754997517fe34953adf1850d156XXXXX API実行コマンド例: ====================================================================== curl -Ssi $IMAGE/v2/images/$TMP_IMAGE_ID/members/$MEMBER -X DELETE -H "X-Auth-Token: $OS_AUTH_TOKEN" レスポンス例: ====================================================================== HTTP/1.1 204 No Content X-Fcx-Endpoint-Request: EXECUTED_REQ001038368_204 Date: Fri, 21 Jul 2017 07:32:32 GMT Server: Apache x-openstack-request-id: req-84a2e545-d6b4-4ee6-bb60-a27c6d6a74bf Cache-Control: no-cache X-Request-Id: d413fd2c-ac1f-45e6-8ff3-69b54931e482 X-Runtime: 0.524000 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive ====================================================================== 以上