Terraform – это инструмент организации IaaC (инфраструктура как код), который позволяет управлять облачными ресурсами версионным способом. Terraform используется для создания, изменения и версионирования инфраструктуры, развернутой у популярных поставщиков услуг.
С помощью terraform можно управлять облачными вычислениями, сетями, балансировщиками нагрузки, DNS и т.д., используя декларативный язык программирования.
Рассмотрим установку terraform на Windows и Linux-устройства. Для проверки корректности работы будем использовать docker.
Windows 10
Для начала необходимо установить утилиту Chocolatey. Chocolatey – это бесплатная система управления пакетами с открытым исходным кодом для Windows. Требования и описания к установке описаны на официальном сайте.
Все команды должны выполняться с правами администратора.
Выполняем команду в Powershell:
PS C:Windowssystem32> choco install terraform
В результате выполнения должен установиться terraform. Проверяем установку:
PS C:Windowssystem32> terraform -v Terraform v0.14.7
Можно посмотреть список доступных команд:
PS C:Windowssystem32> terraform -help
Справка по конкретной команде:
PS C:Windowssystem32>terraform -help имя_команды
Приступим к тестированию установки terraform. Установим docker.
Создаем новую папку, где будем хранить конфигурационный файл и перейдем в нее:
PS C:Windowssystem32>mkdir c:temp PS C:Windowssystem32>mkdir c:tempterraform-docker-demo PS C:Windowssystem32>cd C:tempterraform-docker-demo
Создадим файл конфигурации main.tf для terraform со следующим содержанием:
terraform { required_providers { docker = { source = "terraform-providers/docker" } } } provider "docker" { host = "npipe:////.//pipe//docker_engine" } resource "docker_image" "nginx" { name = "nginx:latest" keep_locally = false } resource "docker_container" "nginx" { image = docker_image.nginx.latest name = "tutorial" ports { internal = 80 external = 8000 } }
Полностью описывать содержимое файла нет необходимости, у terraform довольно хорошо описана документация по всем разделам. Если описать кратко, то мы создаем ресурс docker_containe с nginx на порту 8000 (порт в контейнере 80) с помощью провайдера docker.
Инициализируем проект, при этом происходит загрузка всех необходимых плагинов, позволяющих terraform взаимодействовать с docker.
PS C:Windowssystem32>terraform init
Запустить контейнер nginx можно с помощью apply. Когда terraform попросит вас подтвердить, введите yes и нажмите enter.
PS C:Windowssystem32>terraform apply
Проверяем, что контейнер NGINX существует и работает зайдя по ссылке localhost:8000 в своем веб-браузере или запустив команду docker ps чтобы увидеть контейнер.
PS C:tempterraform-docker-demo> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 278736fd31e8 35c43ace9216 "/docker-entrypoint.…" 5 seconds ago Up 4 seconds 0.0.0.0:8000->80/tcp tutorial
Для остановки контейнера запускаем terraform destroy и подтверждаем вводом yes, когда запросит.
PS C:Windowssystem32> terraform destroy
Установка на Linux
Установка на Linux отличается только на начальном этапе. Этап конфигурирования одинаков для всех платформ.
Debian/Ubuntu
Добавляем HashiCorp GPG ключи:
$ curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
Добавляем официальный HashiCorp Linux репозиторий:
$ sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
Выполняем обновление и установку:
$ sudo apt-get update && sudo apt-get install terraform
Centos/RHEL
Устанавливаем yum-config-manager для управления репозиториями:
# sudo yum install -y yum-utils
Используем yum-config-manager для добавления официального HashiCorp Linux репозитория:
# sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
Устанавливаем:
# sudo yum -y install terraform
Нужно DevOps-сопровождение? Обращайтесь к нам!