arrow_back

Автоматичне розгортання інфраструктури за допомогою інструмента Terraform

Get access to 700+ labs and courses

Автоматичне розгортання інфраструктури за допомогою інструмента Terraform

Lab 1 година universal_currency_alt 5 кредитів show_chart Початковий
info This lab may incorporate AI tools to support your learning.
Get access to 700+ labs and courses

Огляд

За допомогою сервісу Terraform можна безпечно й сплановано створювати, змінювати та покращувати інфраструктуру. Це інструмент із відкритим кодом, який дає змогу систематизувати API в декларативні файли конфігурації, прив’язані до певної версії. Їх можна надсилати іншим учасникам команди у вигляді коду для редагування й перегляду.

Під час цього практичного заняття ви створите конфігурацію Terraform із модулем для автоматизації розгортання інфраструктури Google Cloud. Зокрема, вам потрібно розгорнути одну автоматичну мережу з правилом брандмауера й два екземпляри віртуальних машин, як показано на цій діаграмі:

Діаграма з конфігурацією Terraform

Цілі

На цьому практичному занятті ви навчитеся виконувати наведені нижче дії.

  • Створювати конфігурацію для автоматичної мережі
  • Створювати конфігурацію для правила брандмауера
  • Створювати модуль для екземплярів віртуальних машин
  • Створювати й розгортати конфігурацію
  • Перевіряти розгортання конфігурації

Налаштування

Для кожного практичного заняття ви безкоштовно отримуєте новий проект Google Cloud і набір ресурсів на визначений період часу.

  1. Натисніть кнопку Почати заняття. Якщо за практичне заняття необхідно заплатити, відкриється спливаюче вікно, де ви зможете обрати спосіб оплати. Ліворуч розміщено панель Відомості про практичне заняття з такими компонентами:

    • кнопка Відкрити консоль Google;
    • час до закінчення;
    • тимчасові облікові дані, які потрібно використовувати для доступу до цього практичного заняття;
    • інша інформація, необхідна для виконання цього практичного заняття.
  2. Натисніть Відкрити консоль Google або натисніть правою кнопкою миші й виберіть Відкрити анонімне вікно, якщо ви використовуєте вебпереглядач Chrome.

    Завантажаться необхідні ресурси. Потім відкриється нова вкладка зі сторінкою Вхід.

    Порада. Упорядковуйте вкладки в окремих вікнах, розміщуючи їх поруч.

    Примітка. Якщо з’явиться вікно Виберіть обліковий запис, натисніть Вибрати інший обліковий запис.
  3. За потреби скопіюйте значення в полі Username (Ім’я користувача) нижче й вставте його у вікні Вхід.

    {{{user_0.username | "Username"}}}

    Поле Username (Ім’я користувача) також можна знайти на панелі Відомості про практичне заняття.

  4. Натисніть Next (Далі).

  5. Скопіюйте значення в полі Password (Пароль) нижче й вставте його у вікні Welcome (Привітання).

    {{{user_0.password | "Password"}}}

    Поле Password (Пароль) також можна знайти на панелі Відомості про практичне заняття.

  6. Натисніть Next (Далі).

    Важливо. Обов’язково використовуйте облікові дані, призначені для відповідного практичного заняття. Не використовуйте облікові дані Google Cloud. Примітка. Якщо ввійти у власний обліковий запис Google Cloud, може стягуватися додаткова плата.
  7. Що від вас очікується

    • Прийміть Умови використання.
    • Не додавайте способи відновлення й двохетапну перевірку (оскільки це тимчасовий обліковий запис).
    • Не реєструйте безкоштовні пробні версії.

Через кілька секунд Google Cloud Console відкриється в новій вкладці.

Примітка. Щоб переглянути меню зі списком продуктів і сервісів Google Cloud, натисніть меню навігації вгорі ліворуч або введіть назву сервісу чи продукту в полі пошуку. Значок меню навігації

Завдання 1. Налаштуйте Terraform і Cloud Shell

У цьому завданні ви налаштуєте середовище Cloud Shell для використання інструмента Terraform.

Установіть Terraform

Наразі Terraform входить у пакет Cloud Shell. Перевірте, яку версію цього інструмента встановлено.

  1. На консолі Google Cloud натисніть Activate Cloud Shell (Активувати Cloud Shell) (Значок активації Cloud Shell).
  2. За потреби натисніть Continue (Продовжити).
  3. Щоб перевірити, чи встановлено Terraform, виконайте наведену нижче команду.
terraform --version

Вивід матиме такий вигляд:

Terraform v1.5.7

Примітка. Не хвилюйтесь, якщо ви отримаєте сповіщення про те, що версія Terraform застаріла, оскільки вказівки в цьому практичному занятті надано для Terraform версії 1.5.7 і новіших. Ви можете завантажити останню версію Terraform на цьому вебсайті. Terraform розповсюджується як пакет двійкового коду для всіх підтримуваних платформ і архітектур, а Cloud Shell працює на 64-розрядній версії Linux.

  1. Щоб створити каталог для конфігурації Terraform, виконайте таку команду:
mkdir tfinfra
  1. У Cloud Shell натисніть Open editor (Відкрити редактор) (Значок редактора Cloud Shell).

Примітка. Якщо з’явиться повідомлення "Unable to load code editor because third-party cookies are disabled" (Не вдається завантажити редактор коду, оскільки сторонні файли cookie заборонені.), натисніть Open in New Window (Відкрити в новому вікні). Редактор коду відкриється в новому вікні. Поверніться на початкову вкладку й натисніть Open Terminal (Відкрити термінал), а потім знову перейдіть на вкладку з редактором коду. Під час цього практичного заняття вам час від часу доведеться повертатися до термінала Cloud Shell.

  1. На панелі ліворуч редактора коду відкрийте папку tfinfra.

Ініціалізуйте Terraform

Terraform використовує архітектуру на основі плагінів, що забезпечує підтримку більшості доступних інфраструктур і постачальників послуг. Кожен постачальник функціонує окремо від Terraform як інкапсульований двійковий пакет. Ініціалізуйте Terraform, вибравши Google як постачальника послуг.

  1. Щоб створити новий файл усередині tfinfra, натисніть правою кнопкою миші папку tfinfra, а потім виберіть New File (Новий файл).
  2. Назвіть цей файл provider.tf і відкрийте його.
  3. Скопіюйте цей код у файл provider.tf:
provider "google" {}
  1. Щоб зберегти файл provider.tf, натисніть File (Файл) > Save (Зберегти).

  2. Щоб ініціалізувати Terraform, виконайте таку команду:

cd tfinfra terraform init

Тепер ви можете працювати з Terraform у Cloud Shell.

Завдання 2. Створіть мережу mynetwork і її ресурси

У цьому завданні ви створите автоматичну мережу mynetwork разом із правилом брандмауера й двома екземплярами віртуальних машин (mynet_vm_1 і mynet_vm_2).

Налаштуйте мережу mynetwork

Створіть нову конфігурацію і визначте мережу mynetwork.

  1. Щоб створити новий файл усередині tfinfra, натисніть правою кнопкою миші папку tfinfra, а потім виберіть New File (Новий файл).
  2. Назвіть новий файл mynetwork.tf і відкрийте його.
  3. Скопіюйте наведений нижче базовий код у файл mynetwork.tf:
# Create the mynetwork network resource [RESOURCE_TYPE] "mynetwork" { name = [RESOURCE_NAME] # RESOURCE properties go here }

На основі цього базового шаблону можна створювати ресурси Google Cloud. У полі name (назва) можна вказати назву ресурсу, а в полі type (тип) – зазначити, який саме ресурс Google Cloud потрібно створити. За потреби ви також можете визначити властивості для деяких ресурсів.

  1. У файлі mynetwork.tf замініть [RESOURCE_TYPE] на "google_compute_network" (з лапками).

Примітка. Ресурс google_compute_network – це мережа VPC. Ви можете переглянути інформацію про доступні ресурси в документації постачальника Google Cloud. Докладніше про цей окремий ресурс можна дізнатися з документації Terraform.

  1. Замініть [RESOURCE_NAME] на "mynetwork" (з лапками) у файлі mynetwork.tf.
  2. Додайте наведений нижче ресурс у файл mynetwork.tf.
auto_create_subnetworks = "true"

Автоматична мережа створює підмережу одразу в кожному регіоні, тому встановіть для параметра auto_create_subnetworks значення true.

  1. Переконайтеся, що файл mynetwork.tf має такий вигляд:
# Create the mynetwork network resource "google_compute_network" "mynetwork" { name = "mynetwork" # RESOURCE properties go here auto_create_subnetworks = "true" }
  1. Щоб зберегти mynetwork.tf, натисніть File (Файл) > Save (Зберегти).

Налаштуйте правило брандмауера

Створіть правило брандмауера, що дозволяє трафік HTTP, SSH, RDP й ICMP для мережі mynetwork.

  1. Додайте наведений нижче базовий код у файл mynetwork.tf.
# Add a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on mynetwork resource [RESOURCE_TYPE] "mynetwork-allow-http-ssh-rdp-icmp" { name = [RESOURCE_NAME] # RESOURCE properties go here }
  1. У файлі mynetwork.tf замініть [RESOURCE_TYPE] на "google_compute_firewall" (з лапками).

Примітка. Ресурс google_compute_firewall – це правило брандмауера. Докладніше про цей окремий ресурс можна дізнатися з документації Terraform.

  1. У файлі mynetwork.tf замініть [RESOURCE_NAME] на "mynetwork-allow-http-ssh-rdp-icmp" (з лапками).
  2. Додайте наведений нижче ресурс у файл mynetwork.tf.
network = google_compute_network.mynetwork.self_link

Примітка. Оскільки правило брандмауера відноситься до певної мережі, ви використовуєте google_compute_network.mynetwork.self_link, щоб повідомити Terraform, що ресурси потрібно створювати в заданому порядку. Так мережу буде створено раніше за правило брандмауера.

  1. Додайте наведені нижче ресурси у файл mynetwork.tf.
allow { protocol = "tcp" ports = ["22", "80", "3389"] } allow { protocol = "icmp" } source_ranges = ["0.0.0.0/0"]

Список правил allow показує, які протоколи й порти дозволено використовувати.

  1. Переконайтеся, що файл mynetwork.tf має такий вигляд:
# Create the mynetwork network resource "google_compute_network" "mynetwork" { name = "mynetwork" # RESOURCE properties go here auto_create_subnetworks = "true" } # Add a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on mynetwork resource "google_compute_firewall" "mynetwork-allow-http-ssh-rdp-icmp" { name = "mynetwork-allow-http-ssh-rdp-icmp" # RESOURCE properties go here network = google_compute_network.mynetwork.self_link allow { protocol = "tcp" ports = ["22", "80", "3389"] } allow { protocol = "icmp" } source_ranges = ["0.0.0.0/0"] }
  1. Щоб зберегти mynetwork.tf, натисніть File (Файл) > Save (Зберегти).

Налаштуйте екземпляр віртуальної машини

Визначте екземпляри віртуальних машин, створивши модуль для таких екземплярів. Модуль – це конфігурація для багаторазового використання всередині папки. Під час цього практичного заняття ви будете використовувати цей модуль для обох екземплярів віртуальних машин.

  1. Щоб створити нову папку всередині tfinfra, виберіть папку tfinfra, а потім натисніть File (Файл) > New Folder (Нова папка).
  2. Назвіть нову папку instance.
  3. Щоб створити новий файл усередині папки instance, натисніть правою кнопкою миші папку instance, а потім виберіть New File (Новий файл).
  4. Назвіть новий файл main.tf і відкрийте його.

Структура папок у Cloud Shell повинна мати такий вигляд:

Структура папок

  1. Скопіюйте наведений нижче базовий код у файл main.tf.
resource [RESOURCE_TYPE] "vm_instance" { name = [RESOURCE_NAME] # RESOURCE properties go here }
  1. У файлі main.tf замініть [RESOURCE_TYPE] на "google_compute_instance" (з лапками).

Примітка. Ресурс google_compute_instance – це екземпляр Compute Engine. Докладніше про цей окремий ресурс можна дізнатися з документації Terraform.

  1. У файлі main.tf замініть [RESOURCE_NAME] на "${var.instance_name}" (з лапками).

Визначте назву екземпляра як вхідну змінну, оскільки ви використовуватимете її для обох екземплярів віртуальних машин. Так ви зможете керувати назвою змінної з файлу "mynetwork.tf". Докладніше про вхідні змінні можна дізнатися в цьому посібнику.

  1. Додайте наведені нижче ресурси у файл main.tf.
zone = "${var.instance_zone}" machine_type = "${var.instance_type}"

Ці ресурси визначають зону й тип машини екземпляра як вхідні змінні.

  1. Додайте наведені нижче ресурси у файл main.tf.
boot_disk { initialize_params { image = "debian-cloud/debian-11" } }

Цей ресурс визначає образ ОС Debian 11 як завантажувальний диск. Оскільки обидва екземпляри віртуальних машин використовуватимуть однаковий образ, ви можете жорстко закодувати цей ресурс у модулі.

  1. Додайте наведені нижче ресурси у файл main.tf.
network_interface { network = "${var.instance_network}" access_config { # Allocate a one-to-one NAT IP to the instance } }

Цей ресурс визначає інтерфейс мережі, призначаючи назву мережі як вхідну змінну й конфігурацію доступу. Якщо не вказати конфігурацію доступу, буде призначено тимчасову зовнішню IP-адресу (потрібну для цього практичного заняття). Щоб створювати екземпляри лише з однією IP-адресою, вилучіть розділ access_config. Щоб дізнатися більше, перегляньте документацію Terraform.

  1. Переконайтеся, що файл main.tf має такий вигляд (включно з дужками {}):
resource "google_compute_instance" "vm_instance" { name = "${var.instance_name}" zone = "${var.instance_zone}" machine_type = "${var.instance_type}" boot_disk { initialize_params { image = "debian-cloud/debian-11" } } network_interface { network = "${var.instance_network}" access_config { # Allocate a one-to-one NAT IP to the instance } } }
  1. Щоб зберегти файл main.tf, натисніть File (Файл) > Save (Зберегти).
  2. Щоб створити новий файл усередині папки instance, натисніть правою кнопкою миші папку instance, а потім виберіть New File (Новий файл).
  3. Назвіть новий файл variables.tf і відкрийте його.
  4. Визначте 4 вхідні змінні у файлі variables.tf.
variable "instance_name" {} variable "instance_zone" {} variable "instance_type" { default = "e2-micro" } variable "instance_network" {}

Призначивши змінну за умовчанням для instance_type, ви зробите її необов’язковою. Змінні instance_name, instance_zone і instance_network є обов’язковими. Їх потрібно визначити у файлі mynetwork.tf.

  1. Щоб зберегти файл "variables.tf", натисніть File (Файл) > Save (Зберегти).
  2. Додайте наведені нижче екземпляри віртуальних машин у файл mynetwork.tf.
# Create the mynet-vm-1 instance module "mynet-vm-1" { source = "./instance" instance_name = "mynet-vm-1" instance_zone = "{{{project_0.default_zone|Zone}}}" instance_network = google_compute_network.mynetwork.self_link } # Create the mynet-vm-2" instance module "mynet-vm-2" { source = "./instance" instance_name = "mynet-vm-2" instance_zone = "{{{project_0.default_zone_2|Zone 2}}}" instance_network = google_compute_network.mynetwork.self_link }

Ці ресурси використовуються в модулі в папці instance і передають значення назви, зони й мережі. Оскільки ці екземпляри пов’язані з мережею VPC, скористайтеся посиланням google_compute_network.mynetwork.self_link, щоб повідомити Terraform, що ресурси потрібно створювати в заданому порядку. Так мережу буде створено раніше за екземпляр.

Примітка. Перевага написання модуля Terraform полягає в тому, що його можна використовувати для багатьох конфігурацій. Замість того, щоб писати власний модуль, можна скористатися наявними модулями з реєстру модулів Terraform.

  1. Щоб зберегти mynetwork.tf, натисніть File (Файл) > Save (Зберегти).

  2. Переконайтеся, що файл mynetwork.tf має такий вигляд (включно з дужками {}).

# Create the mynetwork network resource "google_compute_network" "mynetwork" { name = "mynetwork" # RESOURCE properties go here auto_create_subnetworks = "true" } # Add a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on mynetwork resource "google_compute_firewall" "mynetwork-allow-http-ssh-rdp-icmp" { name = "mynetwork-allow-http-ssh-rdp-icmp" # RESOURCE properties go here network = google_compute_network.mynetwork.self_link allow { protocol = "tcp" ports = ["22", "80", "3389"] } allow { protocol = "icmp" } source_ranges = ["0.0.0.0/0"] } # Create the mynet-vm-1 instance module "mynet-vm-1" { source = "./instance" instance_name = "mynet-vm-1" instance_zone = "{{{project_0.default_zone|Zone}}}" instance_network = google_compute_network.mynetwork.self_link } # Create the mynet-vm-2" instance module "mynet-vm-2" { source = "./instance" instance_name = "mynet-vm-2" instance_zone = "{{{project_0.default_zone_2|Zone 2}}}" instance_network = google_compute_network.mynetwork.self_link }

Створіть мережу mynetwork і її ресурси

Час застосувати конфігурацію для мережі mynetwork.

  1. Що перезаписати файли конфігурації Terraform у канонічному форматі й стилі, виконайте наведену нижче команду.
terraform fmt

Вивід матиме такий вигляд:

mynetwork.tf

Примітка. Якщо станеться помилка, перегляньте попередні кроки, щоб перевірити, чи створено конфігурацію відповідно до вказівок практичного заняття. Якщо вам не вдається вирішити проблему, завантажте й перегляньте такі стандартні конфігурації:

  1. Щоб ініціалізувати Terraform, виконайте таку команду:
terraform init

Вивід матиме такий вигляд:

Initializing modules... - mynet-vm-2 in instance - mynet-vm-2 in instance ... Terraform has been successfully initialized!

Примітка. Якщо виникне помилка, перегляньте попередні кроки, щоб переконатися, що структура файлів і папок правильна. Якщо вам не вдається вирішити проблему, завантажте й перегляньте наведені вище стандартні конфігурації. Коли вирішите проблему, виконайте попередню команду ще раз.

  1. Щоб створити план виконання, виконайте цю команду:
terraform plan

Вивід матиме такий вигляд:

... Plan: 4 to add, 0 to change, 0 to destroy. ...

Сервіс Terraform визначив, що потрібно додати 4 наведені нижче ресурси.

Назва Опис
mynetwork Мережа VPC
mynetwork-allow-http-ssh-rdp-icmp Правило брандмауера, що дозволяє трафік HTTP, SSH, RDP й ICMP
mynet-vm-2 Екземпляр віртуальної машини в
mynet-vm-2 Екземпляр віртуальної машини в
  1. Щоб застосувати ці зміни, виконайте наведену нижче команду.
terraform apply
  1. Щоб підтвердити заплановані дії, введіть:
yes

Вивід матиме такий вигляд:

... Apply complete! Resources: 4 added, 0 changed, 0 destroyed.

Щоб підтвердити виконання завдання, натисніть Check my progress (Підтвердити виконання). Створіть мережу mynetwork і її ресурси

Примітка. Якщо під час виконання виникне помилка, перегляньте попередні кроки, щоб переконатися, що структура файлів і папок правильна. Якщо вам не вдається вирішити проблему, завантажте й перегляньте наведені вище стандартні конфігурації. Коли вирішите проблему, виконайте попередню команду ще раз.

Завдання 3. Підтвердьте розгортання

Перевірте на консолі Google Cloud, чи створено ресурси.

Підтвердьте мережу на консолі Google Cloud

  1. У меню навігації (Значок меню навігації) на консолі Google Cloud натисніть VPC network (Мережа VPC) > VPC networks (Мережі VPC).
  2. Перегляньте мережу VPC mynetwork із підмережами в кожному регіоні.
  3. У меню навігації натисніть VPC network (Мережа VPC) > Firewall (Брандмауер).
  4. Упорядкуйте правила брандмауера за значенням Network (Мережа).
  5. Перегляньте правило брандмауера mynetwork-allow-http-ssh-rdp-icmp для мережі mynetwork.

Підтвердьте екземпляри віртуальних машин у Cloud Console

  1. У меню навігації (Значок меню навігації) натисніть Compute Engine > VM instances (Екземпляри віртуальних машин).
  2. Перегляньте екземпляри mynet-vm-1 і mynet-vm-2.
  3. Зафіксуйте внутрішню IP-адресу екземпляра mynet-vm-2.
  4. Натисніть SSH, щоб запустити термінал і підключитися до екземпляра mynet-vm-1.
  5. Щоб перевірити підключення до внутрішньої IP-адреси mynet-vm-2, виконайте наведену нижчу команду в терміналі SSH (замінивши внутрішню IP-адресу mynet-vm-2 на раніше записане значення):
ping -c 3 <Введіть внутрішню IP-адресу мережі mynet-vm-2 тут> Примітка. Ви можете це зробити, оскільки обидва екземпляри розміщено в одній мережі, а правило брандмауера дозволяє трафік ICMP.

Завдання 4. Перевірка

Під час цього практичного заняття ви створили конфігурацію Terraform із модулем для автоматизації розгортання інфраструктури Google Cloud. Коли ви змінюєте конфігурацію, Terraform може створювати відповідні плани виконання, що дає змогу поступово змінювати всю конфігурацію.

Ви повторно застосували таку саму конфігурацію для кількох ресурсів за допомогою модуля екземпляра, використовуючи його властивості як змінні. Створені конфігурацію і модуль можна використовувати як основу під час майбутніх розгортань.

Завершіть завдання

Закінчивши виконувати завдання, натисніть кнопку End Lab (Завершити завдання). Google Cloud Skills Boost вилучить використані ресурси й очистить обліковий запис.

Ви зможете оцінити, наскільки вам сподобалося виконувати завдання на платформі. Виберіть потрібну кількість зірочок, введіть коментар і натисніть Submit (Надіслати).

Кількість зірочок відповідає певній оцінці:

  • 1 зірочка = зовсім не сподобалося
  • 2 зірочки = не сподобалося
  • 3 зірочки = не можу сказати напевно
  • 4 зірочки = сподобалося
  • 5 зірочок = дуже сподобалося

Якщо ви не хочете надсилати відгук, просто закрийте діалогове вікно.

Залишайте свої відгуки, пропозиції або коментарі на вкладці Support (Підтримка).

© Google LLC 2022. Усі права захищено. Назва та логотип Google є торговельними марками Google LLC. Усі інші назви компаній і продуктів можуть бути торговельними марками відповідних компаній, з якими вони пов’язані.

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

Use private browsing

  1. Copy the provided Username and Password for the lab
  2. Click Open console in private mode

Sign in to the Console

  1. Sign in using your lab credentials. Using other credentials might cause errors or incur charges.
  2. Accept the terms, and skip the recovery resource page
  3. Don't click End lab unless you've finished the lab or want to restart it, as it will clear your work and remove the project

This content is not currently available

We will notify you via email when it becomes available

Great!

We will contact you via email if it becomes available

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.