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

【NTTコミュニケーションズ様との共同実証報告】AI時代のネットワーク運用高度化に向けた取り組み

IBM Cloud Blog, オートメーション

システム障害と聞くだけで緊張してしまうのは私だけでしょうか?心理的にも体力的にも負荷が高いこの仕事をAIによって、なんとか楽にならないのか、と誰しもが思っています。そこで、IBMのAIによる運用支援ソリューションであるA ...続きを読む


IBMテクノロジーをフル活用しサービス競争力を大幅に向上させた、証券会社向けサービス「KICSクラウド」とは?

IBM Cloud Blog, IBM Partner Ecosystem

光世証券株式会社(以下、光世証券)は、証券業務を行う事業者向けに、証券基幹業務システムをクラウドで利用できる“KICS クラウド”の提供を開始することを発表しました。KICSクラウドはIBM Cloud環境で稼働している ...続きを読む


キー・パートナーに訊く | 西尾新司(エヌアイシー・ソフト株式会社)

IBM Cloud Blog, IBM Partner Ecosystem

「力になりたいとずっと思っていた」——そう話すのは、IBM Champion*の称号を2020年からお持ちの、エヌアイシー・ソフト株式会社所属の西尾 新司さん。今回の「キー・パートナーに訊く」は元IBM Champion ...続きを読む