Терраформирование безопасности

Терраформирование безопасности

У меня уже есть десятки экземпляров AWS, работающих в production, и я хотел бы начать использовать Terraform для автоматизации создания следующих. Я читал, что Terraform может помочь в практике неизменяемого шаблона. Однако я хотел бы избежать любого риска уничтожения любого уже работающего экземпляра. Предоставляет ли Terraform какую-либо защиту, чтобы избежать этого?

решение1

Да - используйтеterraform planперед любой операцией. Он выведет полный список изменений, которые будут сделаны, без фактическоговыполнениелюбой из них, для вашего обзора.

решение2

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

Обычно каждый ресурс Terraform имеет некоторый первичный идентификатор (например, для EC2 — идентификатор экземпляра, для S3 — имя контейнера). И каждый запуск Terraform должен только a) создавать новые ресурсы или b) обновлять/удалять существующие ресурсы под управлением Terraform.

  • В случае а) если ID уже существует, то вы получите ошибку и Terraform не сможет ничего создать (никогда не произойдет с EC2, но возможно с S3 buckets). Это возможность исправить код Terraform.

  • В случае б) Terraform должен работать только со «своими» ресурсами, не трогая существующее содержимое вашей учетной записи.

Можно намеренно (или случайно) вмешаться в работу Terraform, заменив/переименовав его ресурсы, что приведет к поломке; но при «нормальном» использовании я никогда не видел подобных проблем.

решение3

Вы можете добавить блок конфигурации жизненного цикла к ресурсу (См. Конфигурацию ресурсов Terraform); в частности, используя:

lifecycle {
    prevent_destroy = true
}

Это приведет к возврату сообщения об ошибке, если план включает действие по уничтожению ресурса.

Связанный контент