Рабочая область 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