Я хочу получить пароль со стороннего сервера с помощью API, а затем назначить его в хранилище параметров:
Первоначально я думаю, что могу использовать $TF_VAR_password в качестве моста для достижения этого:
шаг 1: создайте файл .env:
cat test.env
export TF_VAR_password=< 3rd party API to get the password, say 123456 >
Шаг 2: используйте Terraform null_resource для выполнения test.env, чтобы экспортировать TF_VAR_password:
resource "null_resource" "get_password" {
triggers = {
always_run = "${timestamp()}"
}
provisioner "local-exec" {
command = "source ./${path.module}/test.env"
}
}
шаг 3: назначьте TF_VAR_password (т.е. var.password) для хранилища параметров:
resource "aws_ssm_parameter" "abc" {
value = var.password <---------
...
}
когда я запускаю вышеупомянутый Terraform, он показывает: Выполнение: [/bin/sh -c source ./../../../../aws/modules/test.env]
Но когда я запускаю echo $TF_VAR_password
, он не показывает $TF_VAR_password как 123456.
Если я запускаю source ./../../../../aws/modules/test.env
напрямую, я вижу, что $TF_VAR_password становится 123456, что означает, что сам скрипт правильный.
Как я могу получить и назначить пароль со стороннего сервера для хранилища параметров?
PASSWORD
— это имя переменной ENV, которая будет присутствовать в вашем скрипте. Вы можете переименовать его, как хотите. 16.01.2021echo $TF_VAR_tdb_password
не показывает 123456, аecho $PASSWORD
ничего не показывает 16.01.2021source ./${path.module}/test.env
не делает ничегоecho
. 16.01.2021source ../../../../aws/modules/test.env
напрямую, я увижу, чтоecho $TF_VAR_tdb_password
становится 123456. Я не получаю того же значения, потому что дочерние процессы (терраформирование) не могут изменить родительскую среду, согласно тому, что сказал @John Hanley 16.01.2021environment
действителен только в вашемcommand
. Не вне его. Я не уверен, чего вы хотите достичь? 16.01.2021