所以我有一个带有 3 种不同实例“类型”(服务器、代理、中继)的 AWS CloudFormation 模板
我正在使用 AutoScaling 动态启动 X 个类型的实例。
我的问题是我需要模板输出中的所有这些服务器的 IP,最好分类为部分。
IE
服务器:xxxx yyyy
继电器:zzzz
代理商:aaaa
如何从输出中获取实例 ID?(我可以从 ID 中获取 IP)
附件模板:
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "uDeploy Agent-Relay-Server",
"Parameters" : {
"keyName" : {
"Description" : "SSH key to enable access on the servers",
"Type" : "String",
"Default" : "nick-portal"
},
"ServerInstanceCount" : {
"Description" : "Number of Servers to start",
"Type" : "Number",
"Default" : "1"
},
"RelayInstanceCount" : {
"Description" : "Number of Agent Relays to start",
"Type" : "Number",
"Default" : "2"
},
"AgentInstanceCount" : {
"Description" : "Number of Agents to start",
"Type" : "Number",
"Default" : "4"
},
"ServerAMI" : {
"Description" : "",
"Type" : "String",
"Default" : "ami-7539b41c"
},
"RelayAMI" : {
"Description" : "",
"Type" : "String",
"Default" : "ami-7539b41c"
},
"AgentAMI" : {
"Description" : "",
"Type" : "String",
"Default" : "ami-7539b41c"
},
"ServerUserData" : {
"Description" : "",
"Type" : "String",
"Default" : "#!/bin/bash"
},
"RelayUserData" : {
"Description" : "",
"Type" : "String",
"Default" : "#!/bin/bash"
},
"AgentUserData" : {
"Description" : "",
"Type" : "String",
"Default" : "#!/bin/bash"
},
"Zone" : {
"Description" : "",
"Type" : "String",
"Default" : "us-east-1d"
}
},
"Resources" : {
"ServerLaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
"KeyName" : { "Ref" : "keyName" },
"ImageId" : { "Ref" : "ServerAMI" },
"UserData" : { "Fn::Base64" : { "Ref" : "ServerUserData" } },
"SecurityGroups" : [ { "Ref" : "ServerSecurityGroup" }, { "Ref" : "SshSecurityGroup" } ],
"InstanceType" : "t1.micro"
}
},
"RelayLaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
"KeyName" : { "Ref" : "keyName" },
"ImageId" : { "Ref" : "RelayAMI" },
"UserData" : { "Fn::Base64" : { "Ref" : "RelayUserData" } },
"SecurityGroups" : [ { "Ref" : "RelaySecurityGroup" }, { "Ref" : "SshSecurityGroup" } ],
"InstanceType" : "t1.micro"
}
},
"AgentLaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
"KeyName" : { "Ref" : "keyName" },
"ImageId" : { "Ref" : "AgentAMI" },
"UserData" : { "Fn::Base64" : { "Ref" : "AgentUserData" } },
"SecurityGroups" : [ { "Ref" : "AgentSecurityGroup" }, { "Ref" : "SshSecurityGroup" } ],
"InstanceType" : "t1.micro"
}
},
"ServerAutoScalingGroup" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"AvailabilityZones" : [ { "Ref" : "Zone" } ],
"LaunchConfigurationName" : { "Ref" : "ServerLaunchConfig" },
"MinSize" : { "Ref" : "ServerInstanceCount" },
"MaxSize" : { "Ref" : "ServerInstanceCount" }
}
},
"RelayAutoScalingGroup" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"AvailabilityZones" : [ { "Ref" : "Zone" } ],
"LaunchConfigurationName" : { "Ref" : "RelayLaunchConfig" },
"MinSize" : { "Ref" : "RelayInstanceCount" },
"MaxSize" : { "Ref" : "RelayInstanceCount" }
}
},
"AgentAutoScalingGroup" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"AvailabilityZones" : [ { "Ref" : "Zone" } ],
"LaunchConfigurationName" : { "Ref" : "AgentLaunchConfig" },
"MinSize" : { "Ref" : "AgentInstanceCount" },
"MaxSize" : { "Ref" : "AgentInstanceCount" }
}
},
"RelaySecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "Enable inbound 20080 and 7916 from Agents",
"SecurityGroupIngress" :
[
{
"IpProtocol" : "tcp",
"FromPort" : "20080",
"ToPort" : "20080",
"SourceSecurityGroupName" : { "Ref" : "AgentSecurityGroup" }
},
{
"IpProtocol" : "tcp",
"FromPort" : "7916",
"ToPort" : "7916",
"SourceSecurityGroupName" : { "Ref" : "AgentSecurityGroup" }
}
]
}
},
"ServerSecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "Enable inbound 8080 all and 7918 from Relays",
"SecurityGroupIngress" : [
{
"IpProtocol" : "tcp",
"FromPort" : "7918",
"ToPort" : "7918",
"SourceSecurityGroupName" : { "Ref" : "RelaySecurityGroup" }
},
{
"IpProtocol" : "tcp",
"FromPort" : "8080",
"ToPort" : "8080",
"CidrIp" : "0.0.0.0/0"
}
]
}
},
"AgentSecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "Enable no inbound",
"SecurityGroupIngress" : []
}
},
"SshSecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "Enable SSH from all",
"SecurityGroupIngress" : [
{
"IpProtocol" : "tcp",
"FromPort" : "22",
"ToPort" : "22",
"CidrIp" : "0.0.0.0/0"
}
]
}
}
},
"Outputs" : {
"Ip"
}
}