0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

テナント間でのOCI Compute と block volumeの移行してみた。

Posted at

はじめに

新しいテナントに既存テナントからお引越しする必要がある時に、
Computeリソースはカスタムイメージ化して、新テナント側でimportすれば環境の移行が可能です。
ただ、追加でアタッチしたblock volumeはカスタムイメージに含まれないので、別途対応が必要になります。
追加アタッチしたboot volumeやblockボリュームのテナント間の移行についてはクロステナンシーポリシーを設定して実施ができるということなので、早速実施してみました。

compute bootイメージの移行

作業の流れ

  1. 【既存テナント側】 : 既存テナントのcomputeのカスタムイメージ作成
  2. 【既存テナント側】1.で作成したカスタムイメージのエクスポート (既存テナントのobject storage上)
  3. 【既存テナント側】object storageの事前定義済みURL発行
  4. 【新テナント側】カスタムイメージのインポート

こちらは既に記事がありますので詳細は割愛します。

カスタムイメージのサイズが400GB以内であればこちらの手順で比較的簡単に移行ができます。

今回のメインはカスタムイメージに含まれない追加でアタッチしたblock storageのテナント間の移行をやってみたいと思います。

computeに追加でアタッチしたblock volumeの移行

作業の流れ

作業のイメージはマニュアルのプレイブックにあります。
https://docs.oracle.com/ja/solutions/migrate-data-across-tenancies/index.html#GUID-7B93779F-54DA-4CF5-ADFB-85F8DDF20893

新しいテナント側でテナント間のボリュームの操作を許可するグループを作成し、
そのグループに対してクロステナントポリシーを定義し、oci cli でボリュームのクローンや、バックアップからのリストアを実行します。

image.png

  1. 【新テナント側】 クロステナントの操作を実行を許可するグループ(NewTenancyIdentityGroup)、ユーザの作成
  2. 【CLI実行端末】NewTenancyIdentityGroupに属するユーザのCLI構成
  3. 【既存テナント側】 クロステナントポリシーの設定(rootコンパートメント)
  4. 【新規テナント側】 クロステナントポリシーの設定(rootコンパートメント)
  5. 【CLI実行端末】CLIコマンド実行

(手順1,2)ユーザの作成、作業する端末で、oci cliの構成

  • リージョン間のblock volumeのレプリケーションなどはOCI consoleから簡単にできますが、テナント間は追加のポリシー設定が必要なのと、実行もCLIでしかサポートされていないため、oci cliを利用したことがない方は作業する端末でまず設定をしましょう
  • 設定については以下を参考にしてください

3.【既存テナント側】 クロステナントポリシーの設定(rootコンパートメント)

  • 手順1,2ができたら既存テナント側でクロステナントポリシーをrootコンパートメントに対して設定します。
    新規テナントのOCIDをNewTenancyとして定義し、NewTenancyIdentityGroupグループに対して許可ポリシー(Admin)を設定します。
クローンに関するポリシー設定
Define tenancy NewTenancy as ocid1.tenancy.oc1..(新テナントのOCID) 
Define group NewTenancyIdentityGroup as ocid1.group.oc1.. (新テナントで作成したNewTenancyIdentityGroupのOCID)
Admit group NewTenancyIdentityGroup of tenancy NewTenancy to use volumes in tenancy where ANY { request.operation='CreateVolume', request.operation='GetVolume', request.operation='CreateBootVolume', request.operation='GetBootVolume' }
バックアップからのリストアに関するポリシー設定
Define tenancy NewTenancy as ocid1.tenancy.oc1..(新テナントのOCID) 
Define group NewTenancyIdentityGroup asocid1.group.oc1.. (新テナントで作成したNewTenancyIdentityGroupのOCID)Admit group NewTenancyIdentityGroup of tenancy NewTenancy to read boot-volume-backups in tenancy
Admit group NewTenancyIdentityGroup of tenancy NewTenancy to read volume-backups in tenancy 
Admit group NewTenancyIdentityGroup of tenancy NewTenancy to inspect volumes in tenancy
既存テナント側での設定例

image.png

4.【新規テナント側】 クロステナントポリシーの設定(rootコンパートメント)

続いて、新規テナント側で既存テナントのOCIDをOldTenancy として定義し、NewTenancyIdentityGroupグループに対して承認ポリシー(Endorse)を設定します。

クローンに関するポリシー設定
Define tenancy OldTenancy as ocid1.tenancy.oc1..(既存ナントのOCID) 
Endorse group NewTenancyIdentityGroup to use volumes in tenancy OldTenancy where ANY { request.operation = 'CreateVolume', request.operation='GetVolume', request.operation='CreateBootVolume', request.operation='GetBootVolume' }
バックアップからのリストアに関するポリシー設定
Define tenancy OldTenancy as ocid1.tenancy.oc1..(既存ナントのOCID) 
Endorse group NewTenancyIdentityGroup to read boot-volume-backups in tenancy OldTenancy
Endorse group NewTenancyIdentityGroup to read volume-backups in tenancy OldTenancy
Endorse group NewTenancyIdentityGroup to inspect volumes in tenancy OldTenancy
既存テナント側での設定例

image.png

5.【CLI実行端末】CLIコマンド実行

ブロックボリュームのクローン実行コマンド
C:\Users\xxxxx\.oci> 
oci bv volume create --region=ap-tokyo-1 --source-volume-id=ocid1.volume.oc1.ap-tokyo-1.(クローン元のブロックボリュームのOCID) --compartment-id=ocid1.tenancy.(クローン先の新テナントのコンパートメントOCID)
ブロックボリュームのクローン実行結果
{
  "data": {
    "auto-tuned-vpus-per-gb": null,
    "autotune-policies": [],
    "availability-domain": "Uqfm:AP-TOKYO-1-AD-1",
    "block-volume-replicas": null,
    "compartment-id": "ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "defined-tags": {
      "Oracle-Tags": {
        "CreatedBy": "oracleidentitycloudservice/xxxxxxxx",
        "CreatedOn": "2024-04-05T04:18:19.542Z"
      }
    },
    "display-name": "abxhiljr22wkh2me4qdusrvxwidrosb6vc4m3f24kgu4vgci5w5is5wqsvra",
    "freeform-tags": {},
    "id": "ocid1.volume.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "is-auto-tune-enabled": false,
    "is-hydrated": false,
    "kms-key-id": null,
    "lifecycle-state": "PROVISIONING",
    "size-in-gbs": 50,
    "size-in-mbs": 51200,
    "source-details": {
      "id": "ocid1.volume.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "type": "volume"
    },
    "system-tags": {
      "orcl-cloud": {
        "free-tier-retained": "true"
      }
    },
    "time-created": "2024-04-08T03:18:45.372000+00:00",
    "volume-group-id": null,
    "vpus-per-gb": 10
  },
  "etag": "1b1426f94439337479f7c4023fca24c0"
クローンされたボリュームの確認

image.png

プレイブックに記載されているコマンドで実行する新テナント側では自動的にボリューム名が作成されます。
ocicliのマニュアルを確認して、--dispaly-name オプションをつけると任意の名前で指定できるのでバックアップボリュームからのリストアはオプションをつけてやってみます。

参考)https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.39.1/oci_cli_docs/cmdref/bv/volume/create.html

ブロックボリュームのバックアップからのリストア実行コマンド
C:\Users\ xxxxxx \.oci> 
oci bv volume create --region=ap-tokyo-1 --volume-backup-id=ocid1.volumebackup.oc1.ap-tokyo-1.(既存テナント内のバックアップブロックボリュームのOCID) --compartment-id=ocid1.tenancy.(クローン先の新テナントのコンパートメントOCID)
--availability-domain=Uqfm:AP-TOKYO-1-AD-1 --display-name mm02_restorevolume(任意の名前)

リストア時はAvailability Domainの指定オプションが必須です。
オプション指定に必要な各ADの名前はoci cliの以下コマンドで取得できます。

C:\Users\ xxxxxx \.oci> oci iam availability-domain list
{
  "data": [
    {
      "compartment-id": "ocid1.tenancy.oc1..aaaaaaaafkxv3eclq27fx4ozbgbhshqmsxgo3yix66xtxynbdjtacpw7vncq",
      "id": "ocid1.availabilitydomain.oc1..aaaaaaaaaijs56nfsz2usbwsr6k6t5b3do7hns6ib2day6le5scrvvjpeceq",
      "name": "Uqfm:AP-TOKYO-1-AD-1"
    }
  ]
}
ブロックボリュームのバックアップからのリストア実行
{
  "data": {
    "auto-tuned-vpus-per-gb": null,
    "autotune-policies": [],
    "availability-domain": "Uqfm:AP-TOKYO-1-AD-1",
    "block-volume-replicas": null,
    "compartment-id": "ocid1.tenancy.oc1..aaaaaaaafkxv3eclq27fx4ozbgbhshqmsxgo3yix66xtxynbdjtacpw7vncq",
    "defined-tags": {
      "Oracle-Tags": {
        "CreatedBy": "oracleidentitycloudservice/oramiya",
        "CreatedOn": "2024-04-05T04:18:19.542Z"
      }
    },
    "display-name": "mm02_restorevolume2",
    "freeform-tags": {},
    "id": "ocid1.volume.oc1.ap-tokyo-1. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ",
    "is-auto-tune-enabled": false,
    "is-hydrated": false,
    "kms-key-id": null,
    "lifecycle-state": "PROVISIONING",
    "size-in-gbs": 50,
    "size-in-mbs": 51200,
    "source-details": {
      "id": "ocid1.volumebackup.oc1.ap-tokyo-1. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ",
      "type": "volumeBackup"
    },
    "system-tags": {},
    "time-created": "2024-04-11T06:43:48.561000+00:00",
    "volume-group-id": null,
    "vpus-per-gb": 10
  },
  "etag": "4723c31cea968dcd61b1b0882d631363"
}"

おわりに

今回は仕組みを確認しながら実施しましたが、
先にvolumeを古いテナントから新テナントにクローンorリストアしておけば新しいテナントでカスタムイメージからcomputeを作成するときに作成画面でリストアしてきたvolumeが選択できますので一回で引っ越しが可能です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?