В этом руководстве показано, как использовать Terraform с платформой Google Cloud. В этом руководстве предполагается, что у пользователя есть учетная запись на платформе Google Cloud, и она готова к использованию, в противном случае можно с легкостью создать бесплатную пробную учетную запись в течение года. Однако для доступа к консоли Google Cloud требуется указать действующий номер кредитной карты; поэтому убедитесь, что с этим разобрались, прежде чем продолжить.
Требования и условия
Платформа Google Cloud состоит из большого количества сервисов; поэтому сложно охватить их все в одном руководстве, и поэтому это руководство охватывает только раздел экземпляров виртуальных машин Google. Он демонстрирует, как установить веб-сервер Nginx в экземпляре виртуальной машины Ubuntu в инфраструктуре Google Cloud.
Поскольку руководство посвящено терраформу, очевидно, что оно должно быть установлено в системе. Кроме того, для доступа к экземпляру виртуальной машины необходимо сгенерировать SSH-ключ.
Как установить Terraform в Ubuntu
Terraform можно установить двумя способами. Первый метод - это ручной способ, который требует, чтобы пользователь загрузил и установил его в системе, альтернативный и наиболее рекомендуемый способ - автоматический, который загружает и устанавливает terraform в систему с помощью пары строк кода. Выполните следующие команды, чтобы это произошло.
- Установите распакованный пакет в систему, чтобы извлечь пакет terraform после его загрузки.
- Скачайте и установите terraform по указанной ссылке. Обратите внимание, что на момент написания статьи последняя версия terraform - 0.11.10. В будущем версия может быть другой. Поэтому всегда обращайте внимание на их официальный сайт, чтобы получить информацию о последнем пакете terraform.
- Извлеките терраформу в текущий активный каталог. По умолчанию это домашний каталог в Ubuntu.
- Переместите терраформу в двоичную папку. Terraform не имеет установочного файла; следовательно, его двоичный файл должен быть помещен в файл bin вручную.
- Используйте следующую команду для доступа к terraform из командной строки без указания его каталога.
Как сгенерировать свой собственный SSH-ключ
После установки terraform следующим важным шагом будет создание вашей собственной пары открытого / закрытого ключей SSH для связи с экземпляром виртуальной машины, который будет создан. Пара ключей SSH обеспечивает надежную защиту по сравнению с традиционной аутентификацией пароль / имя пользователя; поэтому настоятельно рекомендуется следовать этому параметру, даже если он не является обязательным.
1. В оболочке Ubuntu введите следующую команду, чтобы сгенерировать пару ключей SSH.
ssh-keygen
2. Вначале он запрашивает имя для пары ключей, затем кодовую фразу для ключа ssh. Открытый ключ создается как
Настройте Google Cloud с помощью Terraform
Как только два вышеупомянутых сегмента будут завершены, создайте бесплатную пробную учетную запись в Google Cloud. Поскольку создание учетной записи - это простой процесс, здесь он не описывается. После получения доступа к консоли Google Cloud выполните следующие действия, чтобы настроить Google Cloud с помощью terraform.
- Перейдите по следующему URL-адресу.
https: // консоль.облако.Google.ком
- Нажмите кнопку «Мои проекты» в верхнем левом углу консоли.
- Создайте новый проект или используйте существующий для этого руководства. Цель «проекта» - объединение различных сервисов в Google Cloud. Проект является высшим узлом этой иерархии сервисов, а остальные сервисы находятся под ним. Сервис, созданный в рамках одного проекта, недоступен из другого проекта. После создания проекта скопируйте и храните его идентификатор в безопасном месте. На следующем снимке экрана идентификатор проекта харизматическая-сумма-202020, и он может быть другим в вашей облачной консоли.
- Перейдите по следующему URL-адресу, чтобы загрузить файл учетных данных в формате JSON для аутентификации пользователя при подключении к облачной платформе Google. Это учетная запись администратора; поэтому убедитесь, что этот файл учетных данных находится в надежном месте. https: // консоль.облако.Google.com / apis / учетные данные / serviceaccountkey
- Создайте файл и переименуйте его в основной.tf. Этот файл является файлом конфигурации для terraform, затем используйте следующий блок кода в качестве первых строк кода. Название провайдера предназначено для указания провайдера, к которому нужно подключиться. Terraform поддерживает большое количество облачных платформ; следовательно, название облачной платформы должно быть явно указано. Это Google, что означает, что он подключается к облачной платформе Google. Помимо заголовка, в блоке есть 3 атрибута, атрибут «учетные данные» предназначен для указания имени файла учетных данных, загруженного выше, имя проекта - это место в облаке Google, где создается экземпляр виртуальной машины. Идентификатор, созданный на шаге 3, используется здесь в качестве имени проекта. Регион - это географическое положение, в котором создается экземпляр виртуальной машины. Есть несколько регионов. Используйте эту ссылку, чтобы обратиться ко всем доступным регионам. https: // облако.Google.com / appengine / docs / locations provider "google"
учетные данные = "$ файл (" CREDENTIALS_FILE.json ")"
project = "PROJECT_NAME"
region = "REGION_NAME"
- Используйте следующую команду для установки плагинов для terraform. Следующая команда автоматически сканирует файл конфигурации terraform и определяет, какие плагины должны быть установлены, кроме того, она также загружает информацию о провайдере для terraform. В этом руководстве используется платформа Google Cloud; следовательно, он загружает информацию о провайдере облачной терраформы Google. Команда идентифицирует провайдера по имени, указанному в ключевом слове «provider» в конфигурационном файле terraform. terraform init
- Используйте следующие два блока кода, чтобы определить дополнительную информацию для экземпляра виртуальной машины. С самого начала он использует плагин случайного идентификатора для генерации случайного числа из 8 цифр, а затем назначает это число переменной instance_id для использования в качестве префикса для имени экземпляра виртуальной машины. Во втором блоке кода он создает экземпляр виртуальной машины с именем «nucuta-vm»-
. Тип машины - это пакет сервера, который используется для размещения экземпляра виртуальной машины. Перейдите по этому веб-адресу, чтобы найти доступные типы машин. https: // облако.Google.com / compute / docs / типы машин. Зона - точное местоположение региона. В каждом регионе доступны в основном 3 зоны: a, b, c. Каждая зона имеет собственную конфигурацию оборудования / программного обеспечения. Используйте этот веб-URL, чтобы ссылаться на все доступные зоны и их конфигурацию оборудования. https: // облако.Google.com / compute / docs / регионы-зоны / ресурс "random_id" "instance_id"
byte_length = 8
ресурс "google_compute_instance" "nucuta"
name = "nucuta-vm - $ random_id".instance_id.шестнадцатеричный "
machine_type = "f1-micro"
зона = "азия-юг1-а"
- Используйте следующий блок кода внутри блока кода google_compute_instance. Он определяет используемую операционную систему. Используйте этот веб-URL, чтобы найти все доступные операционные системы для облачной платформы Google. https: // облако.Google.com / compute / docs / images. В нем написано изображение, потому что операционные системы хранятся как файлы изображений. Когда выполняется файл конфигурации terraform, файл образа извлекается, и его операционная система устанавливается в экземпляре виртуальной машины так же, как на обычном компьютере. Атрибут изображения находится в этом формате, имиджевый проект / семейство изображений. Загрузочный диск
initialize_params
image = "ubuntu-os-cloud / ubuntu-1604-lts"
- Используйте следующий код в блоке кода google_compute_instance. Он указывает сценарий запуска для запуска на вновь созданном экземпляре виртуальной машины. Этот скрипт выполняется сразу после создания экземпляра ВМ. В следующем примере он обновляет локальный репозиторий информации о пакете последней информацией, затем обновляет все пакеты с помощью dist-upgrade, а затем устанавливает пакет nginx. Обязательно используйте флаг -y, чтобы сделать процесс не интерактивным, то есть он автоматически запускается и выполняет процесс, не требуя вмешательства пользователя. metadata_startup_script = "sudo apt-get -y update;
sudo apt-get -y dist-upgrade;
sudo apt-get -y установить nginx "
- Используйте следующий блок кода в блоке кода google_compute_instance. Следующий блок кода определяет сетевой интерфейс, который используется для подключения текущего экземпляра виртуальной машины к другим экземплярам виртуальной машины, устройствам и сетям. Блок Access_config используется для выделения экземпляру виртуальной машины внешнего IP-адреса для доступа к нему из Интернета. сетевой интерфейс
сеть = "по умолчанию"
access_config
- Наконец, используйте следующий блок кода в блоке кода google_compute_instance. В нем указывается имя пользователя и открытый SSH-ключ. Убедитесь, что сгенерированный общедоступный ключ SSH находится в той же папке, что и файл конфигурации terraform. Имя пользователя должно быть именем учетной записи, из которой был создан ключ SSH, например, если имя учетной записи - root, то ее имя пользователя - root. метаданные
sshKeys = "dilanga: $ file (" dilanga.паб")"
- Последний блок кода должен выглядеть так
- Используйте следующий блок кода за пределами блока кода «google_compute_instance». По умолчанию экземпляр ВМ блокирует весь входящий и исходящий трафик. Поскольку в этом руководстве создается веб-сервер, необходимо открыть порты 80 и 443, чтобы пользователи могли получить к нему доступ через Интернет. С самого начала атрибут name создает профиль в брандмауэре Google Compute для этого правила, сетевой атрибут указывает, к какому сетевому интерфейсу применяется правило, блок allow разрешает протоколы и его порты, указанные в нем. Протокол Icmp используется для проверки связи с веб-сервером, чтобы убедиться, что он доступен для всех. Pinging часто используется многими службами для определения доступности веб-сайта. ресурс "google_compute_firewall" "default"
name = "nginx-firewall"
сеть = "по умолчанию"
позволять
протокол = "TCP"
ports = ["80", "443"]
позволять
протокол = "icmp"
- Используйте следующий блок кода за пределами из «google_compute_instance», чтобы распечатать общедоступный IP-адрес текущего экземпляра виртуальной машины. output "ip"
value = "$ google_compute_instance.нукута.сетевой интерфейс.0.access_config.0.nat_ip "
- Используйте следующую команду для проверки файла конфигурации и файла учетных данных. Он также предварительно просматривает, как будет выглядеть окончательный результат после выполнения файла конфигурации. план терраформ
- затем используйте следующую команду для выполнения файла конфигурации. терраформ применять
- Теперь используйте общедоступный IP-адрес в любом веб-браузере для доступа к веб-серверу экземпляра виртуальной машины.
- Используйте следующую команду для доступа к экземпляру виртуальной машины через SSH для управления сервером. Убедитесь, что закрытый ключ находится в текущем каталоге или укажите путь к закрытому ключу.
- ssh -i
@ Заключение
Этого должно быть достаточно, чтобы начать работу. Полный файл конфигурации, основной.tf, показан ниже. Выделенные тексты могут быть изменены в соответствии с требованиями пользователя.
провайдер "google"
credentials = "$ файл (" dilannga_credentials.json ")"
project = "charismatic-sum-202020"
region = "asia-south1"
ресурс "random_id" "instance_id"
byte_length = 8
ресурс "google_compute_instance" "nucuta"
name = "nucuta-vm - $ random_id".instance_id.шестнадцатеричный "
machine_type = "f1-micro"
зона = "азия-юг1-а"
Загрузочный диск
initialize_params
image = "ubuntu-os-cloud / ubuntu-1604-lts"
metadata_startup_script = "sudo apt-get -y update; sudo apt-get -y dist-upgrade;
sudo apt-get -y установить nginx "
сетевой интерфейс
сеть = "по умолчанию"
access_config
метаданные
sshKeys = "dilanga: $ file (" dilanga.паб")"
ресурс "google_compute_firewall" "default"
name = "nginx-firewall"
сеть = "по умолчанию"
позволять
протокол = "TCP"
ports = ["80", "443"]
позволять
протокол = "icmp"
output "ip"
value = "$ google_compute_instance.нукута.сетевой интерфейс.0.access_config.0.nat_ip "