LoginSignup
4
0

More than 3 years have passed since last update.

[OCI]リソース・マネージャを使って、MYSQL Database Serviceを作成してみた (2020/11/15)

Last updated at Posted at 2020-11-17

この記事では、OCIのマネージドTerraform環境であるリソース・マネージャを使って、MySQL Database Serviceを作成してみたことを紹介します。

リソース・マネージャとは

Oracle Cloud Infrastructureリソースをプロビジョニングするプロセスを自動化できるOracle Cloud Infrastructureサービス
「infrastructure-as-code」モデルを使用してリソースをインストール、構成、および管理するのに役立つTerraformのマネージド環境

リソース・マネージャの機能

リソース・マネージャは以下のような特徴、機能があります(2020/11/15時点)
- インフラストラクチャの自動化と標準化、環境のレプリケーションを容易に行う
- Terraform エンジンのフルマネージドサービス
- 指定したコンパートメントのリソースをTerraform構成ファイルの生成(Resource Discovery)
- GitLabで管理されたTerraform構成ファイルからリソース・マネージャスタックの作成(構成ソース・プロバイダ)
- スタックの最後に実行された構成と実際(現在)のインフラストラクチャの状態との差分抽出(ドリフト検出)
- サンプル構成を使った環境構築
- 使用できる Terraform フォーマットは v0.11/v0.12/v0.13

以下のサンプルは Terraform v0.12 フォーマットで記載しています。

MYSQL Database Service 作成サンプル

使用している変数

  • mysql_configuration_id:MYSQL Database ServiceのコンフィグレーションIDzu05.png
  • mysql_password :管理者ユーザパスワード
  • mysql_shape :MYSQL Database Serviceで利用するシェイプ
  • privateSubnet_id :サブネットOCID

指定している名前

  • admin_username :管理者ユーザ名(admin)
  • hostname_label/display_name:ホスト名(mysql1)

そのほかはデフォルト設定を指定

mysql.tf
resource oci_mysql_mysql_db_system export_MySQL1 {
  admin_password      = var.mysql_password
  admin_username      = "admin"
  availability_domain = data.oci_identity_availability_domain.TGjA-AD-1.name
  backup_policy {
    is_enabled        = "true"
    retention_in_days = "7"
    window_start_time = "00:00"
  }
  compartment_id          = var.compartment_ocid
  configuration_id        = var.mysql_configuration_id
  data_storage_size_in_gb = "50"
  display_name = "MySQL1"
  fault_domain = "FAULT-DOMAIN-1"
  hostname_label = "mysql1"
  maintenance {
    window_start_time = "WEDNESDAY 04:22"
  }
#  mysql_version = "8.0.22-u2-cloud"
  port          = "3306"
  port_x        = "33060"
  shape_name    = var.mysql_shape
  state     = "ACTIVE"
  subnet_id = var.privateSubnet_id

  lifecycle {
    ignore_changes = [admin_password, admin_username]
  }
}
data oci_identity_availability_domain export_TGjA-AD-1 {
  compartment_id = var.compartment_ocid
  ad_number      = "1"
}

サンプル環境の作成

MySQL Database Serviceを構築する例として以下の構成を作成
zu01.gif
コンピュートインスタンスにnginxとphpをインストールし、wordpressモジュールを展開、MySQL Database ServiceにDatabaseとユーザを作成しています。
Terraform構成ファイルはgithubからダウンロード可能です。

環境構築の実行

1.Webコンソールのメニューから「リソース・マネージャ」>「スタック」を開き「スタックの作成」をクリック
2.githubから入手したtfファイルを圧縮したZIPファイルもしくはフォルダを指定してリソース・マネージャスタックを作成zu03.png
3. 計画ジョブ・適用ジョブを実行

サンプルファイルの補足

予約済パブリックIPの使用

コンピュートインスタンスとロード・バランサには、それぞれ予約済パブリックIPを割り当ててみた

予約済パブリックIPの生成

publicip.tf
resource oci_core_public_ip publicip_lb {
  compartment_id = var.compartment_ocid
  display_name = "lb01"
  lifetime = "RESERVED"
}

コンピュートインスタンスへの割り当て

パブリックIPを割り当てるVNIC、プライベートIPのOCIDを取得し、予約済パブリックIPを割り当てる

publicip_compute.tf
data oci_identity_availability_domain AD-1 {
  compartment_id = var.compartment_ocid
  ad_number      = "1"
}
data oci_core_vnic_attachments instance1_vnics {
  availability_domain = data.oci_identity_availability_domain.AD-1.name
  compartment_id      = var.compartment_ocid
  instance_id         = oci_core_instance.ap1.id
}

data oci_core_vnic instance1_primary_vnic {
    vnic_id = data.oci_core_vnic_attachments.instance1_vnics.vnic_attachments[0].vnic_id
}

data oci_core_private_ips instance1_ip {
    vnic_id = data.oci_core_vnic.instance1_primary_vnic.id
}
resource oci_core_public_ip publicip_ap {
  compartment_id = var.compartment_ocid
  display_name = "ap01"
  lifetime      = "RESERVED"
  private_ip_id = data.oci_core_private_ips.instance1_ip.private_ips[0].id
}

ロード・バランサへの割り当て

publicip_lb.tf
resource oci_load_balancer_load_balancer LB1 {
  compartment_id = var.compartment_ocid
  display_name = "LB1"
  ip_mode    = "IPV4"
  is_private = "false"
  reserved_ips {
    id = oci_core_public_ip.publicip_lb.id
  }
  network_security_group_ids = [
    oci_core_network_security_group.export_Network-Security-Group-for-AP.id,
  ]
  shape = "100Mbps"
  subnet_ids = [
    oci_core_subnet.export_PublicSubnet.id,
  ]
}

適用ジョブログ

適用ジョブのログに、ロードバランサ、APサーバのパブリックIPアドレスとAPサーバへのsshログイン用秘密鍵ファイル内容が出力される
zu04.png

wordpressの初期設定

コンピュートインスタンスのパブリックIPアドレスに ブラウザで httpアクセスすることで wordpress 初期画面が表示されることを確認
http://<コンピュートインスタンスパブリックIPアドレス>/
zu02.png

おわりに

OCIの Terraform マネージドサービスのリソース・マネージャを使用して MySQL Database Serviceおよびそれにアクセスするコンピュートインスタンスにwordpress環境をデプロイしてみた。

4
0
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
4
0