はじめに
クラウド環境にシステムを構築する際に、構成を俯瞰的にみるため構成図を作成するケースは多いと思います。
その際にどのようなツールを使われていますでしょうか
OCIでは新しくOCI Designer Toolkit(OKIT) というブラウザベースのOCI用設計図作成ツールが開発されているようです。
特徴の1つとして構成図を作成するだけでなく、設計が完成するとTerraformやAnsible用のスクリプトが作成出来るようなので少し試してみました。
下記に紹介ページのリンクを記載します。
https://www.ateam-oracle.com/introduction-to-okit-the-oci-designer-toolkit
またgithubのリポジトリは下記です。
https://github.com/oracle/oci-designer-toolkit
事前準備
今回はOCI上のComputeで新規にOracle Linux7.8を使用して構築しました。
まずはOKITのインストールに必要となるgit,dockerそして構築時に利用するためterraformをインストールします。
本ツールはdockerまたはvagrantを使用できますが、本記事は推奨されているdockerを使用します。
1 2 3 4 5 6 |
$ sudo yum install -y git $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ sudo yum install -y docker-ce $ sudo systemctl start docker $ sudo yum install -y terraform |
またOKITスクリプト実行前に、CLIでOCIを利用出来るようにしておくと、コンソールを使用せずにリソースの確認もでき便利なので、合わせてOCI CLIもインストールしておきます。
インストールに関する説明は下記をご覧ください
https://docs.oracle.com/cd/E97706_01/Content/API/SDKDocs/cliinstall.htm
1 2 3 4 5 6 7 8 9 10 11 |
$ bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)" # 途中で確認がされる項目は全てデフォルトで実行しています。 $ oci setup config # 設定項目は適宜入力してください。 COMPARTMENT_ID=[コンパートメントOCID] # 作成したリソースをするため、新規のコンパートメント(okit_test)を作成して設定します。 $ oci search resource structured-search --query-text 'query all resources where compartmentId = "'"${COMPARTMENT_ID}"'"' # 作成したコンパートメントにリソースが何もないことを確認します。 |
構築
gitリポジトリからクローンをして、構築します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ git clone -b v0.5.1 --depth 1 https://github.com/oracle/oci-designer-toolkit.git $ cd oci-designer-toolkit $ sudo docker build --tag okit --file ./containers/docker/Dockerfile --force-rm ./containers/docker/ $ sudo docker run -d --rm -p 80:80 \ --name okit \ --hostname okit \ -v ~/.oci:/root/.oci:Z \ -v `pwd`/okitweb:/okit/okitweb:Z \ -v `pwd`/visualiser:/okit/visualiser:Z \ -v `pwd`/log:/okit/log:Z \ okit |
以上で構築完了です。
ブラウザからアクセス
ローカルPCからブラウザを使用して、以下のURLにアクセスします。
http://インスタンスのIP/okit/designer
※接続できない場合はOCI上のSecurity List,Network Security Groupをご確認ください
※アクセスした際に一部画面表示がされないケースがありました。その場合ブラウザで再読み込みを行ってみてください。
アクセスすると、画面上部にメニューや、OCIのコンソールへのリンクがあり、中央には左からパレット、キャンバス、プロパティエリアに分かれています。
パレットでリソースを選択し、キャンバスにドラックアンドドロップで配置し、詳細をプロパティで設定していく流れになるかと思います。
今回はパレットのFragmentsに用意されている構成を選んで、ドラックアンドドロップしています。
プロパティはコンパートメントの名前を変更するぐらいであとはデフォルトの状態です。
メニューからterraformでのエクスポートを選択し、zipをダウンロードします。
ダウンロードしたzipファイルには下記が含まれています。
okit-terraform.zip
- main.tf
- terraform.tfvars
- variables.tf
実行する際には、terraform.tfvars内の下記の空白部分を入力する必要があります。
1 2 3 4 5 6 |
tenancy_ocid = "" user_ocid = "" fingerprint = "" private_key_path = "" region = "" compartment_ocid = "" |
そしてterraformを実行します。
日本のリージョンで実行する場合、ADが1つしかないのでmain.tf内のAD複数指定する箇所をコメントアウトしてください。
1 2 3 4 5 6 7 8 9 10 |
$ terraform init $ terraform apply Apply complete! Resources: 8 added, 0 changed, 0 destroyed. Outputs: Okit_TestId = ocid1.compartment.oc1..省略 okit-bastion-serverPrivateIP = 10.0.0.2 okit-bastion-serverPublicIP = <パブリックIPが表示> |
これでリソースが作成出来ました。
確認してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ oci search resource structured-search --query-text 'query all resources where compartmentId = "'"${COMPARTMENT_ID}"'"' | jq -r '.data.items[]."resource-type"' Vnic BootVolume Instance Subnet RouteTable SecurityList SecurityList RouteTable RouteTable SecurityList Vcn |
リソースが作成されているのがわかりますね。
まとめ
構成図の作成と同時にリソース作成用のスクリプトが作られるのは便利ですね。
ただ現状では扱えるリソースが限られていたり、ブラウザから入力出来るプロパティが物足りない感じもありました。
githubのリポジトリを見ると更新も頻繁に行われているようなので、今後さらに改善されていくことを期待しつつ、注目していきたいと思います。