1. 目的
IBM Cloud Satelliteを、AWSやAzureの上に作成する時は、IBM Catalogからボタンを押下すればSatelliteのlocationをセットアップしてControle Planeの作成まで自動的に実施されます。これに対してIBM Cloud上に作成する時は、現在は手動作成する以外に方法がありません。最低6台の仮想Server作成からはじめてHostAttachShellをダウンロードして流した後にROKSクラスターの作成まで非常に手間暇かかる作業になります(最低半日)。これをIBM Cloud Schematicsを利用して自動構築できるようにしました。
IBM Cloud Schematicsは各種Serviceの導入/管理自動化を目的にTerraformによるInfrastructure as Codeを実現するための開発支援・実行環境を提供します。
IBMCloudのSchematicsで利用できるTerraformのサンプルがGitHub上に各種公開されており、これをベースに一部修正を加えて利用しております。(修正内容は"4.サンプルTerraformの修正内容"にて後述)
以下Satelliteセットアップの際のScematicsの利用手順及び利用したTerraformを紹介します。
Schematicsによる自動化対象範囲
1.VPC新規作成/仮想Server6台作成,他各種VPCサービス作成
2.Satellite Location作成
3.Server上のHostAttach Shell実行によりHost割り当て
4.Satellite Controle Plane作成
5.ROKSクラスター作成
(注意)
1. IBM Cloud上にIBM Cloud Satelliteを作成するのはテストまたはPOC用途に限定されます(サポート対象)
https://cloud.ibm.com/docs/satellite?topic=satellite-ibm
2. IBM Cloud上のSatelliteの手動セットアップについて下記を参照ください。
https://qiita.com/nori0315/items/a93229d561ce8c3bcd5b
2. Schematicsの作成/実行
SchematicsはCLIインターフェースを利用することもできますが、ここではIBMCloud Portalから入りGUIにより利用します。
APIキーの作成
まずSatelliteを作成するためにのAPI Keyを作成します。
Workspaceの作成
IBM Cloud CatalogからSchematicsを選択してワークスペース作成ボタンを押下すると下記画面現れるのでterraformのディレクトリィのあるgithubのリポジトリーを入力します。
(https://github.com/saka0315/terraform-provider-ibm/tree/master/examples/ibm-satellite)
画面をスクロールして新規作成するワークスペース名を入力、ここではロケーションは北アメリカを選択して次へのボタンを押下します。
下記の確認画面が出るので右下の作成ボタンを押します。
左メニューからジョブを選択して、該当のワークスペースの作成が成功したことを確認します。
設定変数の入力/確認
左メニューから設定を選択して、画面スクロールするとterraform のvariables.tfで定義した変数一覧が現れます。
一番上にあるibmcloud_api_keyに先ほど作成したAPIキーを入力して機密ボタンにチェックを入れ保存します。
他の変数は環境に合わせて適宜入力/保存してください。ここではDefault値を利用するものとします。
入力項目 | 変数名 | デフォルト値 |
---|---|---|
リソースグループ名 | resource_group | Default |
satelliteリージョン | ibm_region | us-east |
satelliteロケーション名 | location | satelllite-ibm |
Satellite管理リージョン名 | managed_from | wdc |
ロケーションゾーン | location_zones | us-east-1, us-east-2, us-east-3 |
VPC各種リソースのプレフィクス名 | is_prefix | satellite-ibm |
VPC仮想サーバーのFlavor | profile | bx2-4x16 |
ROKSクラスター名 | cluster | satellite-ibm-cluster |
ROKS配置ゾーン | cluster_zones | us-east-1,us-east-2, us-east-3 |
ROKSバージョン | kube_version | 4.8_openshift |
Planの生成
右上のプラン生成ボタンを押してプランを生成(terraform plan)して、入力内容のチェツクを行います。
Planの生成の失敗時は、ジョブの画面のログよりエラーメッセージを確認
して、設定画面の変数入力もしくはterraformスクリプトに原因がないかを確認します。terraformスクリプト修正した場合は設定画面の"最新をプル"を押下すればワークスペースの更新ジョブが流れます。
Planの適用
プランの生成が成功した後に、右上のプランの適用ボタンを押してPlanの適用(terraform apply)を実施します。
Schematics/Satellite/VPCの確認
ジョブ画面よりプランの適用が成功したことが確認できました。
次にSchematicsにより各種リソースが正常に作成されたことを確認します、
下記はVPCの仮想サーバーの画面になり、satellite-ibm-instance-0 ~ satellite-ibm-instance-05まで、bx2-4x16のフレーバーで作成されていることがわかります。
Satelliteの概要画面です。 "satelllite-ibm"の名前でロケーションが作成され、6台のHostが割り当て済みで正常に稼働していることがわかります。また右上に"Schematicsで管理"のボタンが現れ、以後は変更ある場合は当画面ではなくSchematics画面で管理することになります。
ROKS概要画面から"satellite-ibm-cluster"の名前でクラスターが作成され、正常に稼働されていることが確認できます。
またOpenshift Webコンソールにアクセスできることが確認できました
アプリケーションをBuild/Deployする時は、SatelliteではDefaultで内部Image Registryを提供していないので事前にICOS等に作成する必要があります。
3. Schematicsからの削除
これまで作成したSatellite関連リソースを削除するときは左
メニューのジョブを選び該当のワークスペースを選択して
アクションボタンより"リソースの破棄"を選択することによりワークスペース
削除されます。
4. サンプルTerraformの修正内容について
IBMより提供されているTerraformは下記内容を修正しています。
(https://github.com/saka0315/terraform-provider-ibm/tree/master/examples/ibm-satellite)
1. modules/cluster/main.tf バグ修正
ROKS ClusterのWorkerPool作成時にエラー発生したので
DefaultのWorker Poolを利用するように修正しています。
(Worker Poolの入力部をコメントアウト)
2. variables.tf
・変数profileを追加 (仮想サーバーのフレーバー選択)
VPC Server仕様を変更できるようにしました。デフォルトは"bx2-4x16" (4vCPU,16GRAM)
・変数kube_versionのデフォルト値の変更
4.7_openshift=>4.8_openshiftに変更
・変数resource_groupのデフォルト値の追加
"Default"を設定