主要问题:如何在云形成模板中引用依赖资源属性来构建用户数据脚本。
我尝试过的:
我正在为三节点 Kafka 集群构建 CloudFormation 模板。
我在这里采用的方法是使用 EC2 实例上的 UserData 脚本在集群的每个节点上配置 Zookeeper 和 Kafka。
我使用Sub和Base64函数用PrimaryPrivateIpAddress我的 NetworkInterface填充我的用户数据脚本,但它们作为空字符串而不是实际值出现。我知道这些值被正确填充,因为它们是我在模板中输出的一部分。
我在下面包含了我的模板的资源块作为参考。为了简洁起见,我省略了一些无趣的部分。我还说明了我尝试过的几种不同的方法来解决 EC2 资源块不一致的问题。
EC2I8MWW:
Type: 'AWS::EC2::Instance'
DependsOn:
- EC2NI2E8ES
- EC2NI2PFST
- EC2NI54B66
Properties:
KeyName: !Ref DesiredKeyName
InstanceType: !Ref InstanceType
NetworkInterfaces:
- NetworkInterfaceId: !Ref EC2NI54B66
DeviceIndex: "0"
UserData:
Fn::Base64:
Fn::Sub:
- |
#!/bin/bash
CONF="/etc/zookeeper/conf.dist/zoo.cfg"
PRIVATE_1=${Private1}
PRIVATE_2=${Private2}
PRIVATE_3=${Private3}
echo "# Zookeeper configuration for Talentreef" > "$CONF"
cat <<EOT >> "$CONF"
maxClientCnxns=50 …Run Code Online (Sandbox Code Playgroud)