প্রাইভেট সার্ভিস কানেক্ট (টেরাফর্ম) এর মাধ্যমে ক্লাউডএসকিউএল-এর সাথে সংযোগ করা হচ্ছে

১. সংক্ষিপ্ত বিবরণ

অন্য কোনো প্রজেক্ট বা ভিপিসি থেকে একটি প্রাইভেট ক্লাউড এসকিউএল ইনস্ট্যান্সে সংযোগ করার জন্য বেশ কয়েকটি বিকল্প রয়েছে। প্রাইভেট সার্ভিস কানেক্ট (পিএসসি) সার্ভিস প্রডিউসারদের সার্ভিস অ্যাটাচমেন্টের মাধ্যমে তাদের সার্ভিসগুলো উন্মুক্ত করার সুযোগ দেয়। কনজিউমাররা এই সার্ভিস অ্যাটাচমেন্টগুলো ব্যবহার করে তাদের নিজস্ব পরিবেশে পিএসসি এন্ডপয়েন্ট এবং/অথবা পিএসসি ব্যাকএন্ড তৈরি করতে পারে এবং একটি নির্দিষ্ট প্রাইভেট আইপি-র মাধ্যমে এই প্রডিউসার সার্ভিসগুলোতে সংযোগ স্থাপন করতে পারে।

ক্লাউড এসকিউএল প্রাইভেট কানেকশনের জন্য পিএসসি সার্ভিস অ্যাটাচমেন্ট ব্যবহার করার ক্ষমতা রাখে। এই ল্যাবে আপনি অপশনটি কনফিগার ও পরীক্ষা করতে পারবেন।

এই ল্যাবে, আপনারা একটি সরল আর্কিটেকচার তৈরি করবেন যা CloudSQL-এর সাথে PSC এন্ডপয়েন্ট অ্যাক্সেসের ব্যবহার প্রদর্শন করবে।

চিত্র ১।

1893f48fe1298ea2.png

এই ল্যাবের জন্য আপনার দুটি প্রজেক্ট অথবা একই প্রজেক্টের মধ্যে আলাদা ভিপিসি (VPC) প্রয়োজন হবে

উদ্দেশ্য

এই ল্যাবে তোমরা নিম্নলিখিত কাজটি কীভাবে সম্পাদন করতে হয় তা শিখবে:

  • PSC সার্ভিস অ্যাটাচমেন্ট সহ একটি CloudSQL ইনস্ট্যান্স তৈরি করুন।
  • একটি স্ট্যাটিক আইপি ঠিকানা তৈরি করুন
  • CloudSQL ডেটাবেসে সংযোগ করার জন্য কনজিউমার VPC-তে একটি PSC এন্ডপয়েন্ট তৈরি করুন।
  • কনজিউমার নেটওয়ার্কে থাকা একটি টেস্ট ভিএম থেকে PSC এন্ডপয়েন্ট IP-এর মাধ্যমে SQL ডেটাবেসে অ্যাক্সেস যাচাই করুন।

২. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে।
  • আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
  1. এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।

গুগল ক্লাউড কনসোল থেকে, উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনটিতে ক্লিক করুন:

55efc1aaa7a4d3ad.png

পরিবেশটি প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি শেষ হলে, আপনি এইরকম কিছু দেখতে পাবেন:

7ffe5cbb04455448.png

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারের মধ্যেই করা যাবে। আপনাকে কিছুই ইনস্টল করতে হবে না।

৩. কাজ ১. (টেরাফর্ম) ব্যবহার করে ডাটাবেস প্রোজেক্টের জন্য পরিবেশ প্রস্তুত করা।

ডাটাবেস প্রজেক্টে আমরা ফায়ারওয়াল রুল ও সাবনেট সহ একটি কাস্টম ভিপিসি তৈরি করব। ক্লাউড কনসোল খুলুন এবং ডাটাবেসের জন্য যে প্রজেক্টটি ব্যবহার করবেন সেটি নির্বাচন করুন।

  1. আপনার কনসোলের উপরে ডানদিকে অবস্থিত ক্লাউড শেল খুলুন, নিশ্চিত করুন যে আপনি ক্লাউড শেলে ডাটাবেস প্রজেক্টের জন্য ডাটাবেস প্রজেক্ট আইডি দেখতে পাচ্ছেন, অ্যাক্সেসের অনুমতি দেওয়ার জন্য যেকোনো প্রম্পট নিশ্চিত করুন। 4261e776f64ea978.png
  2. terraform-db নামে একটি ফোল্ডার তৈরি করুন এবং ফোল্ডারে সরান
mkdir terraform-db  && cd terraform-db
  1. একটি main.tf, variable.tf এবং database.tf ফাইল তৈরি করুন।
touch main.tf variable.tf database.tf 
  1. ক্লাউড শেল এডিটর ভিউতে যান। এডিটর নির্বাচন করুন, এবং ইন্টারফেসটি লোড হওয়ার জন্য প্রয়োজনীয় প্রম্পটগুলোতে অনুমতি দিন।
  2. লোড হয়ে গেলে, ফাইল > ওপেন ফোল্ডার-এ যান এবং /home/your-user-name/terraform-db- তে গিয়ে এডিটর-এ ফোল্ডারটি খোলার জন্য Ok নির্বাচন করুন। 78f5eb9f2f82f1b0.png
  3. variable.tf ফাইলটি নির্বাচন করুন এবং নিম্নলিখিত বিষয়গুলো যোগ করুন। your-database-project-id-here লেখাটিকে উদ্ধৃতি চিহ্নের মধ্যে আপনার আসল ডাটাবেস প্রজেক্ট আইডি দিয়ে প্রতিস্থাপন করুন। ` your-consumer-project-id-here লেখাটিকে উদ্ধৃতি চিহ্নের মধ্যে আপনার আসল কনজিউমার প্রজেক্ট আইডি দিয়ে প্রতিস্থাপন করুন।
variable "project_id" {
  type = string
  default = "your-database-project-id-here"
}

variable "project_id_consumer" {
  type = set(string)
  default = ["your-consumer-project-id-here"]
}

variable "network_id" {
  type = string
  default = "database-net"
}

variable "region_id" {
  type = string
  default = "us-east1"
}

variable "db_password" {
  type = string
  default = "cloudsql24"
}
  1. এরপর main.tf ফাইলটি খুলুন। নিচে ব্যাখ্যা করা অনুযায়ী বিভিন্ন কাজ সম্পাদনের জন্য আমরা কিছু টেরাফর্ম কোড যোগ করব।

এপিআই সক্রিয় করুন

resource "google_project_service" "default"

ভিপিসি তৈরি করুন

resource "google_compute_network" "default"

ফায়ারওয়াল নিয়ম যোগ করুন

resource "google_compute_firewall" "allow_icmp"

  1. নিচের অংশটি মূল .tf ফাইলে কপি ও পেস্ট করুন।
resource "google_project_service" "default" {
  for_each = toset([
    "compute.googleapis.com",
    "sqladmin.googleapis.com"
  ])

  service            = each.value
  disable_on_destroy = false
}

resource "google_compute_network" "default" {
  project                 = var.project_id
  name                    = var.network_id
  auto_create_subnetworks = true
  mtu                     = 1460
  routing_mode            = "GLOBAL"
}

resource "google_compute_firewall" "allow_icmp" {
  name    = "allow-icmp-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "icmp"
  }

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-icmp"]
}

resource "google_compute_firewall" "allow_ssh" {
  name    = "allow-ssh-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "tcp"
    ports    = ["22"]
  }

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-ssh"]
}

resource "google_compute_firewall" "allow_sql" {
  name    = "allow-sql-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "tcp"
    ports    = ["3306"]
  }

  source_ranges = ["0.0.0.0/0"]
 }

resource "google_compute_firewall" "allow_internal" {
  name    = "allow-internal-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "icmp"
    }


  allow {
    protocol = "tcp"
    ports    = ["0-65535"]
  }
  allow {
    protocol = "udp"
    ports    = ["0-65535"]
  }

  source_ranges = ["10.128.0.0/9"]
 }
  1. ক্লাউড শেল টার্মিনালে ফিরে যান, নিশ্চিত করুন যে আপনি terraform-db ডিরেক্টরিতে আছেন cd terraform-db এবং নিম্নলিখিত কমান্ডগুলি চালান।

terraform init

ওয়ার্কিং ডিরেক্টরি প্রস্তুত করে। এই ধাপে প্রদত্ত কনফিগারেশনের জন্য প্রয়োজনীয় প্রোভাইডারগুলো ডাউনলোড করা হয়।

terraform plan

একটি এক্সিকিউশন প্ল্যান তৈরি করে, যা দেখায় আপনার ইনফ্রাস্ট্রাকচার ডেপ্লয় করতে Terraform কী কী পদক্ষেপ নেবে।

  1. এখন রিসোর্সগুলো তৈরি করতে terraform apply কমান্ডটি চালান এবং রান করার জন্য yes টাইপ করুন।

৪. কাজ ২. PSC সংযুক্তি ব্যবহার করে CloudSQL ইনস্ট্যান্স তৈরি করুন (টেরাফর্ম)

চলুন, কানেক্টিভিটি অনুমোদনের জন্য PSC অপশনসহ Terraform ব্যবহার করে একটি CloudSQL ইনস্ট্যান্স তৈরি করি। ডাটাবেস প্রজেক্টে এই কনফিগারেশনটি সম্পূর্ণ করুন।

  1. ক্লাউড শেল এডিটর ভিউতে যান। নিশ্চিত করুন যে আপনি terraform-db ফোল্ডারে আছেন। database.tf ফাইলটি নির্বাচন করুন এবং নিম্নলিখিত কোডটি যোগ করুন।
resource "google_sql_database_instance" "default" {
  name             = "psc-sql-db"
  region           = var.region_id
  database_version = "MYSQL_8_0"
  settings {
    tier              = "db-f1-micro"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled            = true
      binary_log_enabled = true
    }
    ip_configuration {
      psc_config {
        psc_enabled               = true
        allowed_consumer_projects = var.project_id_consumer
      }
      ipv4_enabled = false
    }
  }
  deletion_protection = false 
}

resource "google_sql_user" "users" {
  name     = "testsql"
  instance = google_sql_database_instance.default.name
  password = var.db_password 
}
  1. ক্লাউড শেল টার্মিনালে ফিরে যান এবং নিশ্চিত করুন যে আপনি terraform-db ডিরেক্টরিতে আছেন। এখন রিসোর্সগুলো তৈরি করতে terraform apply কমান্ডটি চালান এবং রান করার জন্য yes টাইপ করুন। PSC অ্যাটাচমেন্ট সহ CloudSQL ইনস্ট্যান্স তৈরি হতে ৫ মিনিটের বেশি সময় লাগতে পারে।

ডাটাবেস যাচাই করুন

  1. সম্পন্ন হলে, কনসোলের SQL- এ গিয়ে নতুন তৈরি করা psc-sql-db ডাটাবেস ইনস্ট্যান্সটি নির্বাচন করুন।
  2. বাম দিকে SQL অপশন স্লাইডআউটটি প্রসারিত করুন এবং Connections নির্বাচন করুন।
  3. সারাংশ ট্যাবের অধীনে আপনি সংযোগ সম্পর্কিত তথ্য দেখতে পাবেন।
  4. সার্ভিস অ্যাটাচমেন্ট অ্যাড্রেসটি কপি করে আপনার সিস্টেমের কোনো এক জায়গায় সংরক্ষণ করুন।
  5. টাস্ক ৩-এর ধাপ ৮ সম্পন্ন করতে আপনার এটি প্রয়োজন হবে।

পিএসসি সংযুক্তি সহ ক্লাউড এসকিউএল

  1. বাম দিকে SQL অপশন স্লাইডআউটটি প্রসারিত করুন এবং Users নির্বাচন করুন।
  2. আপনি testsql নামের একজন ব্যবহারকারীকে দেখতে পাবেন যার পাসওয়ার্ড cloudsql24 (এটি পরবর্তীতে ডেটাবেস অ্যাক্সেস করতে ব্যবহৃত হবে)।

৫. কাজ ৩. কনজিউমার প্রজেক্টের জন্য পরিবেশ সেটআপ (টেরাফর্ম)

কনজিউমার প্রজেক্টে আমরা ফায়ারওয়াল রুল ও সাবনেট সহ একটি কাস্টম ভিপিসি তৈরি করব। ক্লাউড কনসোল খুলুন এবং আপনি যে প্রজেক্টটি ব্যবহার করবেন তা নির্বাচন করুন।

  1. আপনার কনসোলের উপরে ডানদিকে গুগল ক্লাউড আইকনের পাশে, ড্রপডাউনে ক্লিক করুন এবং তারপরে অল ট্যাবটি নির্বাচন করুন।

প্রজেক্ট বারপ্রজেক্ট বার ২

  1. চালিয়ে যাওয়ার জন্য তালিকাভুক্ত প্রকল্পগুলো থেকে আপনার ভোক্তা প্রকল্প আইডি নির্বাচন করুন।
  2. আপনার কনসোলের উপরে ডানদিকে অবস্থিত ক্লাউড শেল খুলুন, নিশ্চিত করুন যে আপনি ক্লাউড শেলে কনজিউমার প্রজেক্ট আইডি দেখতে পাচ্ছেন, অ্যাক্সেসের অনুমতি দেওয়ার জন্য যেকোনো প্রম্পট নিশ্চিত করুন।
  3. terraform-consumer নামে একটি ফোল্ডার তৈরি করুন এবং ফোল্ডারে সরান
mkdir terraform-consumer  && cd terraform-consumer
  1. একটি main.tf, variable.tf এবং psc.tf ফাইল তৈরি করুন।
touch main.tf variable.tf psc.tf 
  1. কনজিউমার প্রজেক্ট আইডি-র জন্য ক্লাউড শেল এডিটর ভিউতে যান। এডিটর নির্বাচন করুন, এবং ইন্টারফেসটি লোড হওয়ার জন্য প্রয়োজনীয় প্রম্পটগুলোতে অনুমতি দিন।
  2. লোড হয়ে গেলে, ফাইল > ওপেন ফোল্ডার-এ যান এবং /home/your-user-name/terraform-consumer- এ গিয়ে এডিটরে ফোল্ডারটি খোলার জন্য Ok নির্বাচন করুন। 78f5eb9f2f82f1b0.png
  3. variable.tf ফাইলটি নির্বাচন করুন এবং নিম্নলিখিতগুলি যোগ করুন। your-consumer-project-id-here লেখাটিকে উদ্ধৃতি চিহ্নের মধ্যে আপনার আসল কনজিউমার প্রজেক্ট আইডি দিয়ে প্রতিস্থাপন করুন। your-psc-attachment-id-here লেখাটিকে উদ্ধৃতি চিহ্নের মধ্যে আপনার পিএসসি অ্যাটাচমেন্ট অ্যাড্রেস দিয়ে প্রতিস্থাপন করুন। এটি সেই আইডি যা আপনি টাস্ক ২-এর ২-৫ সেকশনে কপি করেছিলেন। d7ac9629a59abfc6.png
variable "project_id" {
  type = string
  default = "your-consumer-project-id-here"
}

variable "psc_attachment_id" {
  type = string
  default = "your-psc-attachment-id-here"
}

variable "network_id" {
  type = string
  default = "psc-endpoint-net"
}

variable "region_id" {
  type = string
  default = "us-east1"
}

variable "region_id2" {
  type = string
  default = "us-central1"
}
  1. এরপর main.tf ফাইলটি খুলুন। নিচে ব্যাখ্যা করা অনুযায়ী বিভিন্ন কাজ সম্পাদনের জন্য আমরা কিছু টেরাফর্ম কোড যোগ করব।

এপিআই সক্রিয় করুন

resource "google_project_service"

ভিপিসি তৈরি করুন

resource "google_compute_network"

NAT গেটওয়ে তৈরি করুন

resource "google_compute_router"
resource "google_compute_router_nat"

ফায়ারওয়াল নিয়ম যোগ করুন

resource "google_compute_firewall"

  1. নিচের অংশটি মূল .tf ফাইলে কপি ও পেস্ট করুন।
resource "google_project_service" "default" {
  for_each = toset([
    "compute.googleapis.com",
    "cloudresourcemanager.googleapis.com"
  ])

  service            = each.value
  disable_on_destroy = false
}

resource "google_compute_network" "default" {
  project                 = var.project_id
  name                    = var.network_id
  auto_create_subnetworks = false
  mtu                     = 1460
  routing_mode            = "GLOBAL"
}

resource "google_compute_subnetwork" "vm_subnet" {
  name          = "vm-subnet"
  ip_cidr_range = "192.168.50.0/24"
  region        = var.region_id2
  network       = google_compute_network.default.name
  project       = var.project_id
}

resource "google_compute_subnetwork" "psc_subnet" {
  name          = "psc-subnet"
  ip_cidr_range = "192.168.90.0/24"
  region        = var.region_id
  network       = google_compute_network.default.name
  project       = var.project_id
}

resource "google_compute_router" "default" {
  name    = "outbound-nat"
  region  = var.region_id2
  network = google_compute_network.default.id

 bgp {
  asn = 64514
  }
}

resource "google_compute_router_nat" "default" {
  name = "outbound-nat-gw"
  router = google_compute_router.default.name
  region = google_compute_router.default.region
  nat_ip_allocate_option = "AUTO_ONLY"
  source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"

  log_config {
    enable = true
    filter = "ERRORS_ONLY"
  }
}

resource "google_compute_firewall" "allow_icmp" {
  name    = "allow-icmp-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "icmp"
  }

  source_ranges = ["0.0.0.0/0"]
  
}

resource "google_compute_firewall" "allow_ssh" {
  name    = "allow-ssh-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "tcp"
    ports    = ["22"]
  }

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-ssh"]
}


resource "google_compute_firewall" "allow_internal" {
  name    = "allow-internal-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "icmp"
    }


  allow {
    protocol = "tcp"
    ports    = ["0-65535"]
  }
  allow {
    protocol = "udp"
    ports    = ["0-65535"]
  }

  source_ranges = ["192.168.0.0/16"]
 }
  1. ক্লাউড শেল টার্মিনালে ফিরে যান, নিশ্চিত করুন যে আপনি terraform-consumer ডিরেক্টরিতে আছেন। কনজিউমার প্রজেক্টে cd terraform-consumer কমান্ডটি চালান এবং নিম্নলিখিত কমান্ডগুলি রান করুন।

terraform init

ওয়ার্কিং ডিরেক্টরি প্রস্তুত করে। এই ধাপে প্রদত্ত কনফিগারেশনের জন্য প্রয়োজনীয় প্রোভাইডারগুলো ডাউনলোড করা হয়।

terraform plan

একটি এক্সিকিউশন প্ল্যান তৈরি করে, যা দেখায় আপনার ইনফ্রাস্ট্রাকচার ডেপ্লয় করতে Terraform কী কী পদক্ষেপ নেবে।

  1. এখন রিসোর্সগুলো তৈরি করতে terraform apply কমান্ডটি চালান এবং রান করার জন্য yes টাইপ করুন।

৬. কাজ ৪. কনজিউমার প্রজেক্ট এবং টেস্ট ভিএম-এ (টেরাফর্ম) SQL DB অ্যাটাচমেন্টের জন্য PSC এন্ডপয়েন্ট তৈরি করুন।

কনজিউমার প্রোজেক্টে এই কনফিগারেশনটি সম্পূর্ণ করুন।

  1. ক্লাউড শেল এডিটরে ফিরে যান, terraform-consumer ডিরেক্টরিটি খুলুন এবং psc.tf ফাইলটি নির্বাচন করুন। ফাইলটিতে নিম্নলিখিত টেরাফর্ম কোডটি যোগ করুন। এটি একটি স্ট্যাটিক ইন্টারনাল আইপি, একটি পিএসসি এন্ডপয়েন্ট এবং মারিয়া ডিবি ইনস্টল করা একটি টেস্ট ভিএম তৈরি করবে।
resource "google_compute_address" "default" {
  name = "psc-ip"
  region = var.region_id
  address_type = "INTERNAL"
  subnetwork = google_compute_subnetwork.psc_subnet.name
  address = "192.168.90.100" 
}

resource "google_compute_forwarding_rule" "default" {
  name = "psc-sql-endpoint"
  region = var.region_id
  network = google_compute_network.default.name
  ip_address = google_compute_address.default.self_link
  load_balancing_scheme = ""
  target = var.psc_attachment_id
}


resource "google_compute_instance" "sql_test_vm" {
  name         = "sql-test-vm"
  machine_type = "e2-medium"
  zone         = "${var.region_id2}-b"
  project      = var.project_id

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    subnetwork = google_compute_subnetwork.vm_subnet.name
  }

  # No external IP address
  network_performance_config {
    total_egress_bandwidth_tier = "DEFAULT"
  }

  tags = ["allow-icmp", "allow-ssh", "allow-internal", "allow-health-check"]

  # Install MariaDB at startup
  metadata_startup_script = <<EOF
#!/bin/bash
apt-get update
apt-get install -y mariadb-server
systemctl enable mariadb
EOF
}
  1. ক্লাউড শেল টার্মিনালে ফিরে যান, নিশ্চিত করুন যে আপনি terraform-consumer ডিরেক্টরিতে আছেন। কনজিউমার প্রজেক্টে cd terraform-consumer কমান্ডটি চালান এবং নিম্নলিখিত কমান্ডগুলি রান করুন।

terraform plan

একটি এক্সিকিউশন প্ল্যান তৈরি করে, যা দেখায় আপনার ইনফ্রাস্ট্রাকচার ডেপ্লয় করতে Terraform কী কী পদক্ষেপ নেবে।

  1. এখন রিসোর্সগুলো তৈরি করতে terraform apply কমান্ডটি চালান এবং রান করার জন্য yes টাইপ করুন।
  2. যেহেতু আমাদের VM এবং এন্ডপয়েন্ট ভিন্ন ভিন্ন অঞ্চলে অবস্থিত, তাই আমাদের PSC এন্ডপয়েন্টে গ্লোবাল অ্যাক্সেস সক্রিয় করতে হবে । আমরা কনসোলের মাধ্যমে এটি করে থাকি।
  3. কনজিউমার প্রজেক্ট কনসোলে, প্রাইভেট সার্ভিস কানেক্ট- এ যান। কানেক্টেড এন্ডপয়েন্ট ট্যাবের অধীনে, এন্ডপয়েন্ট সেকশনে দেখুন এবং psc-sql-endpoint নির্বাচন করুন।
  4. এখন EDIT নির্বাচন করুন, এবং তারপর Enable global access-এর পাশের চেকবক্সে ক্লিক করে Save অপশনটি নির্বাচন করুন। 7eeb5a4162f5f79d.png
  5. সংযোগ যাচাই করতে পরবর্তী ধাপে এগিয়ে যান।

৭. কাজ ৫. PSC IP অ্যাড্রেসের মাধ্যমে VM থেকে এন্ডপয়েন্ট কানেক্টিভিটি যাচাই করুন।

ভোক্তা প্রকল্পে এটি সম্পূর্ণ করুন।

  1. ভিএম ইনস্ট্যান্সে যান। sql-test-vm নির্বাচন করুন।
  2. ভিএম-এ সংযোগ করতে SSH বিকল্পটি নির্বাচন করুন।
  3. নিম্নলিখিত তথ্য ব্যবহার করে এন্ডপয়েন্টের মাধ্যমে ডেটাবেসে সংযোগ করুন:
mysql --host=192.168.90.100 --user=testsql --password=cloudsql24
  1. সংযোগ স্থাপিত হলে, নিম্নলিখিত psc-sql-db ব্যবহার করে একটি ডাটাবেস তৈরি করুন।
CREATE DATABASE remotesqldb;
  1. কাজ শেষ হলে সংযোগ থেকে বের হতে exit টাইপ করুন।

৮. কাজ ৬. ডাটাবেস এন্ট্রি যাচাই করুন

ডাটাবেস প্রজেক্টে এই যাচাইকরণটি সম্পূর্ণ করুন।

  1. আপনার কনসোলের উপরে ডানদিকে গুগল ক্লাউড আইকনের পাশে, ড্রপডাউনে ক্লিক করুন এবং তারপরে অল ট্যাবটি নির্বাচন করুন।

প্রজেক্ট বারপ্রজেক্ট বার ২

  1. চালিয়ে যাওয়ার জন্য তালিকাভুক্ত প্রজেক্টগুলো থেকে আপনার ডাটাবেস প্রজেক্ট আইডি নির্বাচন করুন।
  2. SQL- এ যান, psc-sql-db ডাটাবেসটি নির্বাচন করুন, SQL অপশনগুলো প্রসারিত করুন এবং Databases নির্বাচন করুন। আপনি কনজিউমার প্রজেক্ট ভিএম থেকে আপনার এইমাত্র তৈরি করা remotesqldb নামের ডাটাবেসটি দেখতে পাবেন .

ক্লাউড এসকিউএল ডিবি

৯. পরিষ্কার করা

ডাটাবেস প্রজেক্টে এটি সম্পূর্ণ করুন।

  1. ডাটাবেস প্রজেক্ট আইডি নির্বাচন করুন
  2. ক্লাউড শেলে যান এবং নিশ্চিত করুন যে আপনি ডাটাবেস প্রজেক্ট আইডি দেখতে পাচ্ছেন।
  3. terraform-db ডিরেক্টরিতে যান cd terraform-db এবং terraform destroy কমান্ডটি চালিয়ে yes টাইপ করুন। আপনার db প্রজেক্টে Terraform দিয়ে তৈরি করা সমস্ত রিসোর্স মুছে ফেলা হবে।

কনজিউমার প্রজেক্টে এটি সম্পূর্ণ করুন।

  1. ভোক্তা প্রকল্প আইডি নির্বাচন করুন
  2. ক্লাউড শেলে যান এবং নিশ্চিত করুন যে আপনি কনজিউমার প্রজেক্ট আইডি দেখতে পাচ্ছেন।
  3. terraform-consumer ডিরেক্টরিতে যান cd terraform-consumer এবং terraform destroy কমান্ডটি চালিয়ে yes টাইপ করুন। আপনার db প্রজেক্টে Terraform দিয়ে তৈরি করা সমস্ত রিসোর্স মুছে ফেলা হবে।

১০. অভিনন্দন

অভিনন্দন, আপনি সফলভাবে PSC অ্যাটাচমেন্ট সহ একটি ক্লাউড SQL ইনস্ট্যান্স কনফিগার করেছেন এবং অন্য একটি VPC-তে একটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট তৈরি করেছেন। আপনি PSC এন্ডপয়েন্টের মাধ্যমে একটি রিমোট VM থেকে ডাটাবেসে সফলভাবে সংযোগ করতে সক্ষম হয়েছেন।

আরও জানুন

আপনি প্রাইভেট সার্ভিস কানেক্ট এবং ক্লাউড এসকিউএল সম্পর্কে আরও পড়তে পারেন।