Террафор (9 частью серии)
В этом посте мы обсуждаем жители, которые могут быть использованы с террафом. Работа с бэкэндами необходима, когда более крупная команда работает на разработке террафора. Это главным образом потому, что террафом сильно зависит от государств для своих операций, и существует огромный объем государств, полученных «поврежденными», если мы «просто используем GitHub», чтобы поддерживать то же самое.
Мы не получили бы в деталях этих сложностей в этом посте. Это действительно тема для другого поста, поскольку мы пройдемся по процессу того, как команды могут сотрудничать на террафоре IAC. Однако, чтобы обсудить этот момент, знания о бэкэндах необходимы.
Террафор поддерживает 2 типа бэкэндов — Местный
и удаленный
. Все примеры кода мы имели дело в этой серии, используйте Местный
по умолчанию по умолчанию. Местные бэкэнсинги просто означают ваш локальный компьютер, на котором проживают код Terrabor Code и файлы состояния, и выполняется выполнение. Безопасно предположить, что мы уже очень знакомы с тем же.
Удаленные бэкэнды — как указано имя — Хранить и/или выполнить Государства и код террафора соответственно удаленно. Это позволяет совместным сотрудничеством. Обычно эти удаленные бэкэнсины также предоставляют нам функциональность блокировки состояния, чтобы избежать условий расы.
По сути, есть типы бэкэндов на основе того, что они используются. Некоторые бэкэндуки используются только для хранения штата Terraporm, в то время как есть другие, где происходят другие операции API Terraform. Конечно, есть бэкэнс, где оба могут быть сделаны.
Удаленные бэкэнды помогают управлять состоянием Terraporm, чтобы несколько разработчиков, работающих над одной и той же конфигурацией инфраструктуры, могут получить доступ к нему из своих местных систем развития. В тех случаях, когда используются удаленные брелки, если мы запустим План террафора
Команда Terraporm оценивает, доступа к удаленному хранимому состоянию и в настоящее время развернутую инфраструктуру.
Большинство часто используемых команд в Terraform CLI связаны с террафом. Будь то запрос, модифицируя, импортируя, испортить или все, что связано с состояниями, — происходит удаленно. Тем не менее, есть пара команд, таких как Применить
и уничтожить
, который выполняет запланированные операции.
Удаленные бэкэнсинги также поддерживают эти операции, где Terraform выполняет вызовы API удаленно и потоки вывода на локальный терминал. Некоторые бэкэнды также поддерживают Рабочие пространства
.
Есть несколько бэкэндов, доступных для использования, и список можно найти здесь. Мои фавориты — облако террафора и AWS S3.
Давайте рассмотрим наше Пример и попытайтесь удаленно управлять нашими государствами. Мы бы попытались использовать облако террафора для хранения нашего состояния и выполнять операции террафора ( Применить
и уничтожить
) наша бэкэнда. Если вы выбрали облако террафора как Backend
Тогда Рабочие пространства
не удалось локально. Они напрямую управляются на облаке. В таких случаях атрибут «Prefix» используется при настройке удаленных рабочих пространств в конфигурации Backend.
В нашем примере мы использовали одно рабочее пространство, чтобы сохранить его простым. Чтобы использовать дистанционные бэкэнды, давайте навивася к Provider.tf
Файл и добавьте Backend
Блок конфигурации в блоке настроек террафора, как показано ниже.
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 3.0" } } backend "remote" { hostname = "app.terraform.io" organization = "letsdotech" //token = "xxxxxxxx" workspaces { name = "tf-blog-workspace" } } }
В приведенной выше конфигурации мы попросили террафору использовать удаленный бэкэнд и установил определенные свойства, такими как имя хоста, организации и имя рабочего пространства. Мы прокомментировали атрибут токена. Этот токен используется террафом для целей аутентификации для выполнения всех удаленных операций.
Тем не менее, поскольку это конфиденциальная информация, рекомендуется установить токен с использованием Terraporm CLI с использованием команды Terraform входа в систему. В конце концов, нам понадобилось бы это даже до того, как мы поинтересованы в повторной интикализации каталога конфигурации Terraform.
Запуск Логин Terraporm откроет облако террафора в окне браузера, после входа в систему, окно предоставит нам токен. Ожидается, что мы будем скопировать токен и вставить его на следующий шаг в входе CLI Terraform. Нажмите Enter, а Terraform вскоре подтверждает, что вход в облако террафора было успешным. Войдите в свой облачный портал Terraform, используя веб-браузер, и вы уже увидите рабочее пространство, перечисленную с именем, который вы предоставили в вашей дистанционной конфигурации Backend.
Ринициализовать каталог, запустив Terraform init
Отказ Terraporm устанавливает плагины, необходимые для управления желаемыми брюками. Попробуйте работает План террафора
командовать и соблюдайте вывод.
Running plan in the remote backend. The output will stream here. Pressing Ctrl-C will stop streaming the logs, but will not stop the plan running remotely. Preparing the remote plan... . . . . . . Error: error configuring Terraform AWS Provider: no valid credential sources for Terraform AWS Provider found. Please see [https://registry.terraform.io/providers/hashicorp/aws](https://registry.terraform.io/providers/hashicorp/aws) for more information about providing credentials. Error: NoCredentialProviders: no valid providers in chain. Deprecated. For verbose messaging see aws.Config.CredentialsChainVerboseErrors
Самое первое утверждение в выходе указывает на то, что удаленная бэкэнда используется для запуска План террафора
команда. Что хорошее и согласно тому, что мы хотим — ничто не проходит локально. Вывод является результатом того, что происходит на облаке террафора.
Однако он не удалось запустить команду полностью. Это не создало ни одного плана. Ошибка сообщает нам, что нет предоставленных учетных данных. Это хорошо, а также плохие новости. Хорошо, потому что он подтверждает тот факт, что AWS API теперь потребляется от облака террафора. Плохо, потому что облако террафора не знает о доступе AWS и ключей секретных доступа.
Таким образом, чтобы сделать эту работу, нам нужно установить эти переменные среды в рабочее пространство, созданное на облаке террафора. Это одноразовое упражнение и может быть сделано, нажав на наше рабочее пространство и добавление 2 переменных среды — AWS_ACCESS_KEY_ID
и Aws_secret_access_key.
.
Беги План террафора
После сохранения этих переменных среды — он должен дать вам сгенерированный вывод плана. Если это так, мы успешно настроили удаленный бэкэнд для нашей конфигурации Terraform!
Первоначально опубликовано http://letsdotech.dev 22 января 2021 года.
Террафор (9 частью серии)
Оригинал: «https://dev.to/letsdotech/terraform-backends-o7»