59. Создание виртуальной машины с помощью Terraform
Содержание
Создание виртуальной машины с помощью Terraform и переменных
В этой сессии мы будем создавать виртуальную машину или две виртуальные машины с помощью Terraform внутри VirtualBox. Это не совсем обычно, VirtualBox - это вариант виртуализации рабочих станций, и на самом деле это не было бы вариантом использования Terraform, но я сейчас нахожусь на высоте 36 000 футов в воздухе, и как бы я ни развертывал ресурсы публичного облака так высоко в облаках, гораздо быстрее сделать это локально на моем ноутбуке.
Чисто демонстрационная цель, но концепция та же, мы собираемся иметь наш желаемый код конфигурации состояния, а затем мы собираемся запустить его против провайдера virtualbox. В прошлом мы использовали здесь vagrant, и я рассказал о различиях между vagrant и terraform в начале раздела.
Создание виртуальной машины в VirtualBox
Первое, что мы сделаем, это создадим новую папку под названием virtualbox, затем мы можем создать файл virtualbox.tf, в котором мы определим наши ресурсы. Приведенный ниже код, который можно найти в папке VirtualBox под названием virtualbox.tf, создаст 2 виртуальные машины в Virtualbox.
Вы можете узнать больше о сообществе провайдера Virtualbox здесь
terraform {
required_providers {
virtualbox = {
source = "terra-farm/virtualbox"
version = "0.2.2-alpha.1"
}
}
}
# В настоящее время нет никаких опций конфигурации для самого провайдера.
resource "virtualbox_vm" "node" {
count = 2
name = format("node-%02d", count.index + 1)
image = "https://app.vagrantup.com/ubuntu/boxes/bionic64/versions/20180903.0.0/providers/virtualbox.box"
cpus = 2
memory = "512 mib"
network_adapter {
type = "hostonly"
host_interface = "vboxnet1"
}
}
output "IPAddr" {
value = element(virtualbox_vm.node.*.network_adapter.0.ipv4_address, 1)
}
output "IPAddr_2" {
value = element(virtualbox_vm.node.*.network_adapter.0.ipv4_address, 2)
}
Теперь, когда мы определили наш код, мы можем выполнить terraform init
для нашей папки, чтобы загрузить провайдер для virtualbox.
Очевидно, что в вашей системе также должен быть установлен virtualbox. Затем мы можем запустить terraform plan
, чтобы посмотреть, что наш код создаст для нас. Затем следует terraform apply
. На рисунке ниже показан завершенный процесс.
Теперь в Virtualbox вы увидите две виртуальные машины.
Изменение конфигурации
Давайте добавим еще один узел в наше развертывание. Мы можем просто изменить строку count, чтобы показать новое желаемое количество узлов. Когда мы запустим нашу terraform apply
, она будет выглядеть примерно так, как показано ниже.
После завершения работы в virtualbox вы можете увидеть, что у нас теперь есть 3 узла.
Когда мы закончим, мы можем очистить все это с помощью команды terraform destroy
, и наши машины будут удалены.
Переменные и выходные данные
Мы упоминали о выводах, когда выполняли пример hello-world на прошлом занятии. Но здесь мы можем остановиться на этом более подробно.
Но есть много других переменных, которые мы можем использовать здесь, также есть несколько различных способов, которыми мы можем определить переменные.
Мы можем вручную ввести наши переменные с помощью команды
terraform plan
илиterraform apply
.Мы можем определить их в .tf-файле внутри блока
Мы можем использовать переменные окружения в нашей системе, используя
TF_VAR_NAME
в качестве формата.Я предпочитаю использовать файл terraform.tfvars в папке нашего проекта.
Существует опция *auto.tfvars файла
или мы можем определить, когда запускаем
terraform plan
илиterraform apply
с помощьюvar
илиvar-file
.
Порядок определения переменных будет начинаться снизу вверх.
Мы также упоминали, что файл состояния будет содержать конфиденциальную информацию. Мы можем определить нашу чувствительную информацию как переменную и определить ее как чувствительную.
variable "some resource" {
description = "something important"
type: string
sensitive = true
}
Ресурсы
- What is Infrastructure as Code? Difference of Infrastructure as Code Tools
- Terraform Tutorial | Terraform Course Overview 2021
- Terraform explained in 15 mins | Terraform Tutorial for Beginners
- Terraform Course - From BEGINNER to PRO!
- HashiCorp Terraform Associate Certification Course
- Terraform Full Course for Beginners
- KodeKloud - Terraform for DevOps Beginners + Labs: Complete Step by Step Guide!
- Terraform Simple Projects
- Terraform Tutorial - The Best Project Ideas
- Awesome Terraform