Terraform は、クラウドインフラストラクチャとリソースを安全かつ効率的にプレビュー、構成、管理するために使用されるオープンソースツールです。Tablestore は Terraform に接続されています。このトピックでは、Terraform を使用して Tablestore インスタンスを作成する方法について説明します。
このトピックのサンプルコードは、数回クリックするだけで実行できます。詳細については、Terraform Explorer にアクセスしてください。
前提条件
このトピックの操作を実行するために必要な最小限の権限を持つ RAM ユーザーを使用することをお勧めします。これにより、Alibaba Cloud アカウントの AccessKey ペアが漏洩するリスクが軽減されます。必要な最小限の権限を含むポリシーを RAM ユーザーにアタッチする方法については、RAM ユーザーの作成 および RAM ユーザーへの権限の付与 を参照してください。この例では、次のポリシーが使用されます。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ots:GetInstance", "ots:BindInstance2Vpc", "ots:ListVpcInfoByInstance", "ots:UnbindInstance2Vpc", "ots:DeleteInstance", "ots:InsertInstance", "ots:UpdateInstance", "ots:ListInstance" ], "Resource": "*" } ] }
Terraform のランタイム環境は、次のいずれかの方法を使用して準備します。
Explorer: Alibaba Cloud は、Terraform のオンラインランタイム環境である Terraform Explorer を提供しています。Terraform Explorer にログオンすると、Terraform をインストールせずに Terraform を使用できます。この方法は、追加費用なしで Terraform を迅速かつ便利に使用およびデバッグしたい場合に適しています。
Cloud Shell: Terraform は Cloud Shell にプリインストールされており、ID 資格情報が構成されています。Cloud Shell で Terraform コマンドを直接実行できます。この方法は、低コストで Terraform を迅速かつ便利に使用およびデバッグしたい場合に適しています。
オンプレミスマシンに Terraform をインストールして構成する: この方法は、ネットワークの状態が悪い場合やカスタム開発環境を使用する場合に適しています。詳細については、Terraform のインストールと構成 を参照してください。
必要なリソース
alicloud_ots_instance: Tablestore インスタンス。
Tablestore インスタンスを作成する
作業ディレクトリと、そのディレクトリに main.tf という名前の構成ファイルを作成します。次のコードを main.tf 構成ファイルにコピーします。
variable "name" { default = "tf-example" } variable "region" { default = "cn-hangzhou" } provider "alicloud" { region = var.region } resource "random_integer" "default" { min = 10000 max = 99999 } # Tablestore instance resource "alicloud_ots_instance" "default" { name = "${var.name}-${random_integer.default.result}" // インスタンスの名前。 description = var.name // インスタンスの説明。 accessed_by = "Vpc" // インスタンスにアクセスできるネットワーク。 tags = { // インスタンスのタグ。 Created = "TF" For = "Building table" } }
次のコマンドを実行して、Terraform ランタイム環境を初期化します。
terraform init
次の情報が返された場合、Terraform は初期化されています。
Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
次のコマンドを実行して、コードの実行を開始します。
terraform apply
コードの実行中に、プロンプトが表示されたら
yes
と入力し、Enter キーを押します。コマンドが完了するまで待ちます。次のコマンド出力が返された場合、コードは正常に実行されています。You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
結果を確認します。
terraform show コマンドを実行する
作業ディレクトリで次のコマンドを実行して、Terraform を使用して作成されたインスタンスの詳細をクエリします。
terraform show
Tablestore コンソールにログオンする
Tablestore コンソール にログオンします。 ページで、作成されたインスタンスを表示します。
リソースの解放
Terraform を使用して作成または管理された上記のリソースが不要になった場合は、次のコマンドを実行してリソースを解放します。terraform destroy
コマンドの詳細については、共通コマンド を参照してください。
terraform destroy
コマンドの実行中に、解放するリソースをプレビューします。削除を確認するには、プロンプトが表示されたら yes
と入力し、Enter キーを押します。コマンドが実行されるまで待ちます。次の情報が表示された場合、リソースは解放されています。
Plan: 0 to add, 0 to change, 2 to destroy.
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
...
Destroy complete! Resources: 2 destroyed.
例
このトピックのサンプルコードは、数回クリックするだけで実行できます。詳細については、Terraform Explorer にアクセスしてください。
サンプルコード
より完全な例を表示する場合は、より完全な例 ページの対応するサービスのディレクトリにアクセスしてください。
FAQ
Terraform を使用して複数のクラウドサービスのインスタンスを作成する場合、インスタンスの作成と削除の効率を上げるにはどうすればよいですか?
例: 顧客 A は Terraform を使用して、一連のクラウドサービスのインスタンスを継続的に作成しています。Tablestore インスタンスは作成されますが、後続のプロセスで他のクラウドサービスのインスタンスの作成に失敗します。この場合、顧客 A はワークフローをロールバックし、作成されたインスタンスを削除し、ワークフローを再実行する準備をします。Tablestore インスタンスの削除には長い時間がかかり、各インスタンス名は同じリージョン内で一意です。したがって、顧客 A は、インスタンスが削除されるまで同じ Tablestore インスタンスを作成できません。この場合、顧客 A はインスタンスが削除されるまで待つ必要があります。
解決策: 各 Tablestore インスタンスの名前にランダムな数値サフィックスまたは自動インクリメント ID を追加して、ワークフローが実行されるたびに異なる名前のインスタンスが作成されるようにします。こうすることで、ワークフローのノードで障害が発生し、ワークフローをロールバックして再実行する必要がある場合、前のノードの Tablestore インスタンスが削除されるのを待たずにワークフローを再実行できます。