【发布时间】:2019-09-05 01:27:26
【问题描述】:
我想在 cloudformation 模板的用户数据中替换一些变量,我不想将这些变量作为参数放在 cloudformation 中。 我怎样才能做到这一点? 似乎 cloudformation 希望始终包含任何需要替换为参数的变量,但我觉得这不够灵活。所以不确定其他人是否已经找到了一种方法来做到这一点。
某些变量实际上并不需要与基础架构绑定,但需要动态替换这些变量。
例如我有这个用户数据
UserData:
"Fn::Base64":
!Sub |
#!/bin/bash -xe
cat >> /tmp/docker_compose.yaml << EOF
version: '3.5'
services:
ngnix:
container_name: nginx
image: nginx:$TAG
restart: always
ports:
- 80:80
environment:
SERVER_ID: $SERVER_ID
AWS_REGION: $AWS_REGION
EOF
我想在运行 cloudformation 命令的机器上设置环境变量值
export TAG=1.9.9
export SERVER_ID=12
export AWS_REGION=us-east-1
如何在不将这些变量作为参数的情况下使用这些本地环境值在用户数据中进行替换。我已经尝试了所有我能想到的,但我做不到。
如果有人想出办法或破解,所以想利用互联网的力量。
谢谢
【问题讨论】:
-
这就是像 Ansible 这样的部署工具派上用场的地方,您可以在 cloudformation 之外存储变量并让 Ansible 替换变量。你宁愿在 bash 中这样做吗?
-
我知道 ansible,但我现在更专注于 cloudformation..我非常了解 ansible...bash 正在使用类似
sed?或者你有什么想法? -
变量究竟来自哪个环境?它们是否在堆栈“外部”,例如在从模板开始创建堆栈的机器上?还是别的地方?
标签: amazon-ec2 amazon-cloudformation user-data