실습 설정 안내 및 요구사항
계정과 진행 상황을 보호하세요. 이 실습을 실행하려면 항상 시크릿 브라우저 창과 실습 사용자 인증 정보를 사용하세요.

Terraform을 사용하여 클라이언트 및 서버 만들기

실습 1시간 universal_currency_alt 크레딧 5개 show_chart 중급
info 이 실습에는 학습을 지원하는 AI 도구가 통합되어 있을 수 있습니다.
이 콘텐츠는 아직 휴대기기에 최적화되지 않음
최상의 경험을 위해 데스크톱 컴퓨터에서 이메일로 전송된 링크를 사용하여 방문하세요.

개요

이 실습에서는 비공개 네트워크에서 데이터베이스 서버 역할을 하는 Linux 가상 머신을 프로비저닝합니다. 또한 관리자로서 데이터베이스 서버에 연결하기 위한 배스천 호스트로 사용할 수 있는 가상 머신을 만듭니다. 원격 연결을 위해 데이터베이스 서버를 구성하고 사용자 계정을 추가합니다. 그런 다음 MySQL-MariaDB 클라이언트 소프트웨어를 설치하여 클라이언트 머신에서 데이터베이스 서버에 연결합니다.

목표

이 실습에서는 다음 작업을 수행하는 방법을 알아봅니다.

  • 클라이언트 및 서버 VM 만들기
  • 데이터베이스 서버 관리
  • 클라이언트에서 데이터베이스에 연결

설정 및 요건

이 작업에서는 실습을 위한 초기화 단계를 수행합니다.

각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.

  1. 시크릿 창을 사용하여 Google Skills에 로그인합니다.

  2. 실습 사용 가능 시간(예: 1:15:00)을 참고하여 해당 시간 내에 완료합니다. 일시중지 기능은 없습니다. 필요한 경우 다시 시작할 수 있지만 처음부터 시작해야 합니다.

  3. 준비가 되면 실습 시작을 클릭합니다.

  4. 실습 사용자 인증 정보(사용자 이름비밀번호)를 기록해 두세요. Google Cloud Console에 로그인합니다.

  5. Google Console 열기를 클릭합니다.

  6. 다른 계정 사용을 클릭한 다음, 안내 메시지에 실습에 대한 사용자 인증 정보를 복사하여 붙여넣습니다. 다른 사용자 인증 정보를 사용하는 경우 오류가 발생하거나 요금이 부과됩니다.

  7. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.

작업 1. 클라이언트 및 서버 VM 만들기

  1. 새 웹브라우저 창을 열고 Google Cloud 콘솔(console.cloud.google.com)로 이동합니다. 프로젝트 선택기를 사용하여 이름이 'qwiklabs-gcp'로 시작하는 첫 번째 프로젝트를 선택합니다.

  2. 탐색 메뉴(탐색 메뉴 아이콘)에서 Cloud 개요를 클릭합니다.

  3. 프로젝트 정보 섹션에서 프로젝트 ID를 찾아 복사하여 텍스트 파일에 붙여넣습니다. 이 파일은 나중에 필요합니다.

프로젝트 정보 섹션에 강조 표시된 프로젝트 ID

  1. 콘솔의 오른쪽 상단에 있는 Cloud Shell 활성화(Cloud Shell 활성화 아이콘) 아이콘을 클릭합니다. Cloud Shell 터미널이 브라우저 창 하단에 있는 창에서 열립니다.

  2. SSH 키를 구성하지 않고도 이 프로젝트 내에서 만든 모든 가상 머신에 연결할 수 있도록 IAP(Identity-Aware Proxy) API를 활성화합니다. Cloud Shell에 다음 명령어를 입력합니다.

gcloud services enable iap.googleapis.com
  1. 이전 실습의 완료된 버전이 포함된 GitHub 저장소를 클론하기 위해 다음 명령어를 입력합니다.
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
  1. 다음 폴더로 변경합니다.
cd ~/training-data-analyst/courses/db-migration/terraform-clients-servers/
  1. ls를 입력하면 이 폴더에 지난 실습에서 완료한 Terraform 파일이 표시됩니다.

  2. 편집기 열기를 클릭한 다음, training-data-analyst/courses/db-migration/terraform-clients-servers/ 폴더에서 terraform.tfvars 파일을 엽니다.

  3. terraform.tfvars 파일의 값을 아래와 같이 변경합니다.

항목
project_id
gcp_region_1
gcp_zone_1



  1. 비공개 네트워크에 Debian Linux 머신을 만듭니다. vm-mysql-server.tf라는 파일을 추가하고, 다음 Terraform 코드를 붙여넣습니다.
# Create a MySQL Server in Private VPC resource "google_compute_instance" "mysql-server" { name = "mysql-server-${random_id.instance_id.hex}" machine_type = "f1-micro" zone = var.gcp_zone_1 tags = ["allow-ssh", "allow-mysql"] boot_disk { initialize_params { image = "debian-cloud/debian-11" } } network_interface { network = google_compute_network.private-vpc.name subnetwork = google_compute_subnetwork.private-subnet_1.name # access_config { } } } output "mysql-server" { value = google_compute_instance.mysql-server.name } output "mysql-server-external-ip" { value = "NONE" } output "mysql-server-internal-ip" { value = google_compute_instance.mysql-server.network_interface.0.network_ip }
  1. 서버를 관리하는 데 사용할 수 있는 머신을 공용 네트워크에 만듭니다. vm-mysql-client.tf라는 파일을 추가하고 다음 Terraform 코드를 붙여넣습니다.
# Create MySQL Client in Public VPC resource "google_compute_instance" "mysql-client" { name = "mysql-client-${random_id.instance_id.hex}" machine_type = "f1-micro" zone = var.gcp_zone_1 tags = ["allow-ssh"] boot_disk { initialize_params { image = "debian-cloud/debian-11" } } network_interface { network = google_compute_network.public-vpc.name subnetwork = google_compute_subnetwork.public-subnet_1.name access_config { } } } output "mysql-client" { value = google_compute_instance.mysql-client.name } output "mysql-client-external-ip" { value = google_compute_instance.mysql-client.network_interface.0.access_config.0.nat_ip } output "mysql-client-internal-ip" { value = google_compute_instance.mysql-client.network_interface.0.network_ip }
  1. 공용 네트워크에서 MySQL 서버로의 통신을 허용하는 방화벽 규칙을 만듭니다. vpc-firewall-rules-private.tf 파일을 열고 다음 방화벽 규칙을 끝에 추가합니다.
# allow MySQL only from public subnet resource "google_compute_firewall" "private-allow-mysql" { name = "${google_compute_network.private-vpc.name}-allow-mysql" network = google_compute_network.private-vpc.name allow { protocol = "tcp" ports = ["3306"] } source_ranges = [ "${var.subnet_cidr_public}" ] target_tags = ["allow-mysql"] }
  1. Terraform을 초기화하고 계획을 만들려면 Cloud Shell 터미널로 돌아가서 다음 명령어를 입력합니다.
terraform init terraform plan
  1. 리소스를 만들려면 다음 명령어를 실행합니다.
terraform apply -auto-approve

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 클라이언트 및 서버 VM 만들기

작업 2. 데이터베이스 서버 관리

  1. Terraform 프로세스가 완료되면 탐색 메뉴(탐색 메뉴 아이콘)에서 Compute Engine을 클릭합니다. 여러 대의 머신이 나열됩니다.

  2. mysql-server- 머신을 찾고 내부 IP 주소(10.2.2.2 또는 10.2.2.3일 가능성이 높음)를 기록해 둡니다.

  3. mysql-server- 머신의 SSH를 클릭하여 해당 머신에 연결합니다.

참고: 이 시점에서 서버에 MySQL을 설치해야 합니다. 그러나 서버에 외부 IP 주소가 없기 때문에 인터넷에 액세스할 수 없으므로 MySQL을 설치하는 명령어를 실행할 수 없습니다. Google Cloud NAT 서비스를 사용하여 NAT를 추가하면 이 문제를 해결할 수 있습니다.
  1. 다음 명령어를 실행하여 작동하지 않는지 확인합니다. 인터넷에 액세스하려고 하면 결국 실패합니다.
sudo apt install wget
  1. 터미널에 반환된 메시지는 다음과 같이 표시됩니다.
Could not connect to debian.map...
  1. Ctrl+C를 입력하여 명령어를 종료합니다.

  2. Cloud Shell 코드 편집기로 돌아가서 training-data-analyst/courses/db-migration/terraform-clients-servers 폴더에 cloud-nat.tf라는 파일을 추가한 다음, 다음 Terraform 코드를 해당 파일에 추가합니다.

resource "google_compute_router" "nat-router" { name = "nat-router" region = google_compute_subnetwork.private-subnet_1.region network = google_compute_network.private-vpc.id bgp { asn = 64514 } } resource "google_compute_router_nat" "private-nat" { name = "private-nat" router = google_compute_router.nat-router.name region = google_compute_router.nat-router.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" } }
  1. Cloud Shell 터미널로 돌아가서 다음 명령어를 실행하여 오류가 없는지 확인합니다.
terraform plan
  1. 그런 다음 계획을 적용하여 NAT를 만듭니다.
terraform apply -auto-approve
  1. MySQL 서버에 연결된 SSH 창으로 돌아갑니다. 다음 명령어를 실행하여 MySQL을 설치합니다.
sudo apt-get update sudo apt-get install -y default-mysql-server
  1. MySQL-MariaDB가 실행 중인지 확인하려면 다음 명령어를 입력합니다.
sudo systemctl status mysql

다음과 같이 출력이 표시됩니다.

mariadb.service - MariaDB 10.5.15 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2022-08-01 20:55:10 UTC; 33s ago
  1. 'q'를 입력하여 종료합니다.

  2. 다음 명령어를 사용하여 루트 사용자의 비밀번호를 만듭니다.

sudo mysql_secure_installation

초기 비밀번호는 비어 있습니다.

  1. 안내에 따라 기억할 수 있는 비밀번호를 사용하여 루트의 비밀번호를 만듭니다. 나머지 프롬프트에는 모두 를 선택합니다.

  2. 다음 명령어를 사용하여 루트 계정으로 데이터베이스에 로그인합니다.

sudo mysql -u root -p
  1. 메시지가 표시되면 새로 만든 비밀번호를 입력합니다.

클라이언트 머신에서 로그인할 사용자 계정이 필요합니다.

  1. 비밀번호가 passworddbops라는 사용자를 만들려면 다음 명령어를 사용합니다.
CREATE USER 'dbops'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'dbops'@'%'; FLUSH PRIVILEGES;
  1. exit를 입력하여 MySQL 클라이언트를 종료합니다.

기본적으로 데이터베이스 서버는 로컬 머신의 연결만 리슨합니다. 구성을 간단하게 수정하여 이 문제를 해결할 수 있습니다.

  1. 다음 명령어를 사용하여 Nano 텍스트 편집기에서 구성 파일을 엽니다.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
  1. bind-address 줄을 찾고 줄 앞에 '#'을 추가하여 주석 처리합니다.
#bind-address = 127.0.0.1
  1. Ctrl+X를 입력하여 종료하고 변경사항을 저장하라는 메시지가 표시되면 Y를 입력합니다.

  2. 데이터베이스를 다시 시작하려면 다음 명령어를 입력합니다.

sudo systemctl restart mariadb

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 데이터베이스 서버 관리

  1. exit를 다시 입력하여 서버를 종료하고 클라이언트 VM으로 돌아갑니다.

작업 3. 클라이언트에서 데이터베이스에 연결

  1. 클라이언트 머신에서 MySQL-MariaDB 데이터베이스에 연결하려면 MySQL-MariaDB 클라이언트 소프트웨어를 설치해야 합니다.

  2. 탐색 메뉴(탐색 메뉴 아이콘)에서 Compute Engine을 클릭합니다. mysql-client- 머신의 SSH를 클릭하여 해당 터미널에 연결합니다.

  3. 새 SSH 창에서 다음 명령어를 입력하여 설치를 완료합니다.

sudo apt-get update sudo apt-get install -y default-mysql-client
  1. 탐색 메뉴 (탐색 메뉴 아이콘)로 돌아가 Compute Engine을 클릭합니다. mysql-server- 머신을 찾고 내부 IP 주소(10.2.2.2 또는 10.2.2.3일 가능성이 높음)를 기록해 둡니다.

  2. 데이터베이스에 연결하려면 다음 명령어를 사용합니다(SERVERIP를 방금 확인한 IP 주소로 바꿈).

mysql -h SERVERIP -u dbops -p'password'
  1. MariaDB 프롬프트에 '\s'를 입력합니다.

  2. 데이터베이스 서버의 세부정보가 반환됩니다.

  3. exit를 입력하여 MySQL 클라이언트를 종료합니다.

이 시점에는 데이터베이스가 없으므로 다른 작업을 수행할 필요가 없지만 완전한 솔루션이 마련되어 있습니다. 데이터베이스 서버는 공개 액세스가 차단된 보안 네트워크에 있습니다. 데이터베이스를 관리하고 MySQL-MariaDB 클라이언트 소프트웨어를 사용하여 머신에 연결하는 데 사용할 수 있는 Linux 머신이 공용 네트워크에 있습니다.

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 클라이언트에서 데이터베이스에 연결

  1. SSH 세션을 닫고 Cloud Shell 터미널로 돌아갑니다.

  2. 실습 초반에 만든 모든 항목을 삭제하려면 다음 명령어를 입력합니다.

terraform destroy -auto-approve

수고하셨습니다. 이 실습에서는 비공개 네트워크에서 데이터베이스 서버 역할을 하는 Linux 가상 머신을 프로비저닝했습니다. 또한 관리자로서 데이터베이스 서버에 연결하기 위한 배스천 호스트로 사용할 수 있는 가상 머신을 만들었습니다. 원격 연결을 위해 데이터베이스 서버를 구성하고 사용자 계정을 추가했습니다. 그런 다음 MySQL 클라이언트 머신에서 데이터베이스 서버에 연결하기 위해 MySQL 클라이언트 소프트웨어를 설치했습니다.

실습 종료하기

실습을 완료하면 실습 종료를 클릭합니다. Google Skills에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.

실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.

별점의 의미는 다음과 같습니다.

  • 별표 1개 = 매우 불만족
  • 별표 2개 = 불만족
  • 별표 3개 = 중간
  • 별표 4개 = 만족
  • 별표 5개 = 매우 만족

의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.

의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.

Copyright 2026 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.

시작하기 전에

  1. 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
  2. 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
  3. 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.

시크릿 브라우징 사용

  1. 실습에 입력한 사용자 이름비밀번호를 복사합니다.
  2. 비공개 모드에서 콘솔 열기를 클릭합니다.

콘솔에 로그인

    실습 사용자 인증 정보를 사용하여
  1. 로그인합니다. 다른 사용자 인증 정보를 사용하면 오류가 발생하거나 요금이 부과될 수 있습니다.
  2. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.
  3. 실습을 완료했거나 다시 시작하려고 하는 경우가 아니면 실습 종료를 클릭하지 마세요. 이 버튼을 클릭하면 작업 내용이 지워지고 프로젝트가 삭제됩니다.

현재 이 콘텐츠를 이용할 수 없습니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

감사합니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

한 번에 실습 1개만 가능

모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.

시크릿 브라우징을 사용하여 실습 실행하기

이 실습을 실행하는 가장 좋은 방법은 시크릿 모드 또는 시크릿 브라우저 창을 사용하는 것입니다. 개인 계정과 학생 계정 간의 충돌로 개인 계정에 추가 요금이 발생하는 일을 방지해 줍니다.