Что происходит, когда вы дважды запускаете развертывание terraform?

#amazon-web-services #terraform

Вопрос:

Что происходит, когда вы дважды запускаете развертывание terraform? Создает ли он все ресурсы два раза?

Комментарии:

1. Не существует такого понятия, как «развертывание терраформирования» — вы имеете в виду «применение терраформирования»? Нет, это, очевидно, не создает ресурсы во второй раз, какой в этом смысл. Terraform имеет файл состояния и знает, какие ресурсы он уже создал.

2. @luk2302 этот комментарий кажется излишне враждебным. И на самом деле, если вы не сохраняете файл состояния или неправильно его настраиваете, а создаваемые ресурсы не имеют какого-либо уникального ограничения, управляемого пользователем, то на самом деле ресурс будет создаваться несколько раз.

3. Прочитайте документацию Terraform, ознакомьтесь с некоторыми учебными пособиями и запустите различные комбинации команд, чтобы увидеть, как они работают. Начните здесь

Ответ №1:

Я предполагаю, что, когда вы говорите «развертывание terraform» здесь, вы имеете в виду выполнение terraform apply команды.

При первом запуске terraform apply с совершенно новой конфигурацией Terraform предложит создать новые объекты, соответствующие каждому из экземпляров ресурсов, объявленных в конфигурации. Если вы примете план и, таким образом, позволите Terraform действительно применить его, Terraform создаст каждый из этих объектов и запишет информацию о них в состоянии Terraform.

Если вы затем запустите terraform apply снова, Terraform сравнит вашу конфигурацию с состоянием, чтобы увидеть, есть ли какие-либо различия. На этот раз Terraform предложит изменения только в том случае, если конфигурация не соответствует существующим объектам, записанным в состоянии. Если вы примете этот план, то Terraform выполнит каждое из предложенных им действий, которые могут представлять собой смесь различных типов действий: обновление, создание, уничтожение.

Это означает, что для успешного использования Terraform вам необходимо обеспечить сохранность снимков состояния между запусками Terraform. Без какой-либо специальной конфигурации Terraform по умолчанию сохранит состояние в локальном файле под названием terraform.tfstate , но при использовании Terraform в рабочей среде вы обычно используете удаленное состояние, что позволяет Terraform хранить снимки состояния в удаленном хранилище данных отдельно от компьютера, на котором вы запускаете Terraform. Сохраняя состояние в месте, доступном всем вашим коллегам, вы можете сотрудничать вместе.

Если вы используете Terraform Cloud, дополнительную размещенную службу, предоставляемую HashiCorp, вы можете настроить Terraform для хранения снимков состояния в самом облаке Terraform. Terraform Cloud также обладает различными другими возможностями, такими как запуск Terraform в среде удаленного выполнения, чтобы каждый, кто использует эту среду, мог быть уверен, что Terraform будет работать с согласованным набором переменных среды, хранящихся удаленно.

Ответ №2:

Если вы запустите terraform apply команду в первый раз, она создаст необходимый ресурс, который был в terraform plan .

Если вы запустите terraform apply команду во второй раз, она попытается проверить, существует ли этот ресурс уже там или нет. Если он будет найден, то не создаст никаких дубликатов ресурсов.

Перед запуском terraform apply во второй раз, если вы запустите terraform plan , вы получите список изменений/создания/удаления списка.