
Рабочая область Ansible-Terraform. Часть 3
среда разработки с Ansible, Terraform и множеством других приложений в одном образе докера.
Это часть 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. В рабочей области установлены все зависимости.
- Визуализируйте состояние терраформирования
inframap generate terraform.tfstate | dot -Tpng > graph.png 
                                                                     
                                                                    