Как запустить оператор local-exec в Terraform с требованиями stty - PullRequest
0 голосов
/ 19 сентября 2019

Я устанавливаю AWS VPN с terraform.Чтобы добиться этого, я создаю полномочия CA с TF, выполняющим следующий код:

resource "null_resource" "vpn_certificates_creation" {
  provisioner "local-exec" {
  command = "./1-create_certificates_for_vpn_setup.sh"
  interpreter = ["/bin/bash"]
  }
}

Я вижу ошибку в выводе:

null_resource.vpn_certificates_creation (local-exec): Data Base Updated
null_resource.vpn_certificates_creation (local-exec): ./easyrsa: 333: set: Illegal option -o echo
null_resource.vpn_certificates_creation (local-exec): Using SSL: openssl OpenSSL 1.1.1  11 Sep 2018

Что не так?

1 Ответ

0 голосов
/ 19 сентября 2019

Просматривая код easyrsa, я нашел следующую строку:

(stty echo 2>/dev/null) || { (set -o echo 2>/dev/null) && set -o echo; }

Поэтому мне нужно выделение tty, которое не выполняется по умолчанию в локальном exec-провайдере TF.

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

resource "null_resource" "vpn_certificates_creation" {
  provisioner "local-exec" {
  command = "./1-create_certificates_for_vpn_setup.sh /dev/null"
  interpreter = ["script", "-eq", "-c"]
  }
}

Использование script Я могу заставить TF поверить, что у нас есть выделенный tty.

...