Terraform: Основы
Теория: Зависимости
Ресурсы часто зависят друг от друга. Например, для создания сервера нужно указать ssh-ключ, который добавляется как отдельный ресурс. Terraform позволяет не только описывать ресурсы, но и извлекать информацию о них, для использования в других ресурсах. Для доступа используется синтаксис <RESOURCE TYPE>.<NAME>.<ATTRIBUTE>.
В примере выше используется атрибут fingerprint ресурса digitalocean_ssh_key. Этот атрибут не указан явно, Terraform его получает автоматически на основе значения атрибута public_key. Полный список атрибутов ресурса доступен в его документации.
Помимо аргументов указанных в конфигурации, ресурсы часто предоставляют атрибуты, значения которых известны только после создания ресурса, например, ip-адреса, внутренние идентификаторы, тому подобное. Например, для привязки домена в Digital Ocean к серверу, нужен ip-адрес этого сервера.
Порядок в котором задаются ресурсы зависящие друг от друга не важен. Terraform автоматически анализирует выражения используемые внутри блока каждого ресурса для поиска ссылок на другие объекты. Ссылки позволяют Terraform определить правильный порядок создания, обновления и удаления ресурсов.
В некоторых ситуациях Terraform не может определить правильный порядок зависимостей, так как он может быть неявным. Например, в ситуации, когда Terraform должен выполнить некоторые действия, которые сначала нужно разрешить выполнять через политики доступа. В таких ситуациях используется аргумент depends_on.



