Вот один из способов сделать это с помощью сценария, могут быть ситуации, в которых этот сценарий будет вызывать проблемы, но вам придется проверить и посмотреть.
Я не хочу переменных средыбыть доступным вне подготовки моего сценария облачной информации - поэтому я сделал все внутри одного файла сценария;загрузка переменных среды и подстановка.
Примечание: Вам потребуется установить envsubst на вашу машину.
У меня есть 3 файла, с которых нужно начать: Один файл - мойскрипт cloudformation, в котором у меня есть значение по умолчанию для каждого из моих параметров, выраженное в виде переменной bash:
cloudformation.yaml
Region
Default: $Region
InstanceType
Default: $InstanceType
Colour:
Default: $Colour
Тогда у меня естьфайл переменных:
variables.txt
InstanceType=t2.micro
Colour=Blue
Region=eu-west-1
Тогда у меня есть скрипт, который выполняет подстановку:
script.sh
#!/bin/bash
source variables.txt
export $(cut -d= -f1 variables.txt)
cat cloudformation.yaml | envsubst > subs_cloudformation.yaml
Это содержимое моей папки:
cloudformation.yaml script.sh variables.txt
Я проверяю, что мой script.sh имеет правильные разрешения:
chmod +x script.sh
Изапустите мой скрипт:
./script.sh
Содержимое моей папки теперь:
cloudformation.yaml script.sh variables.txt subs_cloudformation.yaml
И если я просматриваю содержимое моего файла subs_cloudformation.yaml:
Region
Default: eu-west-1
InstanceType
Default: t2.micro
Colour:
Default: Blue
Теперь я могу запустить этот сценарий облачной информации, и облачная информация сделает замену этих значений по умолчанию в моем шаблоне - так что все мыто, что вы делаете с помощью приведенного выше сценария, дает облачной информации значения по умолчанию.
Я, конечно, только что дал фрагмент шаблона облачной информации, вы можете улучшить его, имея dev.txt, qa.txt, production.txt файл переменных и его замена в любой.
Редактировать: Неважно, где в файле находится ваша переменная, поэтому она может быть в пользовательских данных или параметрах по умолчанию ... не имеет значения.Вам также нужно быть осторожным, это не проверит, есть ли у вас подходящая переменная среды для каждой переменной в вашем файле облачной информации.Если его нет в файле переменной, подставленное значение будет пустым.