LoginSignup
0

More than 1 year has passed since last update.

posted at

OKITでデザインしたシステム構成をResource Managerと連携してOCI上に構築してみた

  • OCI Designer Toolkit (OKIT) の使い方メモ〜その2
  • OKITを利用してリファレンス・アーキテクチャをデザインする
  • OKITとResource Managerを連携してデザインされたシステムを構築する

はじめに

OCI Designer Toolkit (OKIT)は、ブラウザベースのシステム・アーキテクチャ設計ツール (オープンソース) で、Oracle Cloud Infrastructure (OCI) 上のアーキテクチャ設計・プロトタイピングをグラフィカルなインターフェースで直感的に行うことができます。本記事ではOKITとResource Managerを連携し、OKIT上にデザインされたリファレンス・アーキテクチャをOCI上に構築します。OKITのインストール方法については前回の記事を参照ください。

OKITを利用してOCI上のアーキテクチャを可視化してみた

OKITリファレンス・アーキテクチャの利用

検証環境 (クライアント)

  • macOS 10.15.7 Catalina
  • Docker Engine 19.03.13
  • Oracle Cloud Infrastructure Designer and Visualisation Toolkit 0.13.0

OKITリファレンス・アーキテクチャの展開

OKITコンテナが稼働しているクライアントのブラウザから、下記URLでOKITにアクセスします。

http://localhost/okit/designer

OKITのメニューを開きReference ArchitectureからHA Web Applicationを選択してください。
20-11-09-21-56-21.png
リファレンス・アーキテクチャには、各アーティファクトが配置され、各種プロパティが事前定義済のシステム・アーキテクチャが用意されています。HA Web Applicationを選択するるとPrivate Subnetに配置された2台のWebアプリケーション、Database Cloud Service (DBCS) インスタンス (Database System)、Public Subnetに配置されたPublic Load Balancerと踏台サーバ (bastion) が配備された、代表的なWebシステム・アーキテクチャがキャンバスに表示されます。
20-11-09-22-07-08.png

もし、参考になるようにシステム・アーキテクチャがリファレンス・アーキテクチャにない場合はパレットからアーティファクトを選択、キャンバス上に配置し新規にアーキテクチャをデザインすることも可能です。そのときOCI Designer Toolkit Usage Guide - Examplesが参考になります。(英語ドキュメントですがキャンバスのスクリーンショットを見れば視覚的に理解できるはずです)

OKITリファレンス・アーキテクチャの編集

リファレンス・アーキテクチャをキャンバスに展開した状態で、画面の右側に表示される検証 (Valodate) パネルを開くと、未設定のプロパティ項目や適切でない設定を洗い出すことができます。
20-11-09-22-32-52.png

今回の場合はDatabase Systemのhawebdbインスタンスに公開鍵が登録されていないエラー(修正必須)、Compute Serviceの各インスタンスに公開鍵が登録されていないと警告(修正任意 : 構築後でも登録可能)メッセージが表示されています。キャンバス上の該当するアーティファクトをクリックしプロパティ (Properties) パネルを表示し、Authorized Keysにインスタンスへのアクセスに利用するSSHキーペアの公開鍵の内容をコピー&ペーストして値を登録します。その際にShape等の設定も確認し、適宜修正してください。また、Single ADのリージョンへの展開を予定している場合には、Availability Domainの値をAvailability Domain 1に変更し、適切なFault Domainに変更してください。
20-11-09-22-50-21.png

Database Systemの場合は、さらの選択項目が多いです。上記Availability DomainFault DomainShapeに加えて、Oracle Databaseのバージョン(Version)、エディション (Database Edition), ライセンスタイプ (License Model) 等を忘れずに確認ください。
20-11-09-22-50-34.png

プロパティの編集が終わりましたら、再度Validateパネルを表示し、エラーと警告が全て消えていることを確認します。

OKITからOCI利用料金の見積りを取得

Validateパネル下のCost Estimateパネルを開くとキャンバス上に展開されているアーキテクチャをOCI上に展開した際の月額費用を算出し、確認することができます。(設定ミスなどで思わぬ出費を防ぐ意味でも次のステップに進む前に確認することを推奨します)
20-11-09-23-01-15.png

また、Download BoMボタンから利用するサービス名と数量、稼働時間、月額費用が記載された部品リストをダウンロードできます。
20-11-09-23-02-19.png

構成や課金金額の管理、部門長への申請に便利な機能です。

OKITとResource Managerの連携

それではいよいよOKITとOracle Cloud Infrastructure Resource Managerと連携してデザインしたシステム・アーキテクチャをOCI上に展開したいと思います。OKITメインメニューよりResource Managerを選択してください。Export To Resource Managerダイアログの各設定項目を確認します。
20-11-09-23-12-04.png

Connection Profileにはconfigファイルの設定プロファイル、Regionにはシステムを展開するリージョン、Compartmentにはシステムを展開するコンパートメント名、Create/UpdateはResource Managerスタックを新規作成/既存スタックの更新どちらの操作を行うか、Stack NameにはResource Managerスタック名、Plan/ApplyはResource ManagerスタックをPlan (Terraformスクリプトの登録・検証を行ってシステムを構成可能な状態にする)するかApply (Plan後、システムを実際に構築する)するか設定・選択を行います。今回はとりあえずPlanを選択してCreate Stackをクリックします。
その後、OCIダッシュボードにログインし、OCIダッシュボードメニューから、ソリューションおよびプラットフォームリソース・マネージャーにアクセスし、OKITから作成したスタックが存在しているか確認してください。スタックの詳細を表示すると画面下部に現在実行中のジョブを確認することができます。
20-11-09-23-27-23.png

ジョブの進捗を見守るためにジョブ名をクリックし、ジョブの詳細画面に行くと・・・

・・・

・・・

失敗
20-11-09-23-28-52.png

次項でResource Managerのログを確認し、Terraformスクリプトを修正します。

(OKIT Version 0.13.0で確認) Terraformスクリプトの修正

Resource Manager内、ジョブの詳細画面よりジョブのエラーメッセージを確認するとoci_database_db_systemリソース作成する際のfault_domainsの値が不正だと怒られています。
20-11-09-23-39-24.png

Terraformのドキュメントを確認すると、fault_domains = "['FAULT-DOMAIN-1']"ではなく、fault_domains = ["FAULT-DOMAIN-1"]が正しい記述の様です。

ジョブの詳細画面、画面上部中央の Terraform構成のダウンロードボタンをクリックして構成ファイルをダウンロードします。ダウンロードしたzipファイルを解答し、main.tfファイルを修正します。実際の修正箇所は下記をご確認ください。

main.tf
# ------ Create Database System
resource "oci_database_db_system" "Hawebdb" {
    #Required
    availability_domain = data.oci_identity_availability_domains.AvailabilityDomains.availability_domains["1" - 1]["name"]
    compartment_id      = var.compartment_ocid
    database_edition    = "STANDARD_EDITION"
    db_home {
        #Required
        database {
            #Required
            admin_password      = "DevOps_123#"
            #Optional
            db_name        = "aTFdb"
            db_workload    = "OLTP"
        }
        #Optional
        db_version = "18.0.0.0"
        display_name = "hawebdb"
    }
    hostname        = "hawebdb1"
    shape           = "VM.Standard2.1"
    ssh_public_keys = ["ssh-rsa 省略"]
    subnet_id       = local.Ha_Web_Db_Sn_id
    #Optional
    data_storage_size_in_gb = "256"
    db_system_options {
        #Optional
        storage_management  = "LVM"
    }
    display_name            = "hawebdb"
    fault_domains           = ["FAULT-DOMAIN-1"] 
    license_model           = "LICENSE_INCLUDED"
    node_count       = "1"
}

main.tfファイルを修正後、Resource Managerスタックに再アップロードします。
スタックの詳細画面上部中央左よりのスタックの編集ボタンより、スタックの編集ウィザードを開始します。main.tfファイルを修正したフォルダをそのままアップロードしへ、変数はそのままで変更の保存を行ってください。
20-11-09-23-54-28.png

スタックの詳細画面上部中央のTerraformアクションセレクタより、計画を実行します。今回は、下記のように問題なくPlanジョブが完了しました。
20-11-09-23-58-30.png

Resource ManagerスタックのApply

スタックの詳細画面上部中央のTerraformアクションセレクタより、適用を実行します。下記のようにApplyジョブが完了することを確認してください。
20-11-10-00-07-56.png

Resource ManagerスタックのApplyが終了するとNetworkリソース、Conputeインスタンス、DBCSインスタンスが作成されていることが確認できていると思います。Bastionインスタンス経由で各サーバにアクセスし、OSおよびアプリケーションの設定を行ってください。

まとめ

前回と今回の記事でOCI Designer Toolkit (OKIT) のインストールとOCIアカウントとの連携、Resource Managerと連携しデザインしたアーキテクチャを実際に構築できることを確認しました。Microsoft Visioの様なデザインツールをイメージして利用すると柔軟性に欠ける部分もありますが、複数のOCIリソースをシングルページで設定できることで作業効率の改善ができます。また、デザインしたアーキテクチャからTerraformやAnsibleのスクリプトを生成してくれるのでInfrastructure as Codeの入門としても心強いツールです。

関連情報

oci-designer-toolkit
OCI Designer Toolkit Documentation
[ORACLE A-Team Chronicles] Introduction to OKIT the OCI Designer Toolkit
[ORACLE A-Team Chronicles] The OCI Designer Toolkit Templates Feature
[ORACLE A-Team Chronicles] OCI Designer Toolkit Resource Manager Integration
[SmartStyle社 技術ブログ] OCI Designer Toolkit(OKIT)を触ってみた
[Qiita] 【OKIT OCI Designer Toolkit】OCI 構成図作成ツールを使って、3分で環境構築をする

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
What you can do with signing up
0