Это инструмент, который используется для создания, изменяющейся и безопасной инфраструктуры и эффективно. Используя файл конфигурации, который вы описываете на Terraform, какие компоненты необходимы. Затем Terraform идет и генерирует план исполнения, описывающего то, что должно быть желаемое состояние. И тогда он идет и выполняет и строит его. Террафору управляет всем этим через файл государства. Сейчас есть два аромата террафора:
Версия с открытым исходным кодом
Предприятие версии
Террафом поддерживает широкий спектр облачных и инфраструктурных платформ. Это включает AWS, OpenStack, Azure, GCP, Kubernetes и многое другое.
Синтаксис конфигураций террафора называется языком конфигурации Hashicorp (HCl). Предполагается нанести баланс между человеком и редактируемым и быть удобным для машин. Для удобства машинного удобства террафору могут также прочитать конфигурации JSON.
Язык террафора использует файлы конфигурации, которые называются .tf
расширение файла. Существует также вариант языка на основе JSON, который называется .tf.json
расширение файла.
Мы начнем с создания очень простого файла Terraform, который вытеснит изображение от Docker Hub и начать контейнер. Кроме того, мы будем использовать входные переменные. Они служат параметрами для файла террафора. Переменный блок настраивает одну входную переменную для модуля террафора. Каждый блок объявляет одну переменную. И мы создадим карту, чтобы указать различные переменные среды на основе условий. Это позволяет нам динамически развертывать конфигурации инфраструктуры на основе информации, которую мы передаем в развертывание.
Для начала мы должны настроить окружающую среду:
mkdir terraform/ cd terraform/
Теперь нам нужно создать файл переменных:
vi variables.tf
Со следующим контентом:
# Define variables variable "environment" { description = "env: production or development" } variable "image_name" { type = "map" description = "Image name for container" default = { prod = "ghost:alpine" dev = "ghost:default" } } variable "container_name" { type = "map" description = "Name of the container" default = { prod = "container_production" dev = "container_development" } } variable "internal_port" { description = "Internal port for container" default = "2368" } variable "external_port" { type = "map" description = "External port for container" default { prod = "80" dev = "8081" } }
Затем нам нужно создать скрипт террафора, чтобы загрузить последнее изображение Ghost Image и запустить контейнер, используя описанные переменные:
vi main.tf
Со следующим контентом:
# Download the latest Ghost image resource "docker_image" "image_id" { name = "${lookup(var.image_name)}" } # Start the Container resource "docker_container" "container_id" { name = "${lookup(var.container_name)}" image = "${docker_image.image_id.latest}" ports { internal = "${var.internal_port}" external = "${lookup(var.external_port)}" } }
Следующий шаг будет инициализировать новую конфигурацию Terraform:
terraform init
А также Проверьте файл main.tf:
terraform validate
Тогда нам нужно генерировать и увидеть dev
План выполнения:
terraform plan -out=tfdevelopment_plan -var env=development
Вот несколько полезных флагов для план
: -OUT = путь
: Пишет файл плана на данный путь. Это может быть использовано в качестве ввода к Применить
команда. -Var
: Это устанавливает переменную в конфигурации террафора. Это может быть установлено несколько раз.
Если все выглядит хорошо, вы можете построить (или изменить) dev
Инфраструктура в соответствии с планом:
terraform apply tfdevelopment_plan
Некоторые полезные флаги для Применить
: -Авто-одобрение
: Это пропускает интерактивное утверждение плана до подачи заявления. -Var
: Это устанавливает переменную в конфигурации террафора. Это может быть установлено несколько раз. Подтвердите ваше применение, набрав Да
Отказ Применить
потребуется немного, чтобы завершить.
Теперь вы можете перечислить документы Docker или осматривать состояние или план террафора, выполнив следующие команды:
docker images ls
или
terraform show
И список контейнеров докеров:
docker container ls
Оригинал: «https://dev.to/appfleet/using-terraform-for-managing-infrastructure-3023»