Рабочая область Ansible-Terraform. Часть 3

среда разработки с Ansible, Terraform и множеством других приложений в одном образе докера.

Рабочее пространство Ansible-Terraform, часть 1

Рабочее пространство Ansible-Terraform, часть 2

Это часть 3 публикации о Рабочем пространстве Ansible-Terraform — образ докера, который содержит набор инструментов для работы с Ansible и Terraform, включая несколько браузерных приложений для планирования заданий, визуализации инфраструктур, визуализации плана терраформирования, дашборда Ansible. игровые книги и многое другое.

Часть 3 описывает набор инструментов Terraform для Рабочего пространства Ansible-Terraform с примерами и фрагментами кода.

Terraform — это инфраструктура с открытым исходным кодом в виде программного инструмента кода, который обеспечивает согласованный рабочий процесс CLI для управления сотнями облачных сервисов. Terraform кодирует облачные API в декларативные файлы конфигурации.

Рабочая область Ansible-Terraform содержит небольшой пример проекта Terraform, который создает сервер в облаке Scaleway.

cd /home/examples/terraform-scaleway/ && terraform init

Установите учетные данные Scaleway в качестве переменной среды в вашей рабочей области. Добавьте следующие строки в /home/abc/.zshrc:

export SCW_DEFAULT_PROJECT_ID=<YOUR_PROJECT_ID>
export SCW_ACCESS_KEY=<YOUR_ACCESS_KEY>
export SCW_SECRET_KEY=<YOUR_SECRET_KEY>

Перезапустите терминал и выполните

cd /home/examples/terraform-scaleway/ && terraform plan

Создайте инфраструктуру с

cd /home/examples/terraform-scaleway/ && terraform apply

Отчет о терраформе

Небольшой инструмент, который создает несколько выходных данных из проекта терраформирования и визуализирует план терраформирования в виде интерактивной HTML-страницы.
Отчет о терраформировании можно создать из небольшого примера проекта терраформирования, включенного в рабочую область.

cd /home/examples/terraform-scaleway/ && terraform-report

Terraform-report выводит артефакты в папку /home/static-server/terraform-reports/. Эта папка обслуживается статическим файловым сервером, который можно использовать для просмотра артефактов, включая интерактивные HTML-страницы.

Пример с АВС

Если вы хотите попробовать отчет Terraform со своей учетной записью AWS, откройте рабочую область и настройте профиль AWS — создайте файл с учетными данными AWS.

mkdir -p ~/.aws
nano ~/.aws/credentials

Файл ~/.aws/credentials будет выглядеть так

[terraform]
aws_access_key_id = <YOUR_AWS_KEY>
aws_secret_access_key = <YOUR_AWS_SECRET>

Клонируйте свой проект terraform в рабочую область или, если у вас нет anny, вы можете использовать этот пример репозитория terraform:

git clone https://github.com/pvarentsov/terraform-aws-free-tier /home/project/aws-example

Откройте файл /home/project/aws-example/src/free-tier/main.tf и закомментируйте часть, которая настраивает серверную часть S3.

terraform {
  backend "s3" {}
}

Инициализировать рабочий каталог Terraform

cd /home/project/aws-example/src/free-tier && terraform init

Вставьте публичный ключ ssh (для примера можете ввести что угодно)

nano ./provision/access/free-tier-ec2-key.pub

Теперь вы можете создать отчет о терраформировании

terraform-report

Используйте статический файловый сервер для просмотра отчета

Терраформ Ровер

Ровер — отличный визуализатор Terraform с браузерным интерфейсом. Rover помогает лучше понять состояние Terraform и планируемые изменения. Чтобы увидеть, как работает Rover, вы можете использовать базовый пример tterraform в папке /home/examples/terraform-scaleway/. Сначала инициализируйте проект Terraform

cd /home/examples/terraform-scaleway/ && terraform init

и запустите Ровер для визуализации состояния терраформирования

rover --workingDir /home/examples/terraform-scaleway/

Если вы следовали практическому руководству из предыдущего раздела (отчет terraform из репозитория terraform-aws-free-tier), вы можете визуализировать его с помощью Rover:

rover --workingDir /home/project/aws-example/src/free-tier

Радиус взрыва

Blast Radius — инструмент для рассуждений о графах зависимостей Terraform с интерактивными визуализациями. Вы можете попробовать Blast Radius — запустить рабочее пространство и визуализировать пример проекта Terraform.

cd /home/examples/terraform-scaleway && terraform init
blast-radius --serve --port 8030

открыть localhost:8030 в браузере

ПРИМЕЧАНИЕ. Blast Radius — отличный проект, но в последнее время для него не хватает обновлений, и он может не работать с некоторыми поставщиками Terraform.

Крючок предварительной фиксации Terraform

Предварительно зафиксируйте git-хуки, чтобы позаботиться о конфигурациях Terraform. В рабочей области установлены все зависимости.

Инфракарта Terraform

  • Визуализируйте состояние терраформирования
inframap generate terraform.tfstate | dot -Tpng > graph.png

Рабочее пространство Ansible-Terraform, часть 4