{"id":2236,"date":"2022-03-27T06:00:54","date_gmt":"2022-03-27T14:00:54","guid":{"rendered":"https:\/\/tungle.ca\/?p=2236"},"modified":"2022-05-01T17:01:02","modified_gmt":"2022-05-02T01:01:02","slug":"using-aws-cloudformation-to-deploy-vpc-subnet-security-group-linux-instance-and-static-apache-website","status":"publish","type":"post","link":"https:\/\/tungle.ca\/?p=2236","title":{"rendered":"Using AWS Cloudformation to deploy VPC, subnet, Security group, Linux instance, and static Apache website."},"content":{"rendered":"\n<p>Create a new key pair.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"889\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-275.png\" alt=\"\" class=\"wp-image-2237\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-275.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-275-300x274.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-275-768x700.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-275-200x182.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Upload the template to stack on AWS Cloudformation.<\/p>\n\n\n\n<p>Upload a template to stack.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"630\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-276.png\" alt=\"\" class=\"wp-image-2238\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-276.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-276-300x194.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-276-768x496.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-276-200x129.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"AWSTemplateFormatVersion\" : \"2010-09-09\",\n  \"Description\" : \"AWS CloudFormation Sample Template VPC_with_PublicIPs_And_DNS: Sample template that creates a VPC with DNS and public IPs enabled. Note that you are billed for the AWS resources that you use when you create a stack from this template.\",\n  \"Parameters\": {\n    \"KeyPair\": {\n      \"Description\": \"Name of the keypair to use for SSH access\",\n      \"Type\": \"String\"\n      }\n  },\n\n  \"Resources\" : {\n    \"VPC\" : {\n      \"Type\" : \"AWS::EC2::VPC\",\n      \"Properties\" : {\n        \"EnableDnsSupport\" : \"true\",\n        \"EnableDnsHostnames\" : \"true\",\n        \"CidrBlock\" : \"10.0.0.0\/16\"\n      }\n    },\n    \"PublicSubnet\" : {\n      \"Type\" : \"AWS::EC2::Subnet\",\n      \"Properties\" : {\n        \"VpcId\" : { \"Ref\" : \"VPC\" },\n        \"CidrBlock\" : \"10.0.0.0\/24\"\n      }\n    },\n    \"InternetGateway\" : {\n      \"Type\" : \"AWS::EC2::InternetGateway\"\n    },\n    \"VPCGatewayAttachment\" : {\n       \"Type\" : \"AWS::EC2::VPCGatewayAttachment\",\n       \"Properties\" : {\n         \"VpcId\" : { \"Ref\" : \"VPC\" },\n         \"InternetGatewayId\" : { \"Ref\" : \"InternetGateway\" }\n       }\n    },\n    \"PublicRouteTable\" : {\n      \"Type\" : \"AWS::EC2::RouteTable\",\n      \"Properties\" : {\n        \"VpcId\" : { \"Ref\" : \"VPC\" }\n      }\n    },\n    \"PublicRoute\" : {\n      \"Type\" : \"AWS::EC2::Route\",\n      \"DependsOn\" : \"VPCGatewayAttachment\",\n      \"Properties\" : {\n        \"RouteTableId\" : { \"Ref\" : \"PublicRouteTable\" },\n        \"DestinationCidrBlock\" : \"0.0.0.0\/0\",\n        \"GatewayId\" : { \"Ref\" : \"InternetGateway\" }\n      }\n    },\n    \"PublicSubnetRouteTableAssociation\" : {\n      \"Type\" : \"AWS::EC2::SubnetRouteTableAssociation\",\n      \"Properties\" : {\n        \"SubnetId\" : { \"Ref\" : \"PublicSubnet\" },\n        \"RouteTableId\" : { \"Ref\" : \"PublicRouteTable\" }\n      }\n    },\n    \"PublicSubnetNetworkAclAssociation\" : {\n      \"Type\" : \"AWS::EC2::SubnetNetworkAclAssociation\",\n      \"Properties\" : {\n        \"SubnetId\" : { \"Ref\" : \"PublicSubnet\" },\n        \"NetworkAclId\" : { \"Fn::GetAtt\" : &#91;\"VPC\", \"DefaultNetworkAcl\"] }\n      }\n    },\n    \"WebServerSecurityGroup\" : {\n      \"Type\" : \"AWS::EC2::SecurityGroup\",\n      \"Properties\" : {\n        \"GroupDescription\" : \"Enable HTTP ingress\",\n        \"VpcId\" : { \"Ref\" : \"VPC\" },\n        \"SecurityGroupIngress\" : &#91;\n          {\"IpProtocol\" : \"tcp\",\"FromPort\" : \"80\",\"ToPort\" : \"80\",\"CidrIp\" : \"0.0.0.0\/0\"},\n          {\"IpProtocol\" : \"tcp\", \"FromPort\" : \"22\", \"ToPort\" : \"22\", \"CidrIp\" : \"0.0.0.0\/0\"}]\n       }\n    },\n    \"WebServerInstance\": {\n      \"Type\": \"AWS::EC2::Instance\",\n      \"Properties\": {\n        \"InstanceType\": \"t2.micro\",\n        \"ImageId\": \"ami-8c1be5f6\",\n        \"NetworkInterfaces\" : &#91;{\n          \"GroupSet\"                 : &#91;{\"Ref\": \"WebServerSecurityGroup\"}],\n          \"AssociatePublicIpAddress\" : \"true\",\n          \"DeviceIndex\"              : \"0\",\n          \"DeleteOnTermination\"      : \"true\",\n          \"SubnetId\"                 : {\"Ref\": \"PublicSubnet\"}\n        }],\n        \"KeyName\": {\n          \"Ref\": \"KeyPair\"\n        },\n        \"UserData\": {\n          \"Fn::Base64\": {\n            \"Fn::Join\": &#91;\n              \"\\n\",\n              &#91;\n                \"#!\/bin\/bash -xe\",\n                \"sudo yum update -y\",\n                \"sudo yum install httpd -y\",\n                \"sudo \/etc\/init.d\/httpd start\",\n                \"echo \\\"&lt;html&gt;&lt;body&gt;&lt;h1&gt;Welcome to Tung - CISA Cloud Project !!!&lt;\/h1&gt;\\\" &gt; \/var\/www\/html\/index.html\",\n                \"echo \\\"&lt;\/body&gt;&lt;\/html&gt;\\\" &gt;&gt; \/var\/www\/html\/index.html\"\n              ]\n            ]\n          }\n        }\n      }\n    }\n\n  },\n  \"Outputs\" : {\n    \"URL\" : {\n      \"Description\" : \"URL of the sample website\",\n      \"Value\" :  { \"Fn::Join\" : &#91; \"\", &#91; \"http:\/\/\", { \"Fn::GetAtt\" : &#91; \"WebServerInstance\", \"PublicDnsName\" ]}]]}\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p>Specify stack details.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"509\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-277.png\" alt=\"\" class=\"wp-image-2239\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-277.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-277-300x157.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-277-768x401.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-277-200x104.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Review.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"779\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-278.png\" alt=\"\" class=\"wp-image-2240\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-278.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-278-300x240.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-278-768x614.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-278-200x160.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Click create a stack.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"688\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-279.png\" alt=\"\" class=\"wp-image-2241\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-279.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-279-300x212.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-279-768x542.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-279-200x141.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><figcaption>Wait for a couple of minutes to complete.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"523\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-280.png\" alt=\"\" class=\"wp-image-2242\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-280.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-280-300x161.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-280-768x412.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-280-200x107.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Output.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"311\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-281.png\" alt=\"\" class=\"wp-image-2243\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-281.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-281-300x96.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-281-768x245.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-281-200x64.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Templates.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"486\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-282.png\" alt=\"\" class=\"wp-image-2244\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-282.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-282-300x150.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-282-768x383.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-282-200x100.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Check your VPC.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"494\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-283.png\" alt=\"\" class=\"wp-image-2245\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-283.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-283-300x152.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-283-768x389.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-283-200x101.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Subnets.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"480\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-284.png\" alt=\"\" class=\"wp-image-2246\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-284.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-284-300x148.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-284-768x378.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-284-200x98.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Route tables.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"454\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-285.png\" alt=\"\" class=\"wp-image-2247\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-285.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-285-300x140.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-285-768x358.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-285-200x93.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Subnet association.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"524\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-286.png\" alt=\"\" class=\"wp-image-2248\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-286.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-286-300x161.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-286-768x413.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-286-200x107.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><figcaption>Internet Gateway.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"521\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-288.png\" alt=\"\" class=\"wp-image-2250\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-288.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-288-300x160.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-288-768x410.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-288-200x107.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Linux instance.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"499\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-289.png\" alt=\"\" class=\"wp-image-2251\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-289.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-289-300x154.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-289-768x393.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-289-200x102.png 200w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Access the website.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-290.png\" alt=\"\" class=\"wp-image-2252\" width=\"334\" height=\"108\" srcset=\"https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-290.png 975w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-290-300x97.png 300w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-290-768x249.png 768w, https:\/\/tungle.ca\/wp-content\/uploads\/2022\/03\/image-290-200x65.png 200w\" sizes=\"auto, (max-width: 334px) 100vw, 334px\" \/><figcaption>Click delete stack to terminate the stack when completing the lab.<\/figcaption><\/figure>\n\n\n\n<p>I have attached the short video demonstration in the following link.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"CloudFormation\" width=\"625\" height=\"469\" src=\"https:\/\/www.youtube.com\/embed\/vK0IjOVNU5c?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Create a new key pair. Upload the template to stack on AWS Cloudformation. Upload a template to stack. Specify stack details. Review. Click create a stack. Output. Templates. Check your VPC. Subnets. Route tables. Subnet association. Linux instance. Access the website. I have attached the short video demonstration in the following link.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[20],"class_list":["post-2236","post","type-post","status-publish","format-standard","hentry","category-cloud","tag-cloud"],"_links":{"self":[{"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/posts\/2236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tungle.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2236"}],"version-history":[{"count":5,"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/posts\/2236\/revisions"}],"predecessor-version":[{"id":3277,"href":"https:\/\/tungle.ca\/index.php?rest_route=\/wp\/v2\/posts\/2236\/revisions\/3277"}],"wp:attachment":[{"href":"https:\/\/tungle.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tungle.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tungle.ca\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}