LoginSignup
3
3

More than 3 years have passed since last update.

IBM Cloud Schematicsで仮想サーバを作ってみる

Last updated at Posted at 2020-01-10

IBM Cloud Schematicsとは

AWSにはCloud Formationという構成管理サービスがありますが、IBM Cloudにもようやくできました。独自実装されているCloud Formationとは違ってTerraform準拠です。

https://cloud.ibm.com/schematics/overview

仕組み

コントロールのための画面やAPIはIBM Cloudが提供します。TerraformのテンプレートはGitHubまたはGitLabに置いておきます。Cloud FormationだとS3にも置けるのですが残念ながらSchematicsは対応していません。将来に期待したいです。

今回やったこと

  • IBM Cloudの仮想サーバ(Classic Infrastructure)をTerraformでプロビジョンする
  • Terraformのテンプレート置き場として、IBM Cloud ToolchainのGitLabを使用し、かつプライベートリポジトリとする

以下のようなイメージです。

image.png

検証

GitLab

サービスのオーダー

IBM Cloudからオーダーできますがそこは本題ではないので省略します。

リポジトリの作成

schematics-sampleという名前で作成します。このときリポジトリはプライベートにしておきます。

アクセストークンの生成

SchematicsからGitLabにアクセスするためのアクセストークンを生成しておきます。GitLabでリポジトリを表示すると画面上部にリンクがありますのでそこを辿るとわかりやすいかもしれません。

image.png

トークン名は適当に、スコープはapiにしておきます。

image.png

生成したトークンは後で使うので忘れずにメモしておきます。

image.png

Terraformテンプレートの作成

tok02ゾーンで1コア1GBの仮想サーバをプロビジョンします。テンプレートの書き方は以下のサイトにIBMさんのサンプルが公開されているのでそれを参考にできますが、間違いがあったり古かったりするので、実際に使う場合は試行錯誤が必要かもしれません。

https://ibm-cloud.github.io/tf-ibm-docs/

今回は自力で次のようなテンプレートを用意しました。

provider.tf
# IBM CloudでClassic Infrastructureを使うための設定
provider "ibm" {
  iaas_classic_username = "${var.iaas_classic_username}"
  iaas_classic_api_key  = "${var.iaas_classic_api_key }"
}
variables.tf
# 変数宣言
variable "iaas_classic_username" {}
variable "iaas_classic_api_key" {}
version.tf
# Terraformバージョン前提(なくてもいいだろう)
terraform {
  required_version = ">= 0.11"
}
main.tf
# プロビジョンする仮想サーバのスペックを記述
# see https://ibm-cloud.github.io/tf-ibm-docs/?cm_mc_uid=92470806367715716527401&cm_mc_sid_50200000=62168701578624041505
resource "ibm_compute_vm_instance" "schematics-sample-vm1" {
  hostname             = "schematics-sample-vm1"
  domain               = "example.com"
  os_reference_code    = "CENTOS_7_64"
  datacenter           = "tok02"
  network_speed        = 10
  hourly_billing       = true
  private_network_only = true
  cores                = 1
  memory               = 1024
  disks                = [25]
  local_disk           = false
}

これらを先ほどのリポジトリにpushしておきます。

IBM Cloud Classic InfrastructureのAPIキーの取得

コンソールのIAM画面から確認できます。

image.png

このキーがまだ未作成の場合が画面右上に生成ボタンが表示されるので生成してください。

キーを表示すると次の情報が得られます。

image.png

APIユーザー名とAPIキーをメモしておいてください。

Schematicsワークスペースの作成

カタログからSchematicsサービスを選択します。

image.png

ワークスペースを作成します。

image.png

リポジトリのURLとアクセストークンを入力し、「入力変数の取得」をクリックします。

image.png

GitLabに正しくアクセス出来れば次のようにvariables.tfから変数を取得できるはずです。

image.png

ここに先ほど確認したAPIユーザー名とAPIキーを入力します。APIキーのような大事な情報は横の「機密」チェックをしておくと、この後の処理で値の表示がマスクされるようになります。

入力が終わったら「作成」をクリックします。

プランの生成

Schematicsのコンソールが開きます。

image.png

「生成プラン」をクリックします。

問題なければ次のように正常終了します。

image.png

プランの適用

これで実行準備が整いました。

image.png

「プランの適用」をクリックします。

image.png

成功しました。

デバイスが登録されました。

image.png

最後に

今回はとりあえず仮想サーバを1台つくりましたが、ベアメタルやVPC、そしてIBM Cloudの各種サービスにも対応しているようです。これまでIBM Cloudの構成管理は自力で作りこんでいたケースが多かったと思いますが、今後はSchematicsで一元管理ができるようになることでしょう。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3