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, IBM Cloud News, IBM Cloud アップデート情報

平素よりIBM Cloud をご愛顧いただきまして誠にありがとうございます。 IBM Cloud ポータルにアナウンスとして掲載されている通り、IBM Cloud サービス記述書(SD)の内容に、変更がありますのでお知ら ...続きを読む


IBM Cloud の ISMAP 対応状況について(2023年1月)

IBM Cloud Blog, IBM Cloud News

IBM CloudのISMAP対応状況につきまして、IBM Cloudをご利用の皆様へ改めまして、最新の対応状況をお知らせいたします。 弊社は、監査機関による監査を終え、2022年12月12日に登録の申請を行い、2023 ...続きを読む


AI技術を活用した駐車場利用状況管理システム「aki-doco(アキドコ)」のご紹介

IBM Cloud Blog, IBM Partner Ecosystem, クラウドとAI...

屋外駐車場で空きスペースを探して、何度も駐車場を周回してしまい駐車に時間がかかった経験は誰にでもあるのではないでしょうか? 株式会社オーイーシーでは、ネットワークカメラの情報をもとに、AI技術を活用して屋外駐車場の満空状 ...続きを読む