Terraform: инфраструктура на уровне кода | страница 6



• Улучшения в модулях. Инструментарий и методики создания модулей Terraform тоже заметно эволюционировали. В новой, шестой, главе вы найдете руководство по написанию испытанных модулей промышленного уровня с возможностью повторного использования — таких, которым можно доверить благополучие своей компании.

• Улучшения в рабочем процессе. Глава 8 была полностью переписана согласно тем изменениям, которые произошли в процедуре интеграции Terraform в рабочий процесс команд. Там, помимо прочего, можно найти подробное руководство о том, как провести прикладной и инфраструктурный код через все основные этапы: разработку, тестирование и развертывание в промышленной среде.

• HCL2. В Terraform 0.12 внутренний язык HCL обновился до HCL2. Это включает в себя поддержку полноценных выражений (чтобы вам не приходилось заворачивать все в ${…}!), развитые ограничители типов, условные выражения с отложенным вычислением, поддержку выражений null, for_each и for, вложенные блоки и др. Все примеры кода в этой книге были адаптированы для HCL2, а новые возможности языка подробно рассматриваются в главах 5 и 6.

• Переработанные механизмы хранения состояния. В Terraform 0.9 появилась концепция внутренних хранилищ. Это полноценный механизм хранения и разделения состояния Terraform со встроенной поддержкой блокирования. В Terraform 0.9 также были представлены окружения состояния, которые позволяют управлять развертываниями в разных средах; но уже в версии 0.10 им на смену пришли рабочие области. Все эти темы рассматриваются в главе 3.

• Вынос провайдеров из ядра Terraform. В Terraform 0.10 из ядра был вынесен код для всех провайдеров (то есть код для AWS, GCP, Azure и т. д.). Благодаря этому разработка провайдеров теперь ведется в отдельных репозиториях, в своем собственном темпе и с выпуском независимых версий. Однако теперь придется загружать код провайдера с помощью команды terraforminit каждый раз, когда вы начинаете работать с новым модулем. Об этом пойдет речь в главах 2 и 7.

• Большое количество новых провайдеров. В 2016 году проект Terraform официально поддерживал лишь несколько основных облачных провайдеров (AWS, GCP и Azure). Сейчас же их количество превысило 100, а провайдеров, разрабатываемых сообществом, и того больше2. Благодаря этому вы можете использовать код для работы не только с множеством разных облаков (например, теперь существуют провайдеры для Alicloud, Oracle Cloud Infrastructure, VMware vSphere и др.), но и с другими аспектами окружающего мира, включая системы управления версиями (GitHub, GitLab или BitBucket), хранилища данных (MySQL, PostreSQL или InfluxDB), системы мониторинга и оповещения (включая DataDog, New Relic или Grafana), платформы наподобие Kubernetes, Helm, Heroku, Rundeck или Rightscale и многое другое. Более того, сейчас у каждого провайдера намного лучше покрытие: скажем, провайдер для AWS охватывает большинство сервисов этой платформы, а поддержка новых сервисов часто появляется даже раньше, чем у CloudFormation!