Как игнорировать параметр в Terraform, если его значение не указано? - PullRequest
0 голосов
/ 21 января 2019

Я использую ресурс "google_sql_database_instance" для создания облачного экземпляра только с частным IP-адресом и получения значения _private_network_ из файла переменных или аргумента командной строки или не предоставлено значение вообще.

Все, чего я пытаюсь добиться, это создать частный экземпляр IP, только если предоставлено private_network и включить _private_network_ параметр только , если указано его значение. Проблема в том, что эта переменная не принимает пустую строку ( "" ), так как она проверяет правильное регулярное выражение.
"projects/((?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?)))/global/networks/((?:[a-z](?:[-a-z0-9]*[a-z0-9])?))$".

Как создать модуль, который можно настраивать (создавать частный экземпляр IP, только если предоставляется private_network , в противном случае полностью игнорировать параметр) и не запрашивать принудительно значение _private_network_ переменная

1 Ответ

0 голосов
/ 21 января 2019

Старый подход к этому состоял бы в том, чтобы передать пустую строку ("") параметру, а поставщик проигнорировал бы ее по соглашению.

К сожалению, это не выполняется везде для всех провайдеров, поэтому, если вы не можете пропустить пустую строку из-за проверки параметра, значит, вы застряли на данный момент.

Доступны следующие варианты: подать запрос на извлечение для провайдера , позволяющий передать пустую строку, создать второй модуль, который отличается только тем, имеет ли он частную сеть, или дождаться Terraform 0,12. введет null значение , которое заставит ядро ​​Terraform полностью игнорировать параметр.

Последний вариант, на мой взгляд, является лучшим, но если у вас есть срочная необходимость (в настоящее время нет ожидаемой даты выпуска для 0.12, за исключением случаев, когда она готова), то я бы сейчас разделил модуль на два, чтобы вы могли достигните этого, и затем вы можете отбросить частный клон модуля и использовать значение null, когда будет выпущено 0.12, и вы обновитесь до него.

...