Средство инициализации remote-exec не знает, когда именно сервер EC2 завершит загрузку и будет готов принимать соединения, поэтому оно периодически пытается подключиться по SSH, пока у него это не получится или пока не истечет время ожидания. Время ожидания по умолчанию равно пяти минутам, но вы можете его сконфигурировать. Рано или поздно соединение будет установлено и вы получите от сервера ответ Hello, World.
Следует отметить, что по умолчанию средство инициализации действует во время создания ресурсов. Это означает, что оно выполняется вместе с командой terraformapply и только во время начального создания ресурса. Оно не будет срабатывать при всех последующих запусках terraformapply, поэтому его основное применение — выполнение кода первоначальной инициализации. Если в средстве инициализации ресурсов указать when="destroy", оно будет действовать во время их удаления, то есть: а) после выполнения terraformdestroy и б) непосредственно перед удалением ресурса.
Вы можете указать несколько средств инициализации для одного и того же ресурса, и Terraform запустит их по очереди, сверху вниз. Чтобы объяснить Terraform, как обрабатывать ошибки, полученные в результате инициализации, можно использовать аргумент on_failure: если присвоить ему "continue", Terraform проигнорирует ошибку и продолжит создание/удаление ресурса; если присвоить ему "abort", Terraform прервет создание/удаление.
Terraform: инфраструктура на уровне кода
·
Евгений Брикман