Сертификация Terraform Associate (6 серии деталей)
В предыдущем посте мы говорили о том, как Terraform управляет ресурсами в облаке, используя файл местного государства, однако в реальном мире нам придется сотрудничать с другими членами команды, то есть, что не только один человек идет Для изменения файлов Terraform.
В этом сценарии должна ли вся команда изменить Файл локального состояния вручную в своей машине, чтобы быть синхронизированными? 🤔.
Ну, это не звучит так практично. Когда мы работаем в совместном рабочем процессе, необходимо использовать Удаленный бэкэнд что такое же, как и Файл удаленного состояния Анкет
Отдаленный бэкэнд
Удаленный бэкэнд ресурс в Terraform, который позволит нам хранить Государственный файл В удаленном месте, а не локально, как это происходит в TF по умолчанию.
Сделав это, все члены команды, которые работают с файлами Terraform, смогут сделать это синхронизированным образом, будет иметь уникальный файл общего состояния для проекта, помещенного в удаленное место, которое может быть ведром AWS S3, консульство , Азурмер и т. Д. В этом посте мы собираемся использовать ведро AWS S3 в качестве нашего удаленного бэкэнда.
S3 Бэкэнд
Если какой -либо бэкэнд указан в коде, состояние будет храниться локально. Имея это в виду, давайте определим наш первый отдаленный бэкэнд 👨🏽💻.
Чтобы сохранить наш код в хорошей структуре, нам нужно создать файл с именем Backend.tf (Вы можете назвать это как все, что вы хотите, это просто для того, чтобы следовать стандарту). Внутри мы собираемся использовать следующий код, а затем настроить его с помощью команды Terraform Init в терминале:
Обратите внимание, что в облаке необходимо создать ведро AWS S3, прежде чем запустить «Terraform Init», в противном случае оно будет отображать ошибку, поскольку не будет ведра для хранения файла удаленного состояния.
Как только код будет применен, вы увидите, что внутри .terraform Папка есть Terraform.tfstate файл. Однако информация о созданных ресурсах там не хранится, она только указывает, что Бэкэнд это ведро S3.
Государственная блокировка
Теперь мы можем работать в одном и том же файле инфраструктуры Terraform совместно, однако, что, если я изменяю конкретный ресурс в коде, другой член команды также изменяет ту же часть? Какие изменения остаются? 😣.
Это общая проблема, когда команда работает в одном и том же коде, решением является это Государственная блокировка Анкет Как говорится в его названии, оно будет блокировать состояние во время Применение операций такие как План терраформ или терраформ применить Анкет
Как только мы добавили блокировку состояния (которая также включена по умолчанию, когда мы используем локальное состояние, но не в удаленном бэкэнд), если пользователь запускает терраформ применить Например, команда, а другой пытается сделать это и в то же время, TF покажет ему ошибку, указывающая, что состояние в настоящее время заблокировано изменениями другого пользователя, избегая неудобств в коде.
Чтобы создать блокировку состояния с ведром S3, необходимо создать Dynamodb и добавить Локковой как основной ключ:
Теперь давайте укажем на бэкэнд, что мы собираемся использовать DynamoDB для нашей блокировки состояния. Это очень просто, нам просто нужно добавить Dynamodb_table ярлык:
Чтобы применить эту конфигурацию, давайте запустить команду Terraform Init Анкет
Теперь мы можем работать с файлами TF в команде с лучшими практиками 😉.
Закрытие
Эта тема может быть немного сложной для понимания, главным образом потому, что есть много ресурсов, которые можно использовать как Отдаленные бэкэнды Однако вам не нужно быть экспертом, внедряющим их все. В моем случае, AWS — это CP, который я в основном использую, поэтому я использую его ресурсы с Terraform.
Если у вас есть какие -либо сомнения или комментарии по этому поводу, давайте обсудим это, помните, что мы здесь, чтобы помочь друг другу 😉💙.
Сертификация Terraform Associate (6 серии деталей)
Оригинал: «https://dev.to/danihuerta/getting-started-with-terraform-remote-backend-4092»