Назад | Перейти на главную страницу

Невозможно подключиться к экземпляру AWS по ssh после развертывания Cloudformation

Я пытаюсь построить небольшую инфраструктуру:

Пока что для того, чтобы сделать его работоспособным удаленно, мне пришлось добавить:

Когда я развертываю шаблон, он успешно создается. Я могу посмотреть в консоль и увидеть все компоненты.

У меня проблема с подключением к экземпляру позже. Тайм-аут попыток подключения по ssh.

Думаю, я сузил эту проблему до того факта, что при построении стека развертываются две таблицы маршрутизации. Один отмечен как основной к которому не добавлен маршрут по умолчанию. Другой маршрут, который я явно определяю в моем шаблоне, и к которому я добавляю маршрут по умолчанию.

Если я добавлю маршрут по умолчанию в таблицу определения шаблона постфактум, я смогу ssh.

Думаю, мои вопросы:

Шаблон:

AWSTemplateFormatVersion: 2010-09-09
Resources:
  vpcCandidateEyMm7zuOcn:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: 192.168.0.0/16
      EnableDnsHostnames: 'true'
      EnableDnsSupport: 'true'
      InstanceTenancy: default
      Tags:
        - Key: Test
          Value: Test
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 052446e9-ed29-4689-8eb2-2006482f7a65
  IgCandidateEyMm7zuOcn:
    Type: "AWS::EC2::InternetGateway"
    Properties:
      Tags:
      - Key: Test
        Value: Test
  AigCandidateEyMm7zuOcn:
    Type: "AWS::EC2::VPCGatewayAttachment"
    Properties:
      VpcId: 
        Ref: vpcCandidateEyMm7zuOcn
      InternetGatewayId:
        Ref: IgCandidateEyMm7zuOcn
  RtblCandidateEyMm7zuOcn:
    Type: "AWS::EC2::RouteTable"
    Properties: 
      VpcId: 
        Ref: vpcCandidateEyMm7zuOcn
  myRoute:
    Type: AWS::EC2::Route
    DependsOn: IgCandidateEyMm7zuOcn
    Properties:
      RouteTableId:
        Ref: RtblCandidateEyMm7zuOcn
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId:
        Ref: IgCandidateEyMm7zuOcn
  subnetCandidateEyMm7zuOcn:
    Type: 'AWS::EC2::Subnet'
    Properties:
      CidrBlock: 192.168.1.0/24
      MapPublicIpOnLaunch: 'true'
      Tags:
        - Key: Test
          Value: Test
      VpcId: !Ref vpcCandidateEyMm7zuOcn
    Metadata:
      'AWS::CloudFormation::Designer':
        id: b9300540-4fb5-4a9c-a432-d12d9a78e08c
  allowSSH:
    Type: 'AWS::EC2::SecurityGroup'
    Properties:
      GroupDescription: 'Allow SSH from Anywhere'
      VpcId:
        Ref: vpcCandidateEyMm7zuOcn
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: '22'
          ToPort: '22'
          CidrIp: 0.0.0.0/0
  ansibleInstance:
    Type: 'AWS::EC2::Instance'
    Properties:
      ImageId: ami-4bf3d731
      KeyName: AWSCentOS7
      InstanceType: t2.micro
      SubnetId: !Ref subnetCandidateEyMm7zuOcn
      SecurityGroupIds:
      - !Ref allowSSH
      Tags:
        - Key: Name
          Value: Test
      UserData:
        Fn::Base64: !Sub |
          #!/bin/bash
          pip install ansible
          cd ~
          wget https://s3.amazonaws.com/ansibledepot/web.tar.gz
          tar zxvf web.tar.gz
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 63fffdde-e058-45ad-b2c8-7cf00fd54351

Нашел ответ Вот. Пришлось добавить подсеть в таблицу маршрутизации.

    "subnet0RTA": {
  "Type" : "AWS::EC2::SubnetRouteTableAssociation",
  "Properties" : {
    "RouteTableId" : {"Ref" : "rtb"},
    "SubnetId" : {"Ref" : "subnet0"}
  }
},
"subnet1RTA": {
  "Type" : "AWS::EC2::SubnetRouteTableAssociation",
  "Properties" : {
    "RouteTableId" : {"Ref" : "rtb"},
    "SubnetId" : {"Ref" : "subnet1"}
  }
},