すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:Terraform を使った OSS の管理

最終更新日:Mar 12, 2024

このトピックでは、Terraformをインストール、設定、および使用してObject Storage Service (OSS) を管理する方法について説明します。

説明

このトピックでは、管理操作はRAMユーザーとして実行されます。 詳細については、「Terraform Registry」をご参照ください。

Terraform をインストールして設定

Terraformをインストールして設定するには、次の手順を実行します。

  1. お使いのオペレーティングシステムに合ったTerraformインストールパッケージをTerraform公式サイトからダウンロードします。

    この例では、Terraform for Linuxが使用されます。

  2. パッケージを /usr/local/binに解凍します。

    抽出された実行可能ファイルが別のディレクトリにある場合は、path変数へのパスをグローバルに追加する必要があります。

  3. 次のコマンドを実行して、Terraformがインストールされているかどうかを確認します。

    terraform

    サンプル成功応答:

    使用法: terraform [-version] [-help] <command> [args]
  4. RAMユーザーを作成し、ユーザーに権限を付与します。

    重要

    Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 これらの資格情報を使用してOSSで操作を実行することは、リスクの高い操作です。 RAMユーザーのAccessKeyペアを使用してTerraformを設定することを推奨します。

    1. RAMコンソールにログインします。

    2. Terraformという名前のRAMユーザーを作成します。次に、RAMユーザーのAccessKeyペアを作成します。

      詳細については、「RAM ユーザーの作成」をご参照ください。

    3. カスタムポリシーをRAMユーザーにアタッチします。

      Terraform RAMユーザーに適切なポリシーをアタッチできます。 詳細については、「RAMユーザーへの権限付与」をご参照ください。

  5. 次のコマンドを実行して、Terraformプロジェクトの作業ディレクトリを作成します。

    重要

    Terraformプロジェクトごとに作業ディレクトリを作成する必要があります。

    mkdir terraform-test
  6. 次のコマンドを実行して、terraform-testの作業ディレクトリに移動します。

    cd terraform-テスト

    Terraformは、Terraformが実行されているときに、ディレクトリ内のすべての *.tfおよび *.tfvarsファイルを読み取ります。 ビジネス要件に基づいて、異なるファイルに設定を書き込むことができます。 共通設定ファイルを次の表に示します。

    ファイル

    説明

    provider.tf

    プロバイダーの設定に使用します。

    terraform.tfvars

    プロバイダーの設定に必要な変数の設定に使用します。

    変数. tf

    共通変数の設定に使用します。

    resource.tf

    リソースの指定に使用します。

    data.tf

    パッケージファイルの指定に使用します。

    output.tf

    出力の設定に使用します。

    この例では、provider.tfという名前のプロバイダ構成ファイルが使用されています。

  7. 次のコマンドを実行して、認証用のprovider.tf設定ファイルを作成します。

    vim provider.tf

    次のサンプルコードは、構成ファイルの例を示します。

    プロバイダー "alicloud" {
        region           = "cn-beijing"
        access_key  = "LTA**********NO2"
        secret_key = "MOk8x0 ********************* wwff"
    } 
  8. 次のコマンドを実行して、terraform-testの作業ディレクトリを初期化します。

    重要

    Terraformプロジェクトの作業ディレクトリと構成ファイルを作成した後、作業ディレクトリを初期化する必要があります。

    terraform init

    サンプル成功応答:

    プロバイダプラグインの初期化...
    -https://releases.hashicorp.comで利用可能なプロバイダプラグインを確認しています...
    -プロバイダ "alicloud" (1.25.0) のプラグインをダウンロード...
    
    
    
    
    次のプロバイダーには、構成にバージョン制約がありません。最新バージョンがインストールされました。
    
    
    破損を含む可能性のある新しいメジャーバージョンへの自動アップグレードを防ぐには
    にversion = "..." の制約を追加することをお勧めします。構成内の対応するプロバイダーブロック (制約文字列)
    以下に提案されます。
    
    
    * provider.alicloud: version = "~> 1.25"
    
    
    Terraformは正常に初期化されました!
    
    
    You may now begin working with Terraform. 「terraform plan」を実行してみてください
    インフラストラクチャに必要な変更。 すべてのTerraformコマンド
    今働くべきです。
    
    
    Terraformのモジュールまたはバックエンド設定を設定または変更した場合、このコマンドを再実行して、作業ディレクトリを再初期化します。 あなたが忘れた場合、その他
    コマンドはそれを検出し、必要に応じてそうするように思い出させます。            

Terraform を使った OSS の管理

Terraformをインストールした後、コマンドを実行してOSSリソースを管理できます。 このセクションでは、Terraformの一般的なコマンドの例を示します。

terraform plan

terraform planコマンドを実行して、構成ファイルを実行した場合に実行される操作をプレビューします。 このコマンドを使用すると、設定ファイルが実行された場合に実行される操作をプレビューできます。

次の手順では、terraform planコマンドを実行して、バケットを作成する操作を表示する方法の例を示します。

  1. 次のコマンドを実行して、test.tfという名前の構成ファイルを作成します。

    vim test.tf

    次のサンプルコードは、構成ファイルの例を示します。

    リソース "alicloud_oss_bucket" bucket-acl "{
      bucket = "demo-2023"
      acl = "private"
    } 
  2. 次のコマンドを実行して、上記の設定ファイルを実行した場合に実行される操作をプレビューします。

    terraform plan

    サンプル成功応答:

    計画前にメモリ内のTerraform状態をリフレッシュ...
    更新された状態は、このプランの計算に使用されますが、ローカルまたはリモート状態のストレージに保持されます。
    
    
    ------------------------------------------------------------------------
    
    実行プランが生成され、以下に示される。
    Resource actions are indicated with the following symbols:
      + 作成
    
    Terraformは次のアクションを実行します。
    
      + alicloud_oss_bucket.bucket-acl
          id:                <computed>
          acl:               "private"
          バケット: "デモ2023"
          creation_date:     <computed>
          extranet_endpoint: <computed>
          intranet_endpoint: <computed>
          location:          <computed>
          logging_isenable:  "true"
          owner:             <computed>
          referer_config.#:  <computed>
          storage_class: <computed>
    
    
    プラン: 1を追加、0を変更、0を破棄します。
    
    ------------------------------------------------------------------------
    
    注: このプランを保存するために "-out" パラメーターを指定しなかったため、Terraform
    これらのアクションが正確に実行されることを保証することはできません
    その後、「terraform apply」が実行されます。

terraform apply

terraform applyコマンドを実行して、作業ディレクトリの構成ファイルを実行します。

次の手順では、terraform applyコマンドを実行してバケットを作成する方法の例を示します。

  1. 次のコマンドを実行して、test.tfという名前の構成ファイルを作成します。

    vim test.tf

    次のサンプルコードは、構成ファイルの例を示します。

    リソース "alicloud_oss_bucket" bucket-acl "{
      bucket = "demo-2023"
      acl = "private"
    } 
  2. 次のコマンドを実行して、設定ファイルを実行します。

    terraform apply

    サンプル成功応答:

    実行プランが生成され、以下に示される。
    Resource actions are indicated with the following symbols:
      + 作成
    
    Terraformは次のアクションを実行します。
    
      + alicloud_oss_bucket.bucket-acl
          id:                <computed>
          acl:               "private"
          バケット: "デモ2023"
          creation_date:     <computed>
          extranet_endpoint: <computed>
          intranet_endpoint: <computed>
          location:          <computed>
          logging_isenable:  "true"
          owner:             <computed>
          referer_config.#:  <computed>
          storage_class: <computed>
    
    
    プラン: 1を追加、0を変更、0を破棄します。
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      値を入力: はい
    
    alicloud_oss_bucket.bucket-acl: Creating...
      acl:               "" => "private"
      bucket: "" => "デモ2023"
      creation_date:     "" => "<computed>"
      extranet_endpoint: "" => "<computed>"
      intranet_endpoint: "" => "<computed>"
      location:          "" => "<computed>"
      logging_isenable:  "" => "true"
      owner:             "" => "<computed>"
      referer_config.#:  "" => "<computed>"
      storage_class: "" => "<computed>"
    alicloud_oss_bucket.bucket-acl: 1秒後に作成完了 (ID: demo-2023)
    
    申請完了! リソース: 1追加、0変更、0破棄。
    説明

    上記の手順を実行した後、デモ2023のバケットが存在しない場合、名前のバケットが作成されます。 Terraformによって作成された空の同名バケットが存在する場合、既存のバケットは削除され、同じ名前のバケットが作成されます。

terraform destroy

terraform destroyコマンドを実行して、Terraformによって作成された空のバケットを削除します。

次の手順では、terraform destroyコマンドを実行して、Terraformによって作成された空のバケットを削除する方法の例を示します。

  1. 次のコマンドを実行して、test.tfという名前の構成ファイルを作成します。

    vim test.tf

    次のサンプルコードは、構成ファイルの例を示します。

    リソース "alicloud_oss_bucket" bucket-acl "{
      bucket = "demo-2023"
      acl = "private"
    } 
  2. 次のコマンドを実行して、設定ファイルを実行します。

    terraform destory

    サンプル成功応答:

    Terraformは、選択したプロバイダーを使用して、次の実行計画を生成しました。
    Resource actions are indicated with the following symbols:
      -破壊する
    
    Terraformは次のアクションを実行します。
    
      # alicloud_oss_bucket.bucket-aclは破壊されます
      -リソース "alicloud_oss_bucket" bucket-acl "{
          -acl = "private" -> null
          -bucket = "demo-2023" -> null
          -creation_date = "2023-01-04" -> null
          -extranet_endpoint = "oss-cn-hangzhou.aliyuncs.com" -> null
          -force_destroy = false -> null
          -id = "demo-2023" -> null
          -intranet_endpoint = "oss-cn-hangzhou-internal.aliyuncs.com" -> null
          -location = "oss-cn-hangzhou" -> null
          -owner = "1379 ***" -> null
          -redundancy_type = "LRS" -> null
          -storage_class = "Standard" -> null
          -tags = {} -> null
        }
    
    プラン: 0を追加、0を変更、1を破棄します。
    
    本当にすべてのリソースを破壊したいですか?
      Terraformは、上記のようにすべての管理インフラストラクチャを破壊します。
      アンドゥはありません。 「はい」のみが確認できます。
    
      値を入力: はい
    
    alicloud_oss_bucket.bucket-acl: Destroying... [id=デモ2023]
    alicloud_oss_bucket.bucket-acl: 2秒後に破壊が完了
    
    完全破壊! リソース: 1破壊されました。

terraformインポート

Terraformによってバケットが作成されていない場合は、terraform importコマンドを使用してバケットをインポートできます。

次の例では、terraform importコマンドを実行してバケットをインポートする方法を説明します。

  1. 次のコマンドを実行して、設定ファイルを作成します。

    vim main.tf

    次のサンプルコードは、構成ファイルの例を示します。

    リソース "alicloud_oss_bucket" bucket "{ 
     bucket = "aliyundoc-demo" 
     acl = "private"
    } 
  2. 次のコマンドを実行して、設定ファイルを実行します。

    terraform import alicloud_oss_bucket.bucket aliyundoc-demo

    サンプル成功応答:

    alicloud_oss_bucket.bucket: ID "aliyundoc-demo" からインポート...
    alicloud_oss_bucket.bucket: インポート準備!
      インポート用に準備されたalicloud_oss_bucket
    alicloud_oss_bucket.bucket: リフレッシュ状態... [id=aliyundoc-demo]
    
    インポート成功!
    
    インポートされたリソースを上に示します。 これらのリソースは現在
    あなたのTerraform州とそれ以降はTerraformによって管理されます。

参考資料

  • Terraformを使用してバケットを管理する方法の詳細については、alicloud_oss_bucketをご参照ください。

  • Terraformを使用してオブジェクトを管理する方法の詳細については、alicloud_oss_bucket_objectをご参照ください。

  • Terraformの詳細については、Terraform Registryをご覧ください。