В этой статье обсуждается, как использовать и настраивать различных поставщиков для взаимодействия с различными облачными платформами и службами.
Введение в провайдеры Terraform
Поставщики Terraform — это плагины, которые позволяют нам взаимодействовать с различными облачными платформами и сервисами с помощью Terraform. Эти провайдеры отвечают за преобразование конфигурации Terraform в вызовы API, необходимые для управления ресурсами на конкретной облачной платформе или сервисе.
Типы провайдеров в Terraform
в Реестр Terraform , мы можем видеть три типа провайдеров:
Официальные провайдеры
Официальные провайдеры поддерживаются компанией HashiCorp, которой принадлежит Terraform. Эти провайдеры являются лучшим доступным вариантом, если нам нужны хорошо задокументированные и актуальные провайдеры.
Поставщики AWS, Microsoft Azure и Google Cloud Platform могут быть примерами официальных поставщиков в Terraform.
Поставщики-партнеры
Сторонние организации поддерживают этих провайдеров и сотрудничают с HashiCorp, чтобы обеспечить официальную поддержку своих услуг.
Поставщики GitLab, MongoDB и CloudFlare являются некоторыми поставщиками-партнерами, доступными для пользователей.
Поставщики сообщества
Поставщики сообщества обычно создаются отдельными лицами или организациями сообщества Terraform, которые хотят управлять ресурсами на облачной платформе или в службе, не поддерживаемой официальным или партнерским поставщиком.
Некоторые примеры поставщиков услуг сообщества показаны на следующем изображении:
Как использовать провайдера Terraform
Чтобы использовать провайдера Terraform, нам нужно включить блок провайдера в наш файл конфигурации, в котором указан провайдер, которого мы хотим использовать, и любые необходимые параметры конфигурации, такие как учетные данные или регион.
После настройки провайдера мы можем использовать ресурсы и источники данных, предоставленные провайдером в нашей конфигурации Terraform, для управления ресурсами на облачной платформе или сервисе.
Давайте создадим простой файл конфигурации Terraform, который создает экземпляр EC2 на облачной платформе AWS.
провайдер 'Ой' {версия = '~> 3.0'
регион = 'США-Восток-2'
}
ресурс 'aws_instance' 'мойEC2' {
который = 'ами-0a561b65214a47cac'
тип_экземпляра = 'т3. маленький'
теги = {
Имя = 'новый экземпляр'
}
}
Сначала мы определяем блок провайдера, указав провайдера AWS и регион, в котором создаются ресурсы. Затем мы определяем наш блок ресурсов, состоящий из aws_instance в качестве типа ресурса, «myEC2» в качестве имени ресурса и «ami», «instance_type» и «tags» в качестве атрибутов. Тип ресурса можно разделить на две части: Поставщик и Ресурс. В данном случае «aws» — это провайдер, а «экземпляр» — это ресурс. Кроме того, если кому-то нужно выделить десять экземпляров EC2, атрибут «count» можно использовать с десятью в качестве значения.
Теперь мы можем выполнить поток Terraform, который включает в себя выполнение команд terraform init, terraform plan и terraform apply для создания определенного нами ресурса.
Используя провайдера Terraform AWS, мы можем получить доступ к облачной платформе AWS и эффективно взаимодействовать с ее сервисами без использования Консоли управления AWS.
Использование нескольких провайдеров в Terraform
Вместо использования одного провайдера Terraform позволяет нам использовать несколько провайдеров в одном файле конфигурации Terraform для взаимодействия с различными типами сервисов и облачных платформ.
Для вашего понимания давайте рассмотрим пример, в котором мы развертываем вычислительный движок на облачной платформе Google, репозиторий на GitHub и корзину S3 на облачной платформе AWS.
провайдер 'Google' {проект = 'первый проект'
регион = 'сша-запад1'
}
провайдер 'гитхаб' {
жетон = 'ВАШ_GITHUB_TOKEN'
}
провайдер 'Ой' {
версия = '~> 3.0'
регион = 'США-Запад-2'
}
ресурс 'google_compute_instance' 'gcpInstance' {
имя = 'новый экземпляр'
тип_машины = 'n1-стандарт-1'
зона = 'нас-запад1-а'
Загрузочный диск {
initialize_params {
изображение = 'дебиан-облако/дебиан-10'
}
}
}
ресурс 'github_repository' 'ГитРепо' {
имя = 'новое репо'
описание = 'Это мой новый репозиторий'
}
ресурс 'aws_s3_bucket' 'авсбакет' {
ведро = 'новое ведро'
аккл = 'частный'
}
В качестве первого шага мы определяем наши блоки провайдеров, чтобы указать провайдеров (Google, GitHub и AWS) и необходимую информацию, такую как регион, название проекта и т. д. Затем мы объявляем наши ресурсы, используя три блока ресурсов: «gcpInstance», « gitRepo» и «awsBucket».
Сначала мы создаем вычислительный движок в Google Cloud Platform с именем «новый экземпляр», типом машины «n1-standard-1» и зоной доступности «us-west1-a». Он использует Debian в качестве основной ОС. Затем мы создаем репозиторий GitHub с именем «new-repo» и подходящим описанием. Наконец, корзина S3 создается с «новой корзиной» в качестве имени и «частным» в качестве значения ACL (список управления доступом).
С этими тремя поставщиками Terraform мы можем легко взаимодействовать с облачными платформами и их услугами.
Лучшие практики работы с провайдерами Terraform
Версии провайдера
Мы должны указать версию поставщика, так как это помогает обеспечить согласованность и избежать неожиданного поведения из-за критических изменений в более новых версиях.
Аутентификация провайдера
Мы можем использовать безопасные механизмы аутентификации, такие как ключи API и токены доступа, для аутентификации и авторизации Terraform для взаимодействия с соответствующей облачной платформой или службой.
Документация провайдера
Поставщики часто имеют определенные параметры конфигурации, функции и ограничения. Понимание этого руководства поможет нам эффективно использовать провайдера и избежать распространенных ошибок.
Обновления провайдера
Поставщики могут выпускать исправления ошибок, улучшения производительности и новые функции. Постоянное обновление позволяет нам пользоваться последними улучшениями и поддерживать совместимость с экосистемой провайдера.
Поддержка сообщества
Мы можем использовать онлайн-форумы, доски обсуждений и каналы сообщества для решения повседневных проблем, возникающих при использовании провайдеров.
Обработка ошибок и устранение неполадок
Рекомендуется ознакомиться с сообщениями об ошибках, журналами и методами отладки поставщика, чтобы помочь нам более эффективно диагностировать и решать проблемы.
Заключение
Мы кратко познакомились с провайдерами Terraform. Мы обсудили, как использовать и настраивать их для взаимодействия с различными облачными платформами и службами, а также как использовать нескольких поставщиков для управления ресурсами на разных облачных платформах и службах на простых для понимания примерах.