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

1. ওভারভিউ

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

ক্লাউড এসকিউএল ব্যক্তিগত সংযোগের অনুমতি দিতে PSC পরিষেবা সংযুক্তি ব্যবহার করার ক্ষমতা রাখে। এই ল্যাবে আপনি বিকল্পটি কনফিগার এবং পরীক্ষা করতে পারেন।

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

চিত্র 1.

1893f48fe1298ea2.png

এই ল্যাবের জন্য, আপনার একই প্রকল্পে দুটি প্রকল্প বা পৃথক ভিপিসি লাগবে

উদ্দেশ্য

এই ল্যাবে আপনি নিম্নলিখিত কাজগুলি কীভাবে সম্পাদন করবেন তা শিখবেন:

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

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

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

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

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

3. টাস্ক 1. (টেরাফর্ম) এর সাথে ডাটাবেস প্রকল্পের জন্য পরিবেশ সেটআপ করুন

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

  1. ডানদিকে আপনার কনসোলের শীর্ষে অবস্থিত ক্লাউড শেল খুলুন, নিশ্চিত করুন যে আপনি ক্লাউড শেল-এ ডাটাবেস প্রকল্পের জন্য ডেটাবেস প্রকল্প আইডি দেখতে পাচ্ছেন, অ্যাক্সেসের অনুমতি দেওয়ার জন্য যেকোনো প্রম্পট নিশ্চিত করুন। 4261e776f64ea978.png
  2. টেরাফর্ম-ডিবি নামে একটি ফোল্ডার তৈরি করুন এবং ফোল্ডারে যান
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- এ যান এবং সম্পাদকে ফোল্ডারটি খুলতে ওকে নির্বাচন করুন। 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. ক্লাউড শেল টার্মিনালে ফিরে যান নিশ্চিত করুন যে আপনি টেরাফর্ম-ডিবি ডিরেক্টরি cd terraform-db তে আছেন এবং নিম্নলিখিত কমান্ডগুলি চালান

terraform init

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

terraform plan

আপনার পরিকাঠামো স্থাপনের জন্য Terraform কী পদক্ষেপ নেবে তা দেখায় একটি কার্যকরী পরিকল্পনা তৈরি করে।

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

4. টাস্ক 2. 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 apply কমান্ড দিন এবং রান করতে yes টাইপ করুন। PSC সংযুক্তি সহ CloudSQL দৃষ্টান্ত তৈরি করতে 5+ মিনিট সময় লাগতে পারে।

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

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

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

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

5. টাস্ক 3. ভোক্তা প্রকল্পের জন্য পরিবেশ সেটআপ করুন (টেরাফর্ম)

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

  1. Google ক্লাউড আইকনের পাশে ডানদিকে আপনার কনসোলের শীর্ষে, ড্রপডাউনে ক্লিক করুন এবং তারপরে সমস্ত ট্যাব নির্বাচন করুন৷

প্রকল্প বারপ্রকল্প বার 2

  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 আপনার প্রকৃত ভোক্তা প্রকল্প আইডি দিয়ে প্রতিস্থাপন করুন এই আইডিটি আপনি টাস্ক 2 সেকশন 2-5 এ কপি করেছেন 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. ক্লাউড শেল টার্মিনালে ফিরে যান নিশ্চিত করুন যে আপনি টেরাফর্ম-ভোক্তা ডিরেক্টরি cd terraform-consumer গ্রাহক প্রকল্পে আছেন এবং নিম্নলিখিত কমান্ডগুলি চালান

terraform init

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

terraform plan

আপনার পরিকাঠামো স্থাপনের জন্য Terraform কী পদক্ষেপ নেবে তা দেখায় একটি কার্যকরী পরিকল্পনা তৈরি করে।

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

6. টাস্ক 4. কনজিউমার প্রোজেক্টে SQL DB অ্যাটাচমেন্টে PSC এন্ডপয়েন্ট তৈরি করুন এবং VM (Terraform) পরীক্ষা করুন

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

  1. ক্লাউড শেল সম্পাদকে ফিরে যান, টেরাফর্ম-ভোক্তা ডিরেক্টরি খুলুন এবং psc.tf ফাইলটি নির্বাচন করুন। ফাইলে নিম্নলিখিত Terraform কোড যোগ করুন। এটি একটি স্থির অভ্যন্তরীণ আইপি তৈরি করে, একটি পিএসসি এন্ডপয়েন্ট এবং মারিয়া ডিবি ইনস্টল সহ একটি পরীক্ষা VM তৈরি করে৷
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. ক্লাউড শেল টার্মিনালে ফিরে যান নিশ্চিত করুন যে আপনি টেরাফর্ম-ভোক্তা ডিরেক্টরি cd terraform-consumer গ্রাহক প্রকল্পে আছেন এবং নিম্নলিখিত কমান্ডগুলি চালান

terraform plan

আপনার পরিকাঠামো স্থাপনের জন্য Terraform কী পদক্ষেপ নেবে তা দেখায় একটি কার্যকরী পরিকল্পনা তৈরি করে।

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

7. টাস্ক 5. PSC IP ঠিকানার মাধ্যমে VM থেকে এন্ডপয়েন্ট সংযোগ যাচাই করুন

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

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

8. টাস্ক 6. ডাটাবেস এন্ট্রি যাচাই করুন

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

  1. Google ক্লাউড আইকনের পাশে ডানদিকে আপনার কনসোলের শীর্ষে, ড্রপডাউনে ক্লিক করুন এবং তারপরে সমস্ত ট্যাব নির্বাচন করুন৷

প্রকল্প বারপ্রকল্প বার 2

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

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

9. পরিষ্কার করুন

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

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

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

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

10. অভিনন্দন

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

আরও জানুন

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