IBM Cloud チュートリアル

Schematicsを使用したVPCでの複数インスタンスのプロビジョニング

記事をシェアする:

この投稿は、2020年8月6日に、米国 Cloud Blog(英語) に掲載されたブログの抄訳です。

IBM Cloud Schematicsを使用してTerraformスクリプトを使用して、仮想プライベート・クラウド(VPC)内の複数の仮想サーバー・インスタンス(VSI)をプロビジョニングする方法をご紹介します。

Terraformスクリプトに直接取り掛かるのではなく、Terraformとは何か、IBM Cloud SchematicsがIBM Cloud上でのTerraformスクリプト作成をどのように簡素化しているのかを簡単に学んでみましょう。

Terraformとは?

Terraform(英語)は、HashiCorpによって開発されたオープンソース・ソフトウェアで、高レベルのスクリプト言語を使用することで、IBM Cloudプラットフォーム、クラシック・インフラストラクチャ、VPCインフラストラクチャ・リソースの予測可能で一貫性のあるプロビジョニングを可能にします。Terraformを使用することで、IBM Cloudリソースのプロビジョニングを自動化し、複雑で多階層のクラウド環境を迅速に構築し、Infrastructure as Code (IaC)(英語)を実現することができます。

IBM Cloud Schematicsとは?

IBM Cloud Schematics(英語) を使用すると、ワークスペースを使用して環境全体の IBM Cloud リソースを整理することができます。各ワークスペースは、Terraform テンプレートを構築する一連の Terraform 設定ファイルを指します。ワークスペースは、独自の Terraform テンプレートを作成するか、IBM が提供する事前定義済みのテンプレートのいずれかを使用するかを選択できます。ワークスペースを使用すると、クラウド・リソースに対する懸念事項を分離することができ、IBM Cloud Identity and Access Management で個別に管理することができます。IBM Cloud Schematicsを使用するには、Terraform CLIやTerraform用のIBM Cloud Providerプラグインをインストールする必要はありません。

始めてみましょう

VPC(英語)内に1つのVSIを作成するのは、Terraform IBMプロバイダ(IBM外のWebサイトへ)を使用すると非常に簡単です。ドキュメント(英語)を確認すると、サンプルのTerraformスクリプトは以下のようになっています。

resource "ibm_is_instance" "testacc_instance" {
  name = "testinstance"
  image = "7eb4e35b-4257-56f8-d7da-326d85452591"
  profile = "bx2-2x8"
 
  primary_network_interface {
    subnet = ibm_is_subnet.testacc_subnet.id
  }
 
  network_interfaces {
    name = "eth1"
    subnet = ibm_is_subnet.testacc_subnet.id
  }
 
  vpc = ibm_is_vpc.testacc_vpc.id
  zone = "us-south-1"
  keys = [ibm_is_ssh_key.testacc_sshkey.id]
 
  //User can configure timeouts
  timeouts {
    create = "90m"
    delete = "30m"
  }
}

しかし、VPC で複数の VSI をプロビジョニングする最も簡単な方法は何でしょうか?

この質問は、新しいVSIが作成されたときにフローティングIPを自動で割り当てる(英語)vpc-instance-extension(IBM外のWebサイトへ)のコードサンプルを作成しているときに出てきました。

VPCソリューションのチュートリアル用(英語)のコンパニオンスクリプト(IBM外のWebサイトへ)の1つにこの答えがあり、あとはTerraformスクリプトを拡張して複数のVSIをプロビジョニングするだけです。

vpc-one-vsi スクリプトのコードスニペット。

 resource "ibm_is_instance" "instance" {
   name = "${var.basename}-instance"
   vpc = ibm_is_vpc.vpc.id
   zone = var.subnet_zone
   profile = module.map_gen1_to_gen2.profile
   image = data.ibm_is_image.ds_image.id
   keys = [data.ibm_is_ssh_key.ds_key.id]
   resource_group = data.ibm_resource_group.group.id
  
   primary_network_interface {
     subnet = ibm_is_subnet.subnet.id
   }
 }

countを使って複数のインスタンスを作成する

Terraformにはcountというパラメータがあり、これをリソースに適用することで設定を簡素化し、数値をインクリメントするだけでリソースをスケーリングすることができます。

そこで、上記のTerraformスクリプトにcountを追加します。

resource "ibm_is_instance" "instance" {
  count = var.instance_count
  name = "${var.basename}-instance-${count.index}"
  vpc = ibm_is_vpc.vpc.id
  zone = var.subnet_zone
  profile = module.map_gen1_to_gen2.profile
  image = data.ibm_is_image.ds_image.id
  keys = [data.ibm_is_ssh_key.ds_key.id]
  resource_group = data.ibm_resource_group.group.id
 
  primary_network_interface {
    subnet = ibm_is_subnet.subnet.id
  }
}

var.instance_countはTerraformの変数で、完全なスクリプトはVPC-tutorialsリポジトリのvsiブランチ(IBM外のWebサイトへ)にあります。

Schematicsの役割は?

このTerraformスクリプトは、スクリプトのあるGitリポジトリを指すだけで実行できます。

注: VPC リソースをプロビジョニングするには、権限を持つ IBM Cloud アカウントが必要です。VPC のドキュメントを参照してください。

  1. IBM Cloud の Schematics Workspaces に移動し、リソース・グループとロケーションを選択してworkspace—multiple-vsis を作成します。
  2. [Settings] で [Import your Terraform template] セクションまでスクロールし、GitHub または GitLab リポジトリ URL の下に https://github.com/IBM-Cloud/vpc-tutorials/tree/vsi/vpc-vsi/tf を指定します。
  3. Terraform のバージョンとして terraform_v0.12 を選択します。
  4. テンプレート情報の保存をクリックします。
  5. Terraformの変数セクションが表示されます。要件に応じて変数を入力し、instance_countを2以上に設定することを忘れないでください。
  6. Save changesをクリックし、ページ上部にスクロールしてGenerate (terraform plan)とApply (terraform apply)をクリックして変更を保存します。
  7. Apply planをクリックし、View logをクリックして進捗状況を確認します。(Generate planはオプションです)。

 

CLIを使用して

また、IBM Cloud CLI with Schematics プラグインを使用して、VPC リソースをプロビジョニングすることもできます。必要なのは、JSON 設定ファイルを作成してコマンドに渡すだけです。vpc-instance-extension リポジトリの README.md(IBM外のWebサイトへ) に記載されている指示に従ってください。

リソースの削除

VPC リソースのクリーンアップはとても簡単です。以下の 3 つのステップを実行するだけです。

Schematics ワークスペースの Actions をクリックし、Delete をクリックします。
すべての削除オプションにチェックを入れ、ワークスペース名を入力します。
削除をクリックして完了です。

詳細はこちら

VPC 関連のコンテンツやコード・サンプルについては、IBM Cloud Solution のチュートリアルをチェックしてください。


翻訳:IBM Cloud Blog 編集部

More IBM Cloud チュートリアル stories

セキュリティー・ロードマップ

IBM Cloud Blog

統合脅威管理、耐量子暗号化、半導体イノベーションにより、分散されているマルチクラウド環境が保護されます。 2023 安全な基盤モデルを活用した統合脅威管理により、価値の高い資産を保護 2023年には、統合された脅威管理と ...続きを読む


量子ロードマップ

IBM Cloud Blog

コンピューティングの未来はクォンタム・セントリックです。 2023 量子コンピューティングの並列化を導入 2023年は、Qiskit Runtimeに並列化を導入し、量子ワークフローの速度が向上する年になります。 お客様 ...続きを読む


ハイブリッドクラウド・ロードマップ

IBM Cloud Blog

コンポーザブルなアプリケーション、サービス、インフラストラクチャーにより、企業は複数のクラウドにまたがるダイナミックで信頼性の高い仮想コンピューティング環境の作成が可能になり、開発と運用をシンプルに行えるようになります。 ...続きを読む