<s> from troposphere import Base64 , FindInMap , GetAtt , Join , Output <EOL> from troposphere import Parameter , Ref , Tags , Template <EOL> from troposphere . autoscaling import Metadata <EOL> from troposphere . ec2 import PortRange , NetworkAcl , Route , VPCGatewayAttachment , SubnetRouteTableAssociation , Subnet , RouteTable , VPC , NetworkInterfaceProperty , NetworkAclEntry , SubnetNetworkAclAssociation , EIP , Instance , InternetGateway , SecurityGroupRule , SecurityGroup <EOL> from troposphere . policies import CreationPolicy , ResourceSignal <EOL> from troposphere . cloudformation import Init , InitFile , InitFiles , InitConfig , InitService , InitServices <EOL> t = Template ( ) <EOL> t . add_version ( '<STR_LIT>' ) <EOL> t . add_description ( """<STR_LIT>""" ) <EOL> keyname_param = t . add_parameter ( <EOL> Parameter ( <EOL> '<STR_LIT>' , <EOL> ConstraintDescription = '<STR_LIT>' , <EOL> Description = '<STR_LIT>' , <EOL> Type = '<STR_LIT>' , <EOL> ) ) <EOL> sshlocation_param = t . add_parameter ( <EOL> Parameter ( <EOL> '<STR_LIT>' , <EOL> Description = '<STR_LIT>' , <EOL> Type = '<STR_LIT>' , <EOL> MinLength = '<STR_LIT>' , <EOL> MaxLength = '<STR_LIT>' , <EOL> Default = '<STR_LIT>' , <EOL> AllowedPattern = "<STR_LIT>" , <EOL> ConstraintDescription = ( <EOL> "<STR_LIT>" ) , <EOL> ) ) <EOL> instanceType_param = t . add_parameter ( Parameter ( <EOL> '<STR_LIT>' , <EOL> Type = '<STR_LIT>' , <EOL> Description = '<STR_LIT>' , <EOL> Default = '<STR_LIT>' , <EOL> AllowedValues = [ <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ] , <EOL> ConstraintDescription = '<STR_LIT>' , <EOL> ) ) <EOL> t . add_mapping ( '<STR_LIT>' , { <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' } , <EOL> } ) <EOL> t . add_mapping ( '<STR_LIT>' , { <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' } , <EOL> } ) <EOL> ref_stack_id = Ref ( '<STR_LIT>' ) <EOL> ref_region = Ref ( '<STR_LIT>' ) <EOL> ref_stack_name = Ref ( '<STR_LIT>' ) <EOL> VPC = t . add_resource ( <EOL> VPC ( <EOL> '<STR_LIT>' , <EOL> CidrBlock = '<STR_LIT>' , <EOL> Tags = Tags ( <EOL> Application = ref_stack_id ) ) ) <EOL> subnet = t . add_resource ( <EOL> Subnet ( <EOL> '<STR_LIT>' , <EOL> CidrBlock = '<STR_LIT>' , <EOL> VpcId = Ref ( VPC ) , <EOL> Tags = Tags ( <EOL> Application = ref_stack_id ) ) ) <EOL> internetGateway = t . add_resource ( <EOL> InternetGateway ( <EOL> '<STR_LIT>' , <EOL> Tags = Tags ( <EOL> Application = ref_stack_id ) ) ) <EOL> gatewayAttachment = t . add_resource ( <EOL> VPCGatewayAttachment ( <EOL> '<STR_LIT>' , <EOL> VpcId = Ref ( VPC ) , <EOL> InternetGatewayId = Ref ( internetGateway ) ) ) <EOL> routeTable = t . add_resource ( <EOL> RouteTable ( <EOL> '<STR_LIT>' , <EOL> VpcId = Ref ( VPC ) , <EOL> Tags = Tags ( <EOL> Application = ref_stack_id ) ) ) <EOL> route = t . add_resource ( <EOL> Route ( <EOL> '<STR_LIT>' , <EOL> DependsOn = '<STR_LIT>' , <EOL> GatewayId = Ref ( '<STR_LIT>' ) , <EOL> DestinationCidrBlock = '<STR_LIT>' , <EOL> RouteTableId = Ref ( routeTable ) , <EOL> ) ) <EOL> subnetRouteTableAssociation = t . add_resource ( <EOL> SubnetRouteTableAssociation ( <EOL> '<STR_LIT>' , <EOL> SubnetId = Ref ( subnet ) , <EOL> RouteTableId = Ref ( routeTable ) , <EOL> ) ) <EOL> networkAcl = t . add_resource ( <EOL> NetworkAcl ( <EOL> '<STR_LIT>' , <EOL> VpcId = Ref ( VPC ) , <EOL> Tags = Tags ( <EOL> Application = ref_stack_id ) , <EOL> ) ) <EOL> inBoundPrivateNetworkAclEntry = t . add_resource ( <EOL> NetworkAclEntry ( <EOL> '<STR_LIT>' , <EOL> NetworkAclId = Ref ( networkAcl ) , <EOL> RuleNumber = '<STR_LIT:100>' , <EOL> Protocol = '<STR_LIT>' , <EOL> PortRange = PortRange ( To = '<STR_LIT>' , From = '<STR_LIT>' ) , <EOL> Egress = '<STR_LIT:false>' , <EOL> RuleAction = '<STR_LIT>' , <EOL> CidrBlock = '<STR_LIT>' , <EOL> ) ) <EOL> inboundSSHNetworkAclEntry = t . add_resource ( <EOL> NetworkAclEntry ( <EOL> '<STR_LIT>' , <EOL> NetworkAclId = Ref ( networkAcl ) , <EOL> RuleNumber = '<STR_LIT>' , <EOL> Protocol = '<STR_LIT>' , <EOL> PortRange = PortRange ( To = '<STR_LIT>' , From = '<STR_LIT>' ) , <EOL> Egress = '<STR_LIT:false>' , <EOL> RuleAction = '<STR_LIT>' , <EOL> CidrBlock = '<STR_LIT>' , <EOL> ) ) <EOL> inboundResponsePortsNetworkAclEntry = t . add_resource ( <EOL> NetworkAclEntry ( <EOL> '<STR_LIT>' , <EOL> NetworkAclId = Ref ( networkAcl ) , <EOL> RuleNumber = '<STR_LIT>' , <EOL> Protocol = '<STR_LIT>' , <EOL> PortRange = PortRange ( To = '<STR_LIT>' , From = '<STR_LIT>' ) , <EOL> Egress = '<STR_LIT:false>' , <EOL> RuleAction = '<STR_LIT>' , <EOL> CidrBlock = '<STR_LIT>' , <EOL> ) ) <EOL> outBoundHTTPNetworkAclEntry = t . add_resource ( <EOL> NetworkAclEntry ( <EOL> '<STR_LIT>' , <EOL> NetworkAclId = Ref ( networkAcl ) , <EOL> RuleNumber = '<STR_LIT:100>' , <EOL> Protocol = '<STR_LIT>' , <EOL> PortRange = PortRange ( To = '<STR_LIT>' , From = '<STR_LIT>' ) , <EOL> Egress = '<STR_LIT:true>' , <EOL> RuleAction = '<STR_LIT>' , <EOL> CidrBlock = '<STR_LIT>' , <EOL> ) ) <EOL> outBoundHTTPSNetworkAclEntry = t . add_resource ( <EOL> NetworkAclEntry ( <EOL> '<STR_LIT>' , <EOL> NetworkAclId = Ref ( networkAcl ) , <EOL> RuleNumber = '<STR_LIT>' , <EOL> Protocol = '<STR_LIT>' , <EOL> PortRange = PortRange ( To = '<STR_LIT>' , From = '<STR_LIT>' ) , <EOL> Egress = '<STR_LIT:true>' , <EOL> RuleAction = '<STR_LIT>' , <EOL> CidrBlock = '<STR_LIT>' , <EOL> ) ) <EOL> outBoundResponsePortsNetworkAclEntry = t . add_resource ( <EOL> NetworkAclEntry ( <EOL> '<STR_LIT>' , <EOL> NetworkAclId = Ref ( networkAcl ) , <EOL> RuleNumber = '<STR_LIT>' , <EOL> Protocol = '<STR_LIT>' , <EOL> PortRange = PortRange ( To = '<STR_LIT>' , From = '<STR_LIT>' ) , <EOL> Egress = '<STR_LIT:true>' , <EOL> RuleAction = '<STR_LIT>' , <EOL> CidrBlock = '<STR_LIT>' , <EOL> ) ) <EOL> subnetNetworkAclAssociation = t . add_resource ( <EOL> SubnetNetworkAclAssociation ( <EOL> '<STR_LIT>' , <EOL> SubnetId = Ref ( subnet ) , <EOL> NetworkAclId = Ref ( networkAcl ) , <EOL> ) ) <EOL> instanceSecurityGroup = t . add_resource ( <EOL> SecurityGroup ( <EOL> '<STR_LIT>' , <EOL> GroupDescription = '<STR_LIT>' , <EOL> SecurityGroupIngress = [ <EOL> SecurityGroupRule ( <EOL> IpProtocol = '<STR_LIT>' , <EOL> FromPort = '<STR_LIT>' , <EOL> ToPort = '<STR_LIT>' , <EOL> CidrIp = Ref ( sshlocation_param ) ) , <EOL> SecurityGroupRule ( <EOL> IpProtocol = '<STR_LIT>' , <EOL> FromPort = '<STR_LIT>' , <EOL> ToPort = '<STR_LIT>' , <EOL> CidrIp = '<STR_LIT>' ) ] , <EOL> VpcId = Ref ( VPC ) , <EOL> ) ) <EOL> instance_metadata = Metadata ( <EOL> Init ( { <EOL> '<STR_LIT>' : InitConfig ( <EOL> packages = { '<STR_LIT>' : { '<STR_LIT>' : [ ] } } , <EOL> files = InitFiles ( { <EOL> '<STR_LIT>' : InitFile ( content = Join ( '<STR_LIT:\n>' , <EOL> [ <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' ] ) , <EOL> mode = '<STR_LIT>' , <EOL> owner = '<STR_LIT:root>' , <EOL> group = '<STR_LIT:root>' ) , <EOL> '<STR_LIT>' : InitFile ( content = Join ( '<STR_LIT>' , <EOL> [ '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ref_stack_id , <EOL> '<STR_LIT:\n>' , <EOL> '<STR_LIT>' , <EOL> ref_region , <EOL> '<STR_LIT:\n>' , <EOL> ] ) , <EOL> mode = '<STR_LIT>' , <EOL> owner = '<STR_LIT:root>' , <EOL> group = '<STR_LIT:root>' ) , <EOL> '<STR_LIT>' : InitFile ( <EOL> content = Join ( '<STR_LIT>' , <EOL> [ '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ref_stack_name , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ref_region , <EOL> '<STR_LIT:\n>' , <EOL> '<STR_LIT>' , <EOL> ] ) ) } ) , <EOL> services = { <EOL> '<STR_LIT>' : InitServices ( { <EOL> '<STR_LIT>' : InitService ( <EOL> enabled = True , <EOL> ensureRunning = True ) , <EOL> '<STR_LIT>' : InitService ( <EOL> enabled = True , <EOL> ensureRunning = True , <EOL> files = [ <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' <EOL> ] ) } ) } ) } ) ) <EOL> instance = t . add_resource ( <EOL> Instance ( <EOL> '<STR_LIT>' , <EOL> Metadata = instance_metadata , <EOL> ImageId = FindInMap ( <EOL> '<STR_LIT>' , <EOL> Ref ( '<STR_LIT>' ) , <EOL> FindInMap ( <EOL> '<STR_LIT>' , <EOL> Ref ( instanceType_param ) , <EOL> '<STR_LIT>' ) ) , <EOL> InstanceType = Ref ( instanceType_param ) , <EOL> KeyName = Ref ( keyname_param ) , <EOL> NetworkInterfaces = [ <EOL> NetworkInterfaceProperty ( <EOL> GroupSet = [ <EOL> Ref ( instanceSecurityGroup ) ] , <EOL> AssociatePublicIpAddress = '<STR_LIT:true>' , <EOL> DeviceIndex = '<STR_LIT:0>' , <EOL> DeleteOnTermination = '<STR_LIT:true>' , <EOL> SubnetId = Ref ( subnet ) ) ] , <EOL> UserData = Base64 ( <EOL> Join ( <EOL> '<STR_LIT>' , <EOL> [ <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> Ref ( '<STR_LIT>' ) , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> Ref ( '<STR_LIT>' ) , <EOL> '<STR_LIT:\n>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> Ref ( '<STR_LIT>' ) , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> Ref ( '<STR_LIT>' ) , <EOL> '<STR_LIT:\n>' , <EOL> ] ) ) , <EOL> CreationPolicy = CreationPolicy ( <EOL> ResourceSignal = ResourceSignal ( <EOL> Timeout = '<STR_LIT>' ) ) , <EOL> Tags = Tags ( <EOL> Application = ref_stack_id ) , <EOL> ) ) <EOL> ipAddress = t . add_resource ( <EOL> EIP ( '<STR_LIT>' , <EOL> DependsOn = '<STR_LIT>' , <EOL> Domain = '<STR_LIT>' , <EOL> InstanceId = Ref ( instance ) <EOL> ) ) <EOL> t . add_output ( <EOL> [ Output ( '<STR_LIT>' , <EOL> Description = '<STR_LIT>' , <EOL> Value = Join ( '<STR_LIT>' , <EOL> [ '<STR_LIT>' , <EOL> GetAtt ( '<STR_LIT>' , <EOL> '<STR_LIT>' ) ] ) ) ] ) <EOL> print ( t . to_json ( ) ) </s>
