我正在尝试构建一个小型基础设施:
- 单个 VPC
- 单个子网
- 具有单个规则的单个安全组:ssh
- 单个实例
到目前为止,为了使其能够远程运行,我必须添加:
- 互联网网关
- 路由表
- 路线
当我部署模板时,它创建成功。我可以通过控制台查看所有组件。
我遇到的问题是随后连接到实例。尝试通过 ssh 连接超时。
我认为我已经将这个问题缩小到这样一个事实:在构建堆栈时,会部署两个路由表。其中一个标记为主要的其中没有添加默认路由,另一个是我在模板中明确定义的,并添加了默认路由。
如果我事后将默认路由添加到模板定义表,我就可以 ssh 了。
我想我的问题是:
- 如何将我在模板中创建的表标记为主表,或者
- 我如何告诉 CloudFormation 不要创建默认被标记为主表的表,或
- 如何将默认路由放入主表?
模板:
AWS模板格式版本:2010-09-09 资源: vpcCandidateEyMm7zuOcn: 类型:'AWS::EC2::VPC' 特性: CidrBlock:192.168.0.0/16 启用DnsHostnames:'true' 启用 DNS 支持:'true' InstanceTenancy:默认 标签: - 关键测试 值:测试 元数据: ‘AWS::CloudFormation::设计师’: 编号:052446e9-ed29-4689-8eb2-2006482f7a65 IgCandidateEyMm7zuOcn: 类型:“AWS :: EC2 :: InternetGateway” 特性: 标签: - 关键测试 值:测试 AigCandidateEyMm7zuOcn: 类型:“AWS::EC2::VPCGatewayAttachment” 特性: 虚拟PCID: 参考:vpcCandidateEyMm7zuOcn 互联网网关ID: 参考:IgCandidateEyMm7zuOcn RtblCandidateEyMm7zuOcn: 类型:“AWS :: EC2 :: RouteTable” 特性: 虚拟PCID: 参考:vpcCandidateEyMm7zuOcn 我的路线: 类型:AWS::EC2::Route 取决于:IgCandidateEyMm7zuOcn 特性: 路由表编号: 参考:RtblCandidateEyMm7zuOcn 目标 CidrBlock:0.0.0.0/0 网关编号: 参考:IgCandidateEyMm7zuOcn 子网候选EyMm7zuOcn: 类型:'AWS::EC2::Subnet' 特性: CidrBlock:192.168.1.0/24 MapPublicIpOnLaunch:“true” 标签: - 关键测试 值:测试 VpcId: !Ref vpcCandidateEyMm7zuOcn 元数据: ‘AWS::CloudFormation::设计师’: 编号:b9300540-4fb5-4a9c-a432-d12d9a78e08c 允许SSH: 类型:'AWS::EC2::SecurityGroup' 特性: GroupDescription:“允许从任何地方使用 SSH” 虚拟PCID: 参考:vpcCandidateEyMm7zuOcn 安全组入口: -IP协议:tcp 发件人端口:'22' 到港港口:'22' CidrIp:0.0.0.0/0 ansible实例: 类型:'AWS::EC2::Instance' 特性: 图片编号:ami-4bf3d731 密钥名称:AWSCentOS7 实例类型:t2.micro 子网 ID: !Ref subnetCandidateEyMm7zuOcn 安全组 ID: - !Ref allowSSH 标签: - 关键词:姓名 值:测试 用户数据: Fn::Base64: !Sub | /bin/bash #!/bin/bash pip 安装 ansible 光盘〜 wget https://s3.amazonaws.com/ansibledepot/web.tar.gz tar zxvf web.tar.gz 元数据: ‘AWS::CloudFormation::设计师’: 编号:63fffdde-e058-45ad-b2c8-7cf00fd54351
答案1
找到答案这里。我必须将子网添加到路由表中。
"subnet0RTA": {
"Type" : "AWS::EC2::SubnetRouteTableAssociation",
"Properties" : {
"RouteTableId" : {"Ref" : "rtb"},
"SubnetId" : {"Ref" : "subnet0"}
}
},
"subnet1RTA": {
"Type" : "AWS::EC2::SubnetRouteTableAssociation",
"Properties" : {
"RouteTableId" : {"Ref" : "rtb"},
"SubnetId" : {"Ref" : "subnet1"}
}
},