コンパートメントを作成します

Terraformを使用してOracle Cloud Infrastructureアカウントに接続し、テナンシにコンパートメントを作成します。

主なタスクは:

  • Oracle Cloud Infrastructure Terraformプロバイダ・リソースを使用して:
    • 詳細を指定してコンパートメントを宣言します。
    • テナンシにコンパートメントを作成します。
ローカル・マシンからOracle Cloud Infrastructureテナンシに接続されているユーザーのダイアグラム。ローカル環境はLinuxで、Terraformがインストールされています。ローカル環境のTerraformから、Terraformレジストリ、およびコンパートメントを指しているテナンシへの矢印があります。これらの矢印は、ユーザーがTerraformおよびTerraformレジストリを使用してテナンシにコンパートメントを作成したことを示しています。

詳細は、次を参照してください:

開始前

このチュートリアルを正常に実行するには、次が必要です:

要件

1. 準備

Terraformスクリプトを認証および実行するための環境を準備します。また、チュートリアルを完了するために必要なすべての情報を収集します。

テナンシ情報の取得

Oracle Cloudコンソールから次の情報を収集し、ノートパッドにコピーします。

  • テナントOCID: <tenancy-ocid>
    1. ナビゲーション・メニューで、「プロファイル」メニュー「プロファイル」メニュー・アイコンを選択し、「テナンシ: <your_tenancy_name>を選択します。
    2. 「OCID」の横にある「コピー」を選択します。

      テナンシOCIDがクリップボードにコピーされます。

コンパートメント・ポリシーの追加

ユーザー名がAdministratorsグループ内にある場合は、この項をスキップしてください。それ以外の場合は、テナンシに次のポリシーを追加するよう管理者に依頼してください:

allow group <a-group-your-username-belongs-to> to manage compartments in tenancy

この権限を持つユーザーは、チュートリアルのすべてのリソースのコンパートメントを作成できます。

ポリシーを追加するステップ
  1. Oracle Cloudコンソールにサインインします。
  2. ナビゲーション・メニューで、「プロファイル」メニュー「プロファイル」メニュー・アイコンを選択し、表示されるオプションに応じて「ユーザー設定」または「自分のプロファイル」を選択します
  3. 表示されるオプションに応じて、「グループ」または「自分のグループ」を選択します。
  4. メモ帳で、ユーザー名が属するグループの名前をコピーします。
  5. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「アイデンティティ」にある「ポリシー」を選択します。
  6. コンパートメントを選択します: <your-tenancy>(root)
  7. 「ポリシーの作成」を選択します。
  8. 「ポリシーの作成」ページで、次の値を入力します:
    • 名前: manage-compartments
    • 説明: Allow the group <a-group-your-username-belongs-to> to list, create, update, delete and recover compartments in the tenancy.
    • コンパートメント: <your-tenancy>(root)
  9. 「ポリシー・ビルダー」で、「手動エディタの表示」を選択します。
  10. 次のポリシーを貼り付けます:
    allow group <a-group-your-username-belongs-to> to manage compartments in tenancy
  11. 「作成」を選択します。

リファレンス: 動詞とリソース・タイプの組合せの詳細(compartmentsリソース・タイプを参照)

2. スクリプトの作成

認証用のスクリプトを作成し、コンパートメントを作成して出力を出力します。

認証の追加
最初に、Terraformスクリプトのディレクトリを設定します。次に、OCI Terraformの設定チュートリアルからプロバイダおよびバージョンのスクリプトをコピーして、Oracle Cloud Infrastructureアカウントがこのディレクトリから実行されているスクリプトを認証できるようにします。
  1. $HOMEディレクトリにtf-compartmentというディレクトリを作成し、そのディレクトリに移動します。
    mkdir tf-compartment
    cd tf-compartment
  2. provider.tfファイルをtf-compartmentディレクトリにコピーします。
    cp ../tf-provider/provider.tf .
  3. versions.tfファイルをtf-compartmentディレクトリにコピーします。
    cp ../tf-provider/versions.tf .
コンパートメント・リソースの宣言

Oracle Cloud Infrastructureコンパートメント・リソースを宣言してから、コンパートメントの詳細を定義します。

  1. compartment.tfというファイルを作成します。
  2. compartment.tfに、次のコードを追加します。
    • <tenancy-ocid>を、「テナンシ情報の取得」で収集した情報に置き換えます。

      compartment_idは、親コンパートメントのOCIDです。親としてルート・コンパートメントを使用します。テナントOCIDは、ルート・コンパートメントのコンパートメントOCIDです。

    • <your-compartment-name>を任意の名前に置き換えます。
    
    resource "oci_identity_compartment" "tf-compartment" {
        # Required
        compartment_id = "<tenancy-ocid>"
        description = "Compartment for Terraform resources."
        name = "<your-compartment-name>"
    }
  3. compartment.tfファイルを保存します。
説明

Terraformでは、リソースとは仮想クラウド・ネットワークやコンピュート・インスタンスなどのオブジェクトです。Terraformを使用してこれらを作成、更新および削除できます。

コンパートメント・リソースを宣言するには:

  1. Oracle Cloud Infrastructureプロバイダに移動します。
  2. 左上の「フィルタ」ボックスに、compartmentと入力します。

    結果は、データ・ソースとリソースの両方に対して返されます。

  3. 「アイデンティティ」で、「リソース」に移動し、oci_identity_compartmentを選択します。

    ページのタイトルはリソース・タイプです: oci_identity_compartment

    必須の引数は、引数リファレンスにリストされています。

    • compartment_id
    • description
    • name
  4. リソース・ブロックを作成します:
    • キーワードresourceを使用してリソース・ブロックを宣言します
    • リソース・タイプ"oci_identity_compartment"のラベルを追加します
    • 任意のローカル名のラベルを追加します:
      • ラベルには、文字、数字、アンダースコア(_)およびハイフン(-)を含めることができます。最初の文字は数字にできません。
      • 例: "tf-compartment"
    • コード・ブロック内で、必要な引数の値を指定しますデフォルト値はありません。
    • オプションの引数には、オーバーライドする引数の値を指定します。それ以外の場合は、デフォルト値が使用されます。
出力の追加

コードに出力ブロックを追加して、Terraformがコンパートメントを作成した後にコンパートメントに関する情報を取得します。

  1. tf-compartmentディレクトリに、outputs.tfというファイルを作成します。
  2. outputs.tfに、次のコードを追加します。
    # Outputs for compartment
    
    output "compartment-name" {
      value = oci_identity_compartment.tf-compartment.name
    }
    
    output "compartment-OCID" {
      value = oci_identity_compartment.tf-compartment.id
    }
  3. outputs.tfファイルを保存します。
  4. tf-compartmentディレクトリ内のすべてのファイルをリストします。
    ls

    次のファイルが同じディレクトリに存在することを確認します。

    • compartment.tf
    • outputs.tf
    • provider.tf
    • versions.tf
説明
  • 属性リファレンス(oci_identity_compartment)に移動します。
    ノート

    属性は、oci_identity_compartmentリソースに対して返すことができる出力です。
  • 出力する属性を決定します。
  • リソース出力ブロックを作成します:
    • キーワードoutputを使用して出力ブロックを宣言します
    • 出力結果とともに印刷するラベルを追加します:
      • ラベルには、文字、数字、アンダースコア(_)およびハイフン(-)を含めることができます。最初の文字は数字にできません。
      • 例: "compartment-name"
    • コード・ブロック内で、次の式を使用してリソース出力の値を入力します:
      • value = <type>.<local-name-for-resource>.<attribute>
      • 例: value = oci_identity_compartment.tf-compartment.id
    • 出力ごとに出力ブロックを作成します。

3. コンパートメントの作成

Terraformスクリプトを実行します。アカウントがスクリプトを認証した後、Terraformはテナンシにコンパートメントを作成します。

初期化
tf-compartmentディレクトリの作業ディレクトリを初期化します。
terraform init

出力例:

Initializing the backend...

Initializing provider plugins...

Terraform has been successfully initialized!
プラン
実行計画を作成して、実際のリソースを変更せずに、実行計画に表示される変更が期待どおりであるかどうかを確認します。
terraform plan

予想される出力には、Plan: 1 to add, 0 to change, 0 to destroy.行が含まれます。

出力例:

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with
the following symbols:
  + create

Terraform will perform the following actions:

  # oci_identity_compartment.tf-compartment will be created
  + resource "oci_identity_compartment" "tf-compartment" {
      + compartment_id = "ocid1.tenancy.xxx"
      + defined_tags   = (known after apply)
      + description    = "Compartment for Terraform resources."
      + freeform_tags  = (known after apply)
      + id             = (known after apply)
      + inactive_state = (known after apply)
      + is_accessible  = (known after apply)
      + name           = "<your-compartment-name>"
      + state          = (known after apply)
      + time_created   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + compartment-OCID = (known after apply)
  + compartment-name = "<your-compartment-name>"
適用
  1. Terraformを使用してコンパートメントを作成します:
    terraform apply

    確認を求められた場合は、作成するリソースにyesを入力します。

  2. (オプション)コンソールから作成を確認します:
    • ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「アイデンティティ」で、「コンパートメント」を選択します。
    • コンパートメント名が表示されるまでページをリフレッシュします。
    • OCIDなどの詳細を表示するには、コンパートメント名を選択します。
  3. 出力ターミナルで、定義した出力を確認します。

    出力例:

    oci_identity_compartment.tf-compartment: Creating...
    oci_identity_compartment.tf-compartment: Creation complete after 9s [id=xxx]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    
    Outputs:
    
    compartment-OCID = ocid1.compartment.xxx
    compartment-name = <your-compartment-name>

完了!Oracle Cloud Infrastructure Terraformプロバイダを使用して、正常にサインインしてテナンシにコンパートメントを作成しました。

参照: