はじめに
先日リリースされた構成図作成ツール(OKIT OCI Designer Toolkit)を試してみました。現状はOCIコンソールには組み込まれていないので、githubレポジトリからクローンして自身の環境で構築する必要があります。便利な機能として、Terraform
、Ansible
スクリプトへExportする事ができるので、設計をこのツールで行うと構築が非常に簡単になります。本稿では、OKIT OCI Designer Toolkitのセットアップ ~ Terraform Applyまでの手順をまとめます。
OKIT OCI Designer Toolkitとは
OKIT OCI Designer Toolkitは、迅速な設計とプロトタイプを作成するためのツールです。
ユーザーインターフェースは以下の画像のようになっており、パレット、キャンバス、プロパティの3つに分かれています。
パレットからアイコンをドラックアンドドロップで、キャンバスへ持っていくだけで以下のような図を作成できます。めっちゃ簡単!
メニューは以下のようになっています。
キャンバスに書いた構成図は、ローカルに保存(jsonファイルでExportされる)か、テンプレート
として保存ができます。
作成した構成図は、Image
、Terraform
、Ansible
、Resource Manager
としてExportが可能です。(私の環境ではResorce Manager Exportだけうまく行かなかった。)
その他のリファレンスは以下を参考にどうぞ。
インストールガイド
ユーザーガイド
サポートガイド
手順
本稿で行った手順は以下になります。
- Terraformのセットアップ
- OKIT OCI Designer Toolkitのセットアップ
- OKIT OCI Designer Toolkitでデザイン
- Terraformで環境構築
3分で環境構築してみた
Terraformのセットアップ
私は既にTerraformのセットアップを完了していたので、ここはスキップします。
初めての方は以下をご参照ください。
10分で理解するTerraform
OKIT OCI Designer Toolkitのセットアップ
私はOracle Linux OSのOCI Compute上に作成しましたが、ローカル環境でも問題なく動作すると思います。
本稿はDocker
を利用します。
80portを利用するので、対象マシンのポートが空いている事を確認した上で以下を実行します。
(Macユーザーの場合、以下でポートの使用状況を確認できます。)
$sudo lsof -i:80
それでは、OKIT OCI Designer Toolkitのセットアップをしていきます。
$ git clone https://github.com/oracle/oci-designer-toolkit.git
# docker serviceを起動させて、ビルド
$ cd oci-designer-toolkit/docker/
$ ./build-docker-image.sh
# サービススタート
$ cd oci-designer-toolkit/docker/
$ ./start-okit-server.sh
これだけでセットアップ完了です。サービススタート後、以下にアクセスする事ができます。
http://localhost/okit/designer
OKIT OCI Designer Toolkitでデザイン
今回は左のFragmentsから一つ選択しました。
Exportすると、okit-terraform.zip
というファイルを得る事ができます。構造はこんな感じです。
$ tree okit-terraform
okit-terraform
├── main.tf
├── terraform.tfvars
└── variables.tf
0 directories, 3 files
Terraformで環境構築
先ほどExportしたtfファイルを使って、環境構築をしていきます。
plan
する前に、terraform.tfvars
へ情報を追記する必要があります。
OCIDや鍵情報が空欄になっているのでそこを埋めます。
tenancy_ocid = ""
user_ocid = ""
fingerprint = ""
private_key_path = ""
region = ""
compartment_ocid = ""
完了したら、initからはじめていきます。
# 対象のパスへ入った状態でinit
$ terraform init
# 次にPlanを実行
$ terraform plan
# 最後にApply
$ terraform apply
# 消すときはデストロイ
$ terraform destroy
成功しました
Apply complete! Resources: 8 added, 0 changed, 0 destroyed
plan
は通ってapply
中にこけるパターン
OCIにはリソース制限があり、それに引っかかるケースがあると思います。
この場合だと、ネットワークコンポーネントは作られたけど、インスタンが作成されていない状態。
うまく行かなかったとしても、手動で消さない方がいいと思います。
oci_core_vcn.Okit_Bastion_Vcn: Creating...
oci_core_vcn.Okit_Bastion_Vcn: Creation complete after 1s [id=******]
oci_core_route_table.Okit_Rt001: Creating...
oci_core_internet_gateway.Okit_Bastion_Ig: Creating...
oci_core_security_list.Okit_Sl001: Creating...
oci_core_security_list.Okit_Bastion_Sl: Creating...
oci_core_route_table.Okit_Rt001: Creation complete after 1s [id=******]
oci_core_internet_gateway.Okit_Bastion_Ig: Creation complete after 1s [id=******]
oci_core_route_table.Okit_Bastion_Rt: Creating...
oci_core_security_list.Okit_Sl001: Creation complete after 2s [id=******]
oci_core_security_list.Okit_Bastion_Sl: Creation complete after 2s [id=******]
oci_core_route_table.Okit_Bastion_Rt: Creation complete after 1s [id=*******]
oci_core_subnet.Okit_Bastion_Sn: Creating...
oci_core_subnet.Okit_Bastion_Sn: Creation complete after 1s [id=********]
oci_core_instance.Okit_Bastion_Server: Creating...
Error: Service error:LimitExceeded. The following service limits were exceeded: vm-standard2-1-count. Request a service limit increase from the service limits page in the console. . http status code: 400. Opc request id: 4cccbe3293aaf8632c53e40cad3265da/689D1F376548947E682A4F7F7FE95A68/33472F7DBA11573A82AD057036342311
失敗の場合、serialは更新されないと思うので、制限を解除後再度apply
を実行します。
Plan: 1 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
oci_core_instance.Okit_Bastion_Server: Creating...
oci_core_instance.Okit_Bastion_Server: Still creating... [10s elapsed]
oci_core_instance.Okit_Bastion_Server: Still creating... [20s elapsed]
oci_core_instance.Okit_Bastion_Server: Still creating... [30s elapsed]
oci_core_instance.Okit_Bastion_Server: Still creating... [40s elapsed]
oci_core_instance.Okit_Bastion_Server: Still creating... [50s elapsed]
oci_core_instance.Okit_Bastion_Server: Still creating... [1m0s elapsed]
oci_core_instance.Okit_Bastion_Server: Still creating... [1m10s elapsed]
oci_core_instance.Okit_Bastion_Server: Still creating... [1m20s elapsed]
oci_core_instance.Okit_Bastion_Server: Still creating... [1m30s elapsed]
oci_core_instance.Okit_Bastion_Server: Still creating... [1m40s elapsed]
oci_core_instance.Okit_Bastion_Server: Still creating... [1m50s elapsed]
oci_core_instance.Okit_Bastion_Server: Still creating... [2m0s elapsed]
oci_core_instance.Okit_Bastion_Server: Creation complete after 2m1s [id=*********]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
最後はデストロイして、さようなら