Террафом Является ли этот удивительный инструмент для обеспечения и управления изменениями на вашей облачной инфраструктуре, после получения большой практики сохранения вашей инфраструктуры.
Одной из общих потребностей на управлении инфраструктурой является создание нескольких средов, таких как тестирование и производство, в основном одинаковую настройку, но и удерживайте несколько переменных, таких как сетевые и размеры.
Первый инструмент помогает нам с этим Террафорные рабочие пространства Отказ Ранее называемые средой, это позволяет создавать разные и независимые состояния в той же конфигурации. И, как это совместимо с дистанционным бэкэнда, эти рабочие места передаются вашей команде.
В качестве примера давайте работать со следующей простой инфраструктурой:
provider "aws" { region= "us-east-1" } resource "aws\_instance" "my\_service" { ami="ami-7b4d7900" instance\_type="t2.micro" }
Теперь мы определили единую AWS EC2 экземпляра Andterraform Application, применим ваш тестирующий сервер.
Но это только одна среда, в этом простом примере можно подумать, что это было бы в порядке для простого копирования и вызовов на один сервис «Testing_My_Service», а другой «prod_my_server», но этот подход быстро приведет к путанице, поскольку ваша настройка растет в сложности И дополнительные ресурсы добавляются.
То, что вы можете сделать вместо этого, используйте рабочие пространства для их разделения.
terraform workspace new production
С этим вы сейчас находитесь в производственном рабочем пространстве. Этот будет иметь ту же конфигурацию, поскольку мы находимся в той же папке и модуле террафора, но ничего не создано. Таким образом, если вы применяете террафом, это создаст другой сервер с той же конфигурацией, но не изменив предыдущее рабочее пространство.
Чтобы вернуться к тестированию, вы можете Terraform Workspace выберите по умолчанию, поскольку мы используем по умолчанию в качестве среды тестирования, чтобы убедиться, что мы не работаем над производством по ошибке.
Но, очевидно, существуют различия между тестированием и производством, и первый подход будет использоваться переменные и приключение в связи с ресурсами. Вместо того, чтобы лучше подход был бы использовать недавно представленный терраформ местных жителей Держать ресурсы Lean Of Logic:
provider "aws" { region= "us-east-1" } locals { env="${terraform.workspace}" counts = { "default"=1 "production"=3 } instances = { "default"="t2.micro" "production"="t4.large" } instance\_type="${lookup(local.instances,local.env)}" count="${lookup(local.counts,local.env)}" } resource "aws\_instance" "my\_service" { ami="[ami-7b4d7900](https://console.aws.amazon.com/ec2/home?region=us-east-1#launchAmi=ami-7b4d7900)" instance\_type="${local.instance\_type}" count="${local.count}" }
Основное отличие от переменных заключается в том, что местные жители могут иметь логику в них, а не в ресурсах, а переменные допускают только значения и подтолкнули логику в ресурсы.
Одним из них следует помнить, так это то, что террафом быстро развивается и стоит следить за этим изменениями, чтобы убедиться, что вы делаете больше всего этого.
Оригинал: «https://dev.to/diogok/terraform-workspaces-and-locals-for-environment-separation-2cgd»