AWSTemplateFormatVersion: '2010-09-09'
Resources:
# vpc creation

    VPC:
      Type: AWS::EC2::VPC
      Properties:
        CidrBlock: 10.0.0.0/16
        EnableDnsSupport: 'true'
        EnableDnsHostnames: 'true'
        Tags:
        - Key: test
          Value: test1

    #internet gateway creation      

    InternetGateway:
      Type: AWS::EC2::InternetGateway      

    VPCGatewayAttachment:
      Type: AWS::EC2::VPCGatewayAttachment
      Properties:
        VpcId: !Ref VPC
        InternetGatewayId: !Ref InternetGateway      

    SubnetA:
      Type: AWS::EC2::Subnet
      Properties:
        AvailabilityZone: us-east-1a
        VpcId: !Ref VPC
        CidrBlock: 10.0.0.0/20
        MapPublicIpOnLaunch: true

    SubnetB:
      Type: AWS::EC2::Subnet
      Properties:
        AvailabilityZone: us-east-1b
        VpcId: !Ref VPC
        CidrBlock: 10.0.16.0/20
        MapPublicIpOnLaunch: true

    SubnetC:
      Type: AWS::EC2::Subnet
      Properties:
        AvailabilityZone: us-east-1c
        VpcId: !Ref VPC
        CidrBlock: 10.0.32.0/20
        MapPublicIpOnLaunch: true

    RouteTable:
      Type: AWS::EC2::RouteTable
      Properties:
        VpcId: !Ref VPC

    InternetRoute:
      Type: AWS::EC2::Route
      DependsOn: InternetGateway
      Properties:
        DestinationCidrBlock: 0.0.0.0/0
        GatewayId: !Ref InternetGateway
        RouteTableId: !Ref RouteTable

    SubnetARouteTableAssociation:
      Type: AWS::EC2::SubnetRouteTableAssociation
      Properties:
        RouteTableId: !Ref RouteTable
        SubnetId: !Ref SubnetA

    SubnetBRouteTableAssociation:
      Type: AWS::EC2::SubnetRouteTableAssociation
      Properties:
        RouteTableId: !Ref RouteTable
        SubnetId: !Ref SubnetB

    SubnetCRouteTableAssociation:
      Type: AWS::EC2::SubnetRouteTableAssociation
      Properties:
        RouteTableId: !Ref RouteTable
        SubnetId: !Ref SubnetC              

    AppNode:
      Type: AWS::EC2::Instance
      Properties:
        InstanceType: t2.micro
        ImageId: ami-c29e1cb8
        KeyName: aws-thava
        AvailabilityZone: us-east-1c
        SecurityGroupIds:
        - !Ref AppNodeSG 
        SubnetId: !Ref SubnetC    

    AppNodeSG:
      Type: AWS::EC2::SecurityGroup
      Properties:
        GroupDescription: Test Ec2 ssh and VPC
        VpcId: !Ref VPC 
        SecurityGroupIngress:
        - IpProtocol: tcp
          CidrIp: 0.0.0.0/0
          FromPort: '22'
          ToPort: '22'
        - IpProtocol: tcp
          CidrIp: 0.0.0.0/0
          FromPort: '80'
          ToPort: '80' 
