Создать EC2 в общедоступной подсети по умолчанию только с использованием облачной информации - PullRequest
1 голос
/ 06 мая 2019

У меня есть шаблон CF, который создает машину EC2.

AWSTemplateFormatVersion: 2010-09-09

Mappings:
  InstanceAMI:
  # ubuntu 18.04
    us-west-2:
      ami: 'ami-0bbe6b35405ecebdb'
    us-east-1:
      ami: 'ami-0ac019f4fcb7cb7e6'

Parameters:
  Endpoint:
    Type: String
    # TODO edit the default value
    Description:

Resources:
  NodeInstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: "/"
      Roles:
      - !Ref NodeInstanceRole

  NodeInstanceRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Principal:
            Service:
            - ec2.amazonaws.com
          Action:
          - sts:AssumeRole
      Path: "/"
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AdministratorAccess

  CdpDeplSvcSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Access Deployment service
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: 443
        ToPort: 443
        CidrIp: 0.0.0.0/0
      - IpProtocol: tcp
        FromPort: 8080
        ToPort: 8080
        CidrIp: 0.0.0.0/0
      - IpProtocol: tcp
        FromPort: 22
        ToPort: 22
        CidrIp: 0.0.0.0/0
      Tags:
      - Key: Name
        Value: 'Access Deployment'

  DeploymentMachine:
    Type: AWS::EC2::Instance
    Properties:
      # AvailabilityZone: us-east-1a
      ImageId: !FindInMap [InstanceAMI, !Ref "AWS::Region", ami]
      InstanceType: 't2.small'
      KeyName: 'key'
      Tags:
        - Key: Name
          Value: 'Deployment'
      BlockDeviceMappings:
        - DeviceName: "/dev/sda1"
          Ebs:
            # VolumeType: "io1"
            # Iops: "200"
            DeleteOnTermination: "true"
            VolumeSize: "30"
      NetworkInterfaces:
        - DeviceIndex: 0
          AssociatePublicIpAddress: 'true'
          DeleteOnTermination: 'true'
          GroupSet:
            - !GetAtt CdpDeplSvcSecurityGroup.GroupId
      IamInstanceProfile: !Ref NodeInstanceProfile

Выполняется правильно.Но проблема, с которой я сталкиваюсь, иногда возникает в частной подсети по умолчанию, иногда в публичной подсети по умолчанию.Я хочу развернуть этот компьютер только в общедоступной подсети по умолчанию .Я не хочу передавать идентификатор VPC или идентификатор подсети в качестве параметра.Для того, что у меня есть, изменить здесь.

1 Ответ

0 голосов
/ 07 мая 2019

Это просто поместит его в случайную подсеть - вам нужно жестко закодировать подсеть или указать подсеть через параметр, а затем ссылаться на параметр - это может предоставить вам некоторую гибкость для изменения подсети на клиента.

Потенциально во время развертывания вашего стека вы можете создать сценарий развертывания, используя интерфейс командной строки AWS, чтобы получить все общедоступные подсети, и передать его в качестве параметра в ваш стек облачной информации.

...