{"id":3232,"date":"2024-01-04T07:26:40","date_gmt":"2024-01-04T07:26:40","guid":{"rendered":"https:\/\/www.easydeploy.io\/blog\/?p=3232"},"modified":"2024-05-24T04:25:08","modified_gmt":"2024-05-24T03:25:08","slug":"install-atlantis-docker-container-in-amazon-linux-integrate","status":"publish","type":"post","link":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/","title":{"rendered":"How to install Atlantis as Docker Container in Amazon Linux 3 and Integrate with GitHub?"},"content":{"rendered":"<h1>Introduction<\/h1>\n<p>Atlantis is an open-source project that integrates with Terraform an <a href=\"https:\/\/www.easydeploy.io\/iac\" target=\"_blank\" rel=\"noopener\">Infrastructure as a Code<\/a> tool and connects with popular version control systems (VCS) like <strong>GitHub, GitLab, <\/strong>and<strong> Bitbucket.<\/strong> It provides an automated workflow for managing infrastructure as code (IaC) using <strong>Terraform<\/strong> in a collaborative and controlled manner.<\/p>\n<p>Atlantis will work like <strong>Terraform Cloud<\/strong>, to manage <strong>Terraform with VCS<\/strong> for an automated workflow. Since Terraform Cloud has raised its price for managing resources, Atlantis can install it on your machine and manage it your way.\u00a0 You can integrate Atlantis with your VCS for example <strong>GitHub repo<\/strong> that has your <strong>terraform code<\/strong>. Once you have pushed your terraform code to GitHub and created a pull request, <strong>Atlantis triggers<\/strong> via webhook and gives you a plan details of your terraform code in the comment section of your <strong>GitHub pull request<\/strong>. Once you verify and approve, it will create resources and after completion, it will automatically merge the pull request.<\/p>\n<p>One of the major uses of <strong>Atlantis<\/strong> is that if anyone is working on a <strong>terraform code<\/strong> and creates a plan, Atantis locks the terraform state file for that terraform code and it won&#8217;t allow any others to run the terraform plan against the same terraform code. This will help to prevent <strong>Terraform state files<\/strong> from becoming corrupt.<\/p>\n<p data-renderer-start-pos=\"1083\">If you&#8217;re using Terraform and want to implement better <strong>collaboration<\/strong> and <strong>automation practices<\/strong>, Atlantis could be a valuable addition to your toolset.<\/p>\n<p data-renderer-start-pos=\"1234\">In this demo, I will show you how to run the Atlatis server as a <strong>Docker container<\/strong> in an <strong>Amazon Linux 2<\/strong> machine and How it works.<\/p>\n<p data-renderer-start-pos=\"1234\">We also have this in video tutorial posted on our YouTube channel.<\/p>\n<div class=\"wpex-responsive-embed\"><iframe loading=\"lazy\" title=\"Infrastructure automation via GitHub pull request for Terraform with Atlantis\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/sV9IBczE3IA?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><\/div>\n<h1 data-renderer-start-pos=\"1234\">Prerequisites<\/h1>\n<ul>\n<li><strong>Amazon Linux 3<\/strong> <strong>EC2<\/strong> instance with <strong>4000<\/strong>, <strong>22<\/strong> ports allowed.<\/li>\n<li><strong data-renderer-mark=\"true\">Create a S3 bucket<\/strong> with <strong data-renderer-mark=\"true\">versioning <\/strong>enabled. (this is for storing the tf state file because Atlantis won\u2019t save the tf state file locally)<\/li>\n<li>Create a private<strong data-renderer-mark=\"true\"> GitHub Repository <\/strong>where we are going to have the<strong data-renderer-mark=\"true\"> terraform scripts (<\/strong>if there is an existing repository you can use that too<strong data-renderer-mark=\"true\">)<\/strong><\/li>\n<\/ul>\n<h1>Generate Access Token in GitHub<\/h1>\n<p>Before we run the Atlantis server we need to create an <strong>App password<\/strong> to authenticate our <strong>Private<\/strong> <strong>Github<\/strong> <strong>repository<\/strong> from our <strong>Atlantis<\/strong> server.<\/p>\n<p>So log in to your GitHub Account and Click on your <strong>Profile<\/strong> icon followed by <strong>Settings<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/1.webp\" alt=\"Github profile settings\" width=\"1912\" height=\"955\" class=\"aligncenter wp-image-3248 size-full\" title=\"Github profile settings\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/1.webp 1912w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/1-300x150.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/1-1024x511.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/1-768x384.webp 768w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/1-1536x767.webp 1536w\" sizes=\"(max-width: 1912px) 100vw, 1912px\" \/><\/p>\n<p>Click on the <strong>Developer settings<\/strong> button.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/2.webp\" alt=\"Github Developer settings\" width=\"1232\" height=\"753\" class=\"aligncenter wp-image-3249 size-full\" title=\"Github Developer settings\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/2.webp 1232w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/2-300x183.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/2-1024x626.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/2-768x469.webp 768w\" sizes=\"(max-width: 1232px) 100vw, 1232px\" \/><\/p>\n<p>Click <strong>Personal access tokens &#8211;&gt; Tokens (classic)\u00a0 &#8211;&gt; Generate new token &#8211;&gt; Generate new token (classic)<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/3.webp\" alt=\"Github Personal access tokens\" width=\"1528\" height=\"478\" class=\"aligncenter wp-image-3250 size-full\" title=\"Github Personal access tokens\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/3.webp 1528w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/3-300x94.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/3-1024x320.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/3-768x240.webp 768w\" sizes=\"(max-width: 1528px) 100vw, 1528px\" \/><\/p>\n<p>Enter a name for this token inside the <strong>Note<\/strong> option.<\/p>\n<p>For <strong>Expiration,\u00a0<\/strong> Select any days to expire your token for your convenience. If you want your token not to expire, you can choose <strong>No expiration<\/strong> also.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/4.webp\" alt=\"Github Personal access tokens\" width=\"890\" height=\"533\" class=\"aligncenter wp-image-3251 size-full\" title=\"Github Personal access tokens\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/4.webp 890w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/4-300x180.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/4-768x460.webp 768w\" sizes=\"(max-width: 890px) 100vw, 890px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Under the <strong>Select scopes,<\/strong> select <strong>repo<\/strong> and <strong>admin:repo_hook.<\/strong> Leave others as non-selected.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/5.webp\" alt=\"Github Personal access tokens\" width=\"974\" height=\"761\" class=\"aligncenter wp-image-3252 size-full\" title=\"Github Personal access tokens\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/5.webp 974w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/5-300x234.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/5-768x600.webp 768w\" sizes=\"(max-width: 974px) 100vw, 974px\" \/><\/p>\n<p>Scroll down to the bottom and click <strong>Generate token.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/6.webp\" alt=\"Github Personal access tokens\" width=\"866\" height=\"444\" class=\"aligncenter wp-image-3253 size-full\" title=\"Github Personal access tokens\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/6.webp 866w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/6-300x154.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/6-768x394.webp 768w\" sizes=\"(max-width: 866px) 100vw, 866px\" \/><\/p>\n<p>Now you can able to see a token like the below image. Copy that token and save it somewhere else.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/7.webp\" alt=\"Github Personal access tokens\" width=\"597\" height=\"83\" class=\"aligncenter wp-image-3254 size-full\" title=\"Github Personal access tokens\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/7.webp 597w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/7-300x42.webp 300w\" sizes=\"(max-width: 597px) 100vw, 597px\" \/><\/p>\n<p>Once you close this section you won&#8217;t be able to get this token again.<\/p>\n<p>In case you have not saved the token and closed this page, then you should have to delete this token and create a new one.<\/p>\n<h1>Install Docker in Amazon Linux 3<\/h1>\n<p>Now we are going to install Docker in the EC2 server.<\/p>\n<p>Open your AWS console, navigate to the EC2 page and select the EC2 server that you have created for Atlantis. Click on the <strong>Connect<\/strong> button.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/8.webp\" alt=\"AWS EC2 instance\" width=\"1163\" height=\"292\" class=\"aligncenter wp-image-3255 size-full\" title=\"AWS EC2 instance\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/8.webp 1163w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/8-300x75.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/8-1024x257.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/8-768x193.webp 768w\" sizes=\"(max-width: 1163px) 100vw, 1163px\" \/><\/p>\n<p>Under the <strong>EC2 Instance Connect<\/strong> section,<\/p>\n<p><strong>Connection<\/strong>\u00a0<strong>Type<\/strong> &#8211;&gt; <strong>Connect using EC2 Instance Connect<\/strong><\/p>\n<p>Click the <strong>Connect<\/strong> button.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/9.webp\" alt=\"AWS EC2 instance connect\" width=\"984\" height=\"715\" class=\"aligncenter wp-image-3256 size-full\" title=\"AWS EC2 instance connect\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/9.webp 984w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/9-300x218.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/9-768x558.webp 768w\" sizes=\"(max-width: 984px) 100vw, 984px\" \/><\/p>\n<p>It will open a terminal of the EC2 instance.<\/p>\n<p>Execute the following commands to install Docker in Amazon Linux 3.<\/p>\n<pre>sudo yum update -y\r\nsudo yum search docker -y\r\nsudo yum install docker -y\r\nsudo systemctl enable docker.service\r\nsudo systemctl start docker.service\r\nsudo systemctl status docker.service<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/10.webp\" alt=\"Install Docker Aws\" width=\"1151\" height=\"775\" class=\"aligncenter wp-image-3257 size-full\" title=\"Install Docker Aws\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/10.webp 1151w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/10-300x202.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/10-1024x689.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/10-768x517.webp 768w\" sizes=\"(max-width: 1151px) 100vw, 1151px\" \/><\/p>\n<p>Once the installation done, run the below command to check the version of the Docker.<\/p>\n<pre>docker --version<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/11.webp\" alt=\"Docker version\" width=\"459\" height=\"60\" class=\"aligncenter wp-image-3258 size-full\" title=\"Docker version\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/11.webp 459w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/11-300x39.webp 300w\" sizes=\"(max-width: 459px) 100vw, 459px\" \/><\/p>\n<h1 id=\"3.-Install-the-Atlantis-Docker-server\" data-renderer-start-pos=\"3647\"><strong data-renderer-mark=\"true\"> Install the Atlantis Docker server<\/strong><\/h1>\n<p>Now create a file called <strong>Dockerfile<\/strong> in the EC2 server.<\/p>\n<p>Add the below lines inside the <strong>Docke<\/strong><strong>rfile.<\/strong><\/p>\n<pre>FROM ghcr.io\/runatlantis\/atlantis:latest\r\n\r\nUSER root\r\nRUN apk add --no-cache aws-cli\r\n\r\nRUN mkdir \/home\/atlantis\/.aws\r\nRUN touch \/home\/atlantis\/.aws\/credentials\r\n\r\nRUN chown atlantis.atlantis \/home\/atlantis\/ -R<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/12.webp\" alt=\"Atlantis docker\" width=\"482\" height=\"178\" class=\"aligncenter wp-image-3259 size-full\" title=\"Atlantis docker\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/12.webp 482w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/12-300x111.webp 300w\" sizes=\"(max-width: 482px) 100vw, 482px\" \/><\/p>\n<p>Run the docker build command to build the Atlantis docker file.<\/p>\n<pre>docker build -t atlantis .<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/13.webp\" alt=\"Atlantis docker\" width=\"1101\" height=\"390\" class=\"aligncenter wp-image-3260 size-full\" title=\"Atlantis docker\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/13.webp 1101w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/13-300x106.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/13-1024x363.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/13-768x272.webp 768w\" sizes=\"(max-width: 1101px) 100vw, 1101px\" \/><\/p>\n<p>Run the <em><strong>docker<\/strong> <strong>images<\/strong><\/em> command to check the image of Atlantis.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/14.webp\" alt=\"Atlantis docker\" width=\"852\" height=\"194\" class=\"aligncenter wp-image-3261 size-full\" title=\"Atlantis docker\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/14.webp 852w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/14-300x68.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/14-768x175.webp 768w\" sizes=\"(max-width: 852px) 100vw, 852px\" \/><\/p>\n<p>Run the following command to run the Atlantis docker container. Change the following things with your values in the below code.<\/p>\n<pre><span data-code-lang=\"\" data-ds--code--code-block=\"\" class=\"prismjs cc-1j55rvq\"><code class=\"language-\"><span class=\"\">docker run -itd -p 4000:4141 --name atlantis atlantis server --automerge --autoplan-modules --gh-user=&lt;github-account-username&gt; --gh-token=&lt;github-usr-access-token&gt; --repo-allowlist=&lt;list of allowed repos&gt;<\/span><\/code><\/span><\/pre>\n<p data-renderer-start-pos=\"4423\">Before you run the above command, which will run the atlantis in local port 4000 change the following details with your values.<\/p>\n<ul class=\"ak-ul\" data-indent-level=\"1\">\n<li>\n<p data-renderer-start-pos=\"4698\"><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\"><em><strong><span data-code-lang=\"\" data-ds--code--code-block=\"\" class=\"prismjs cc-1j55rvq\"><code class=\"language-\"><span class=\"\">github<\/span><\/code><\/span>-account-username<\/strong><\/em><\/code> : Your GitHub Account Username<\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"4763\"><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\"><em><strong><span data-code-lang=\"\" data-ds--code--code-block=\"\" class=\"prismjs cc-1j55rvq\"><code class=\"language-\"><span class=\"\">github<\/span><\/code><\/span>-usr-access-toke<\/strong><\/em>n<\/code> : The token which you have created in the previous step<\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"4849\"><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\"><em><strong>list of allowed repos<\/strong><\/em><\/code>: List of the repositories that you have your terraform codes. Accepts a comma-separated list, ex. <em><strong><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\">github.com\/username\/repo1,github.com\/username\/repo2<\/code><\/strong><\/em><\/p>\n<\/li>\n<\/ul>\n<p data-renderer-start-pos=\"5040\"><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\"><em><strong>--repo-allowlist='github.com\/username\/*'<\/strong><\/em><\/code> : If you add * for the repository section it will collect all the repos in your account.<\/p>\n<p data-renderer-start-pos=\"5214\">Here is an example of the above command with a <strong>single<\/strong> repository;<\/p>\n<pre class=\"code-block cc-qswx85\"><span data-code-lang=\"\" data-ds--code--code-block=\"\" class=\"prismjs cc-1j55rvq\"><code class=\"language-\"><span class=\"\">docker run -itd -p 4000:4141 --name atlantis atlantis server --automerge --autoplan-modules --gh-user=jerinrathnam --gh-token=ghp_lj8nNeckni0N#C*54urnDBUCc0h3f#BFU --repo-allowlist=<code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\">github.com\/easydeploy-cloud<\/code>\/terraform-atlantis<\/span><\/code><\/span><\/pre>\n<div><\/div>\n<div>Here is an example of the above command with a <strong>All<\/strong> repositories in a single GitHub account;<\/div>\n<pre><span data-code-lang=\"\" data-ds--code--code-block=\"\" class=\"prismjs cc-1j55rvq\"><code class=\"language-\"><span class=\"\">docker run -itd -p 4000:4141 --name atlantis atlantis server --automerge --autoplan-modules --gh-user=jerinrathnam --gh-token=nNeckni0N#C*54urnDBUCc0h3f#BFU --repo-allowlist=<code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\">github.com\/easydeploy-cloud<\/code>\/*<\/span><\/code><\/span><\/pre>\n<p data-renderer-start-pos=\"5567\">Once done run the following command to list the running docker containers.<\/p>\n<pre><span data-code-lang=\"\" data-ds--code--code-block=\"\" class=\"prismjs cc-1j55rvq\"><code class=\"language-\"><span class=\"\">docker ps<\/span><\/code><\/span><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/15.webp\" alt=\"Atlantis docker\" width=\"1889\" height=\"119\" class=\"aligncenter wp-image-3262 size-full\" title=\"Atlantis docker\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/15.webp 1889w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/15-300x19.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/15-1024x65.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/15-768x48.webp 768w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/15-1536x97.webp 1536w\" sizes=\"(max-width: 1889px) 100vw, 1889px\" \/><\/p>\n<p>Now Copy the public IP of your EC2 instance and paste it into a browser with add <strong>4000<\/strong> and browse. It will open shows like the below image.<\/p>\n<p>The Atlantis server runs successfully.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/16-1024x475.webp\" alt=\"Alantis server\" width=\"1024\" height=\"475\" class=\"aligncenter wp-image-3263 size-large\" title=\"Alantis server\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/16-1024x475.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/16-300x139.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/16-768x356.webp 768w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/16.webp 1152w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h1 id=\"2.-Configure-AWS-in-Atlantis-docker-container\" data-renderer-start-pos=\"6154\"><strong data-renderer-mark=\"true\">Configure AWS in Atlantis docker container<\/strong><\/h1>\n<p>Open your AWS Console and navigate to the <strong>IAM<\/strong> page.<\/p>\n<p>Navigate to <strong>Users<\/strong> and click <strong>Create User. <\/strong>For the <strong>User<\/strong>\u00a0<strong>name,<\/strong> enter <strong>Atlantis<\/strong> or any name that you like. Then click on <strong>Next.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/17.webp\" alt=\"AWS IAM User\" width=\"1856\" height=\"636\" class=\"aligncenter wp-image-3264 size-full\" title=\"AWS IAM User\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/17.webp 1856w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/17-300x103.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/17-1024x351.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/17-768x263.webp 768w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/17-1536x526.webp 1536w\" sizes=\"(max-width: 1856px) 100vw, 1856px\" \/><\/p>\n<p>For <strong>permissions options,<\/strong> choose\u00a0<strong>Attach policies directly.<\/strong><\/p>\n<p>For\u00a0<strong>permissions policies,<\/strong> search for <strong>s3<\/strong> and select\u00a0<strong>AmazonS3FullAccess<\/strong> policy.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/18.webp\" alt=\"AWS IAM User Policy\" width=\"1520\" height=\"717\" class=\"aligncenter wp-image-3265 size-full\" title=\"AWS IAM User Policy\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/18.webp 1520w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/18-300x142.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/18-1024x483.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/18-768x362.webp 768w\" sizes=\"(max-width: 1520px) 100vw, 1520px\" \/><\/p>\n<p>Again search for <strong>ec2full<\/strong> and select\u00a0<strong>AmazonEC2FullAccess<\/strong> policy. Then click on <strong>Next.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/19.webp\" alt=\"AWS IAM User Policy\" width=\"1565\" height=\"473\" class=\"aligncenter wp-image-3266 size-full\" title=\"AWS IAM User Policy\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/19.webp 1565w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/19-300x91.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/19-1024x309.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/19-768x232.webp 768w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/19-1536x464.webp 1536w\" sizes=\"(max-width: 1565px) 100vw, 1565px\" \/><\/p>\n<p>Now just review the details and policies and click <strong>Create user.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/20.webp\" alt=\"AWS IAM User\" width=\"1568\" height=\"814\" class=\"aligncenter wp-image-3267 size-full\" title=\"AWS IAM User\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/20.webp 1568w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/20-300x156.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/20-1024x532.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/20-768x399.webp 768w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/20-1536x797.webp 1536w\" sizes=\"(max-width: 1568px) 100vw, 1568px\" \/><\/p>\n<p>Click on the name of the user and navigate to the <strong>Security credentials<\/strong> section.<\/p>\n<p>Under <strong>Access keys<\/strong> click on <strong>Create access key.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/21.webp\" alt=\"AWS Access Key\" width=\"1549\" height=\"846\" class=\"aligncenter wp-image-3268 size-full\" title=\"AWS Access Key\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/21.webp 1549w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/21-300x164.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/21-1024x559.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/21-768x419.webp 768w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/21-1536x839.webp 1536w\" sizes=\"(max-width: 1549px) 100vw, 1549px\" \/><\/p>\n<p>For <strong>Use case<\/strong> select <strong>Command Line Interface(CLI),\u00a0<\/strong>and select the <strong>confirmation\u00a0<\/strong>and click <strong>Next.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/22.webp\" alt=\"AWS Access Key\" width=\"1239\" height=\"823\" class=\"aligncenter wp-image-3269 size-full\" title=\"AWS Access Key\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/22.webp 1239w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/22-300x199.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/22-1024x680.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/22-768x510.webp 768w\" sizes=\"(max-width: 1239px) 100vw, 1239px\" \/><\/p>\n<p>Leave the <strong>Description tag<\/strong> and click on the <strong>Create access key<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/23.webp\" alt=\"AWS Access Key\" width=\"1277\" height=\"355\" class=\"aligncenter wp-image-3270 size-full\" title=\"AWS Access Key\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/23.webp 1277w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/23-300x83.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/23-1024x285.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/23-768x214.webp 768w\" sizes=\"(max-width: 1277px) 100vw, 1277px\" \/><\/p>\n<p>Copy the both <strong>Access key<\/strong> and <strong>Secret Access key<\/strong> and save it somewhere else. We will use them later in this tutorial.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/24.webp\" alt=\"AWS Access Key\" width=\"1262\" height=\"619\" class=\"aligncenter wp-image-3271 size-full\" title=\"AWS Access Key\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/24.webp 1262w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/24-300x147.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/24-1024x502.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/24-768x377.webp 768w\" sizes=\"(max-width: 1262px) 100vw, 1262px\" \/><\/p>\n<p data-renderer-start-pos=\"6201\">Run the following command in your EC2 server to get into the Atlantis docker container to configure the AWS.<\/p>\n<pre data-renderer-start-pos=\"6201\"><span data-code-lang=\"shell\" data-ds--code--code-block=\"\" class=\"prismjs cc-1j55rvq\"><code class=\"language-shell\"><span class=\"token function\">docker<\/span><span class=\"\"> <\/span><span class=\"token builtin class-name\">exec<\/span><span class=\"\"> -it atlantis \/bin\/sh<\/span><\/code><\/span><\/pre>\n<p data-renderer-start-pos=\"6201\"><span data-code-lang=\"shell\" data-ds--code--code-block=\"\" class=\"prismjs cc-1j55rvq\"><code class=\"language-shell\"><\/code><\/span>Inside the container run this command to edit the AWS credentials.<\/p>\n<pre data-renderer-start-pos=\"6201\"><span data-code-lang=\"\" data-ds--code--code-block=\"\" class=\"prismjs cc-1j55rvq\"><code class=\"language-\"><span class=\"\">vi \/home\/atlantis\/.aws\/credentials<\/span><\/code><\/span><\/pre>\n<p data-renderer-start-pos=\"6429\">Add the below contents into the credentials file and save it.<\/p>\n<pre><span data-code-lang=\"\" data-ds--code--code-block=\"\" class=\"prismjs cc-1j55rvq\"><code class=\"language-\"><span class=\"\">[default]\r\n<\/span><\/code><\/span><span data-code-lang=\"\" data-ds--code--code-block=\"\" class=\"prismjs cc-1j55rvq\"><code class=\"language-\">aws_access_key_id = &lt;ACCESS-KEY&gt;\r\n<\/code><\/span><span data-code-lang=\"\" data-ds--code--code-block=\"\" class=\"prismjs cc-1j55rvq\"><code class=\"language-\">aws_secret_access_key = &lt;SECRET-KEY&gt;<\/code><\/span><\/pre>\n<p data-renderer-start-pos=\"6573\">Change the following values in the above code<\/p>\n<ul class=\"ak-ul\" data-indent-level=\"1\">\n<li>\n<p data-renderer-start-pos=\"6622\"><strong><em><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\">ACCESS-KEY<\/code><\/em><\/strong>: <strong>Access key<\/strong> ID of the<strong> AWS IAM user<\/strong><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"6671\"><em><strong><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\">SECRET-KEY<\/code><\/strong><\/em>: <strong>Secret Access key<\/strong> ID of the <strong>AWS IAM user<\/strong><\/p>\n<\/li>\n<\/ul>\n<p data-renderer-start-pos=\"6727\"><strong data-renderer-mark=\"true\">Note:<\/strong> If you have <strong data-renderer-mark=\"true\">many profiles<\/strong> you can make entries accordingly in the above file and use it in the Terraform<\/p>\n<h1 id=\"4.-Configuring-webhooks-in-Bitbucket-Repository\" data-renderer-start-pos=\"6838\"><strong data-renderer-mark=\"true\">Configuring webhooks in GitHub Repository<\/strong><\/h1>\n<p>Open your GitHub repository which you&#8217;re gonna use it your terraform code repo. Go to\u00a0<strong>Settings &#8211;&gt; webhooks &#8211;&gt; Add webhook.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/25.webp\" alt=\"GitHub repo settings\" width=\"1418\" height=\"784\" class=\"aligncenter wp-image-3272 size-full\" title=\"GitHub repo settings\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/25.webp 1418w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/25-300x166.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/25-1024x566.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/25-768x425.webp 768w\" sizes=\"(max-width: 1418px) 100vw, 1418px\" \/><\/p>\n<ul class=\"ak-ul\" data-indent-level=\"1\">\n<li>\n<p data-renderer-start-pos=\"7096\">Set <strong>Payload URL<\/strong> to<code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\"><em><strong>http:\/\/$URL\/event<\/strong><\/em>s<\/code>, where\u00a0<strong><em><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\">$URL<\/code><\/em><\/strong> is the Public IP of the EC2 instance where Atlantis is hosted. <strong data-renderer-mark=\"true\">Be sure to add\u00a0 <\/strong><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\">\/events<\/code><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"7193\">double-check you added\u00a0<em><strong><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\">\/events<\/code><\/strong><\/em>\u00a0to the end of your <strong>URL.<\/strong><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"7251\">Set <strong>Content type<\/strong> to <strong>application\/json.<\/strong><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"7276\">Set\u00a0<strong>Which event would you like to trigger this webhook?<\/strong> to\u00a0<strong>Let me select individual events.<\/strong><\/p>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/26.webp\" alt=\"GitHub repo webhooks\" width=\"947\" height=\"613\" class=\"aligncenter wp-image-3273 size-full\" title=\"GitHub repo webhooks\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/26.webp 947w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/26-300x194.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/26-768x497.webp 768w\" sizes=\"(max-width: 947px) 100vw, 947px\" \/><\/p>\n<p>only select the following things and leave others unchecked.<\/p>\n<ul>\n<li>Issue comments<\/li>\n<li>Pull request reviews<\/li>\n<li>Pull requests<\/li>\n<li>Pushes<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/27.webp\" alt=\"GitHub repo webhooks\" width=\"810\" height=\"785\" class=\"aligncenter wp-image-3274 size-full\" title=\"GitHub repo webhooks\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/27.webp 810w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/27-300x291.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/27-768x744.webp 768w\" sizes=\"(max-width: 810px) 100vw, 810px\" \/><\/p>\n<p>Make sure the <strong>Active<\/strong> is checked and Click <strong>Add webhook.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/28.webp\" alt=\"GitHub repo webhooks\" width=\"442\" height=\"147\" class=\"aligncenter wp-image-3275 size-full\" title=\"GitHub repo webhooks\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/28.webp 442w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/28-300x100.webp 300w\" sizes=\"(max-width: 442px) 100vw, 442px\" \/><\/p>\n<p>Now as you can see the Webhook has been added successfully.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/29.webp\" alt=\"GitHub repo webhooks\" width=\"926\" height=\"268\" class=\"aligncenter wp-image-3276 size-full\" title=\"GitHub repo webhooks\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/29.webp 926w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/29-300x87.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/29-768x222.webp 768w\" sizes=\"(max-width: 926px) 100vw, 926px\" \/><\/p>\n<h1 id=\"5.-Create-a-terraform-code-with-S3-as-the-backend\" data-renderer-start-pos=\"7697\"><strong data-renderer-mark=\"true\"> Create a terraform code with S3 as the backend<\/strong><\/h1>\n<p>Copy the <strong>Clone HTTPS URL<\/strong> of your GitHub repository.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/29-a.webp\" alt=\"GitHub repo CLone\" width=\"1063\" height=\"583\" class=\"aligncenter wp-image-3277 size-full\" title=\"GitHub repo CLone\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/29-a.webp 1063w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/29-a-300x165.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/29-a-1024x562.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/29-a-768x421.webp 768w\" sizes=\"(max-width: 1063px) 100vw, 1063px\" \/><\/p>\n<p>Clone the GitHub repo in your local machine.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/30.webp\" alt=\"GitHub repo CLone\" width=\"867\" height=\"179\" class=\"aligncenter wp-image-3278 size-full\" title=\"GitHub repo CLone\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/30.webp 867w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/30-300x62.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/30-768x159.webp 768w\" sizes=\"(max-width: 867px) 100vw, 867px\" \/><\/p>\n<p>Open the cloned repository folder with VS code.<\/p>\n<p>Create a new file called <strong>main.tf<\/strong><\/p>\n<p>Copy the below code and paste it in the<strong data-renderer-mark=\"true\"> main.tf<\/strong><strong data-renderer-mark=\"true\">\u00a0<\/strong>file.<\/p>\n<pre>############ PROVIDER BLOCK ############\r\nprovider \"aws\" {\r\nregion = \"&lt;EC2-REGION&gt;\"\r\nprofile = \"default\"\r\n}\r\n\r\n############ SAVING TF STATE FILE #########\r\nterraform {\r\nbackend \"s3\" {\r\nbucket = \"&lt;S3-BUCKET&gt;\"\r\nkey = \"atlantis\/terraform.tfstate\"\r\nregion = \"&lt;S3-REGION&gt;\"\r\nprofile = \"default\"\r\n}\r\n}\r\n\r\n################# EC2 INSTANCE CREATION #########\r\ndata \"aws_ami\" \"ubuntu\" {\r\nmost_recent = true\r\n\r\nfilter {\r\nname = \"name\"\r\nvalues = [\"ubuntu\/images\/hvm-ssd\/ubuntu-focal-20.04-amd64-server-*\"]\r\n}\r\n\r\nfilter {\r\nname = \"virtualization-type\"\r\nvalues = [\"hvm\"]\r\n}\r\n\r\nowners = [\"099720109477\"] # Canonical\r\n}\r\n\r\nresource \"aws_instance\" \"web\" {\r\nami = data.aws_ami.ubuntu.id\r\ninstance_type = \"t2.micro\"\r\n\r\ntags = {\r\nName = \"terraform-atlantis\"\r\n}\r\n}<\/pre>\n<p data-renderer-start-pos=\"9266\"><strong data-renderer-mark=\"true\">Change the following values in the above code:<\/strong><\/p>\n<ul class=\"ak-ul\" data-indent-level=\"1\">\n<li>\n<p data-renderer-start-pos=\"9315\"><em><strong><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\">EC2-REGION<\/code><\/strong><\/em>: the <strong data-renderer-mark=\"true\">region<\/strong> where the resource needs to be created.<\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"9376\"><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\"><em><strong>S3-BUCKET<\/strong><\/em><\/code>: Name of the <strong data-renderer-mark=\"true\">S3 bucket<\/strong> for terraform S3 backend. This bucket should be created before you get into this tutorial.<\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"9438\"><em><strong><code class=\"code cc-1o5d2cw\" data-renderer-mark=\"true\">S3-REGION<\/code><\/strong><\/em>: The<strong data-renderer-mark=\"true\"> region name where the S3 bucket<\/strong> is present.<\/p>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/31.webp\" alt=\"Terraform script EC2\" width=\"862\" height=\"864\" class=\"aligncenter wp-image-3279 size-full\" title=\"Terraform script EC2\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/31.webp 862w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/31-300x300.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/31-150x150.webp 150w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/31-768x770.webp 768w\" sizes=\"(max-width: 862px) 100vw, 862px\" \/><\/p>\n<p>Open the terminal in the same folder and run the following commands to push the terraform script to the GitHub repository.<\/p>\n<pre>git add *\r\ngit commit -m \"Create EC2 Instance\"\r\ngit checkout -b develop\r\ngit push origin develop<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/32.webp\" alt=\"GitHub push\" width=\"640\" height=\"382\" class=\"aligncenter wp-image-3280 size-full\" title=\"GitHub push\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/32.webp 640w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/32-300x179.webp 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>To verify this Go to the <strong data-renderer-mark=\"true\">repository page<\/strong> in the browser and switch to <strong>develop <\/strong>branch and you can see the <strong>main.tf<\/strong> file is present in the <strong data-renderer-mark=\"true\">develop <\/strong>branch.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/33.webp\" alt=\"GitHub push\" width=\"954\" height=\"604\" class=\"aligncenter wp-image-3281 size-full\" title=\"GitHub push\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/33.webp 954w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/33-300x190.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/33-768x486.webp 768w\" sizes=\"(max-width: 954px) 100vw, 954px\" \/><\/p>\n<h1>Test the Terraform Atlantis workflow<\/h1>\n<p>Under the <strong>Pull requests<\/strong> section, Create a pull request by clicking <strong>New pull request.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/35.webp\" alt=\"GitHub pull request\" width=\"1482\" height=\"647\" class=\"aligncenter wp-image-3284 size-full\" title=\"GitHub pull request\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/35.webp 1482w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/35-300x131.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/35-1024x447.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/35-768x335.webp 768w\" sizes=\"(max-width: 1482px) 100vw, 1482px\" \/><\/p>\n<p>Make sure the <strong>compare<\/strong> branch is\u00a0<strong>develop.<\/strong><\/p>\n<p>Click on <strong>Create pull request.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/33-a.webp\" alt=\"GitHub pull request\" width=\"1311\" height=\"467\" class=\"aligncenter wp-image-3282 size-full\" title=\"GitHub pull request\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/33-a.webp 1311w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/33-a-300x107.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/33-a-1024x365.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/33-a-768x274.webp 768w\" sizes=\"(max-width: 1311px) 100vw, 1311px\" \/><\/p>\n<p><strong>Add a title<\/strong> for your pull request and Click the <strong>Create pull request\u00a0<\/strong>button.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/34.webp\" alt=\"GitHub pull request\" width=\"1025\" height=\"711\" class=\"aligncenter wp-image-3283 size-full\" title=\"GitHub pull request\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/34.webp 1025w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/34-300x208.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/34-768x533.webp 768w\" sizes=\"(max-width: 1025px) 100vw, 1025px\" \/><\/p>\n<p>After a couple of seconds, it will write a command like <strong>Show Output.\u00a0<\/strong>Expand the output to see the detials.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/36.webp\" alt=\"Atlantis terraform plan\" width=\"995\" height=\"785\" class=\"aligncenter wp-image-3285 size-full\" title=\"Atlantis terraform plan\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/36.webp 995w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/36-300x237.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/36-768x606.webp 768w\" sizes=\"(max-width: 995px) 100vw, 995px\" \/><\/p>\n<p>It will show the terraform plan details of what services are going to be created. Every time you create a pull request it shows a planned output of the terraform. You should verify that to know about what exactly is gonna happen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/37.webp\" alt=\"Atlantis terraform plan\" width=\"692\" height=\"559\" class=\"aligncenter wp-image-3286 size-full\" title=\"Atlantis terraform plan\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/37.webp 692w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/37-300x242.webp 300w\" sizes=\"(max-width: 692px) 100vw, 692px\" \/><\/p>\n<p>Once you have verified the planned output,\u00a0 Add a comment in that pull request with the following command.<\/p>\n<pre>atlantis apply -d .<\/pre>\n<p>Then click on the <strong>Comment\u00a0<\/strong>button.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/38.webp\" alt=\"Atlantis apply\" width=\"1068\" height=\"340\" class=\"aligncenter wp-image-3287 size-full\" title=\"Atlantis apply\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/38.webp 1068w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/38-300x96.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/38-1024x326.webp 1024w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/38-768x244.webp 768w\" sizes=\"(max-width: 1068px) 100vw, 1068px\" \/><\/p>\n<p>Once you have added the apply comment, Atlantis will execute <em><strong>terraform apply<\/strong><\/em> to create resources.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/39.webp\" alt=\"Atlantis apply\" width=\"1015\" height=\"354\" class=\"aligncenter wp-image-3288 size-full\" title=\"Atlantis apply\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/39.webp 1015w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/39-300x105.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/39-768x268.webp 768w\" sizes=\"(max-width: 1015px) 100vw, 1015px\" \/><\/p>\n<p>If the resource creation in completed successfully, Atlantis will merge the Pull request automatically.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/40.webp\" alt=\"Atlantis apply merged\" width=\"1001\" height=\"682\" class=\"aligncenter wp-image-3289 size-full\" title=\"Atlantis apply merged\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/40.webp 1001w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/40-300x204.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/40-768x523.webp 768w\" sizes=\"(max-width: 1001px) 100vw, 1001px\" \/><\/p>\n<p>To verify that Atlantis created resources successfully open your AWS console and go to the EC2 section. You can able to see the new EC2 instance will be created by the Atlantis server that you mentioned in Terraform.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/41.webp\" alt=\"aws ec2 instance\" width=\"870\" height=\"279\" class=\"aligncenter wp-image-3290 size-full\" title=\"aws ec2 instance\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/41.webp 870w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/41-300x96.webp 300w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/41-768x246.webp 768w\" sizes=\"(max-width: 870px) 100vw, 870px\" \/><\/p>\n<p data-renderer-start-pos=\"11608\">Navigate to the AWS S3 console and open your S3 bucket which you have configured your terraform S3 backend.<\/p>\n<p data-renderer-start-pos=\"11717\">You can find a state file created in the S3 bucket as <strong data-renderer-mark=\"true\">terraform.tfstate.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/42.webp\" alt=\"atlantis s3 backend\" width=\"715\" height=\"553\" class=\"aligncenter wp-image-3291 size-full\" title=\"atlantis s3 backend\" srcset=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/42.webp 715w, https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2023\/12\/42-300x232.webp 300w\" sizes=\"(max-width: 715px) 100vw, 715px\" \/><\/p>\n<h1>Conclusion<\/h1>\n<p>From this demo, you will learn about what is Atlantis and how it works with Terraform to manage the workflow of managing cloud resources with <strong>Version control systems<\/strong>.<\/p>\n<p>One of the major uses of Atlantis is It will lock the state file while a <strong>pull request<\/strong> uses it. this feature will enable the security to prevent multiple users from using the same state file and getting it collapsed.<\/p>\n<p>I hope you enjoyed this tutorial and learned a new and exciting tool. See you soon with another tutorial. Happy learning!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Atlantis is an open-source project that integrates with Terraform an Infrastructure as a Code tool and connects with popular version control systems (VCS) like GitHub, GitLab, and Bitbucket. It provides an automated workflow for managing infrastructure as code (IaC) using Terraform in a collaborative and controlled manner. Atlantis will work like Terraform Cloud, to [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":3491,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2,128],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Install Atlantis on Amazon Linux 2 with Docker and GitHub<\/title>\n<meta name=\"description\" content=\"Learn a streamlined guide on installing Atlantis as a Docker Container in Amazon Linux 2 and seamlessly integrating it with GitHub.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Install Atlantis on Amazon Linux 2 with Docker and GitHub\" \/>\n<meta property=\"og:description\" content=\"Learn a streamlined guide on installing Atlantis as a Docker Container in Amazon Linux 2 and seamlessly integrating it with GitHub.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/\" \/>\n<meta property=\"og:site_name\" content=\"easydeploy.io\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/Jerinrathnam\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-04T07:26:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-24T03:25:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2024\/01\/Screenshot_2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2871\" \/>\n\t<meta property=\"og:image:height\" content=\"1526\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jerin Rathnam\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jerin_rathnam\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jerin Rathnam\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/\"},\"author\":{\"name\":\"Jerin Rathnam\",\"@id\":\"https:\/\/www.easydeploy.io\/blog\/#\/schema\/person\/939543ac3b33fadea8b5115ab9a1280f\"},\"headline\":\"How to install Atlantis as Docker Container in Amazon Linux 3 and Integrate with GitHub?\",\"datePublished\":\"2024-01-04T07:26:40+00:00\",\"dateModified\":\"2024-05-24T03:25:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/\"},\"wordCount\":1676,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.easydeploy.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2024\/01\/Screenshot_2.png\",\"articleSection\":[\"Amazon Web Services\",\"Cloud Computing\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/\",\"url\":\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/\",\"name\":\"Install Atlantis on Amazon Linux 2 with Docker and GitHub\",\"isPartOf\":{\"@id\":\"https:\/\/www.easydeploy.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2024\/01\/Screenshot_2.png\",\"datePublished\":\"2024-01-04T07:26:40+00:00\",\"dateModified\":\"2024-05-24T03:25:08+00:00\",\"description\":\"Learn a streamlined guide on installing Atlantis as a Docker Container in Amazon Linux 2 and seamlessly integrating it with GitHub.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#primaryimage\",\"url\":\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2024\/01\/Screenshot_2.png\",\"contentUrl\":\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2024\/01\/Screenshot_2.png\",\"width\":2871,\"height\":1526},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.easydeploy.io\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to install Atlantis as Docker Container in Amazon Linux 3 and Integrate with GitHub?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.easydeploy.io\/blog\/#website\",\"url\":\"https:\/\/www.easydeploy.io\/blog\/\",\"name\":\"easydeploy.io\",\"description\":\"A Cloud Architect Company\",\"publisher\":{\"@id\":\"https:\/\/www.easydeploy.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.easydeploy.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.easydeploy.io\/blog\/#organization\",\"name\":\"EasyDeploy Technologies Pvt Ltd\",\"url\":\"https:\/\/www.easydeploy.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.easydeploy.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2019\/02\/easydeploy.png\",\"contentUrl\":\"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2019\/02\/easydeploy.png\",\"width\":536,\"height\":100,\"caption\":\"EasyDeploy Technologies Pvt Ltd\"},\"image\":{\"@id\":\"https:\/\/www.easydeploy.io\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.easydeploy.io\/blog\/#\/schema\/person\/939543ac3b33fadea8b5115ab9a1280f\",\"name\":\"Jerin Rathnam\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.easydeploy.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ca2c2ab4a28d380073334816b42aaa40?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ca2c2ab4a28d380073334816b42aaa40?s=96&d=mm&r=g\",\"caption\":\"Jerin Rathnam\"},\"description\":\"Jerin Rathnam is a proficient DevOps engineer who is dedicated to streamlining software development and deployment processes. He has extensive knowledge of cloud infrastructure, containerization, and CI\/CD pipelines, which enables him to effectively connect development and operations. Jerin specializes in creating numerous Terraform modules for multi-cloud infrastructure and possesses immense expertise in configuring and managing cloud infrastructure. His profound understanding of containerization, along with his experience in orchestration tools like Docker and Kubernetes, further supports his skills as a valuable DevOps engineer.\",\"sameAs\":[\"https:\/\/www.gemjerin.site\",\"https:\/\/www.facebook.com\/Jerinrathnam\",\"https:\/\/www.instagram.com\/gem_jerin_rathnam\/\",\"https:\/\/www.linkedin.com\/in\/jerin-rathnam\/\",\"https:\/\/x.com\/jerin_rathnam\",\"@jerinrathnam\"],\"url\":\"https:\/\/www.easydeploy.io\/blog\/author\/jerin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Install Atlantis on Amazon Linux 2 with Docker and GitHub","description":"Learn a streamlined guide on installing Atlantis as a Docker Container in Amazon Linux 2 and seamlessly integrating it with GitHub.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/","og_locale":"en_GB","og_type":"article","og_title":"Install Atlantis on Amazon Linux 2 with Docker and GitHub","og_description":"Learn a streamlined guide on installing Atlantis as a Docker Container in Amazon Linux 2 and seamlessly integrating it with GitHub.","og_url":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/","og_site_name":"easydeploy.io","article_author":"https:\/\/www.facebook.com\/Jerinrathnam","article_published_time":"2024-01-04T07:26:40+00:00","article_modified_time":"2024-05-24T03:25:08+00:00","og_image":[{"width":2871,"height":1526,"url":"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2024\/01\/Screenshot_2.png","type":"image\/png"}],"author":"Jerin Rathnam","twitter_card":"summary_large_image","twitter_creator":"@jerin_rathnam","twitter_misc":{"Written by":"Jerin Rathnam","Estimated reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#article","isPartOf":{"@id":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/"},"author":{"name":"Jerin Rathnam","@id":"https:\/\/www.easydeploy.io\/blog\/#\/schema\/person\/939543ac3b33fadea8b5115ab9a1280f"},"headline":"How to install Atlantis as Docker Container in Amazon Linux 3 and Integrate with GitHub?","datePublished":"2024-01-04T07:26:40+00:00","dateModified":"2024-05-24T03:25:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/"},"wordCount":1676,"commentCount":2,"publisher":{"@id":"https:\/\/www.easydeploy.io\/blog\/#organization"},"image":{"@id":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#primaryimage"},"thumbnailUrl":"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2024\/01\/Screenshot_2.png","articleSection":["Amazon Web Services","Cloud Computing"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/","url":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/","name":"Install Atlantis on Amazon Linux 2 with Docker and GitHub","isPartOf":{"@id":"https:\/\/www.easydeploy.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#primaryimage"},"image":{"@id":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#primaryimage"},"thumbnailUrl":"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2024\/01\/Screenshot_2.png","datePublished":"2024-01-04T07:26:40+00:00","dateModified":"2024-05-24T03:25:08+00:00","description":"Learn a streamlined guide on installing Atlantis as a Docker Container in Amazon Linux 2 and seamlessly integrating it with GitHub.","breadcrumb":{"@id":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#primaryimage","url":"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2024\/01\/Screenshot_2.png","contentUrl":"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2024\/01\/Screenshot_2.png","width":2871,"height":1526},{"@type":"BreadcrumbList","@id":"https:\/\/www.easydeploy.io\/blog\/install-atlantis-docker-container-in-amazon-linux-integrate\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.easydeploy.io\/blog\/"},{"@type":"ListItem","position":2,"name":"How to install Atlantis as Docker Container in Amazon Linux 3 and Integrate with GitHub?"}]},{"@type":"WebSite","@id":"https:\/\/www.easydeploy.io\/blog\/#website","url":"https:\/\/www.easydeploy.io\/blog\/","name":"easydeploy.io","description":"A Cloud Architect Company","publisher":{"@id":"https:\/\/www.easydeploy.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.easydeploy.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/www.easydeploy.io\/blog\/#organization","name":"EasyDeploy Technologies Pvt Ltd","url":"https:\/\/www.easydeploy.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.easydeploy.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2019\/02\/easydeploy.png","contentUrl":"https:\/\/www.easydeploy.io\/blog\/wp-content\/uploads\/2019\/02\/easydeploy.png","width":536,"height":100,"caption":"EasyDeploy Technologies Pvt Ltd"},"image":{"@id":"https:\/\/www.easydeploy.io\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.easydeploy.io\/blog\/#\/schema\/person\/939543ac3b33fadea8b5115ab9a1280f","name":"Jerin Rathnam","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.easydeploy.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ca2c2ab4a28d380073334816b42aaa40?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ca2c2ab4a28d380073334816b42aaa40?s=96&d=mm&r=g","caption":"Jerin Rathnam"},"description":"Jerin Rathnam is a proficient DevOps engineer who is dedicated to streamlining software development and deployment processes. He has extensive knowledge of cloud infrastructure, containerization, and CI\/CD pipelines, which enables him to effectively connect development and operations. Jerin specializes in creating numerous Terraform modules for multi-cloud infrastructure and possesses immense expertise in configuring and managing cloud infrastructure. His profound understanding of containerization, along with his experience in orchestration tools like Docker and Kubernetes, further supports his skills as a valuable DevOps engineer.","sameAs":["https:\/\/www.gemjerin.site","https:\/\/www.facebook.com\/Jerinrathnam","https:\/\/www.instagram.com\/gem_jerin_rathnam\/","https:\/\/www.linkedin.com\/in\/jerin-rathnam\/","https:\/\/x.com\/jerin_rathnam","@jerinrathnam"],"url":"https:\/\/www.easydeploy.io\/blog\/author\/jerin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.easydeploy.io\/blog\/wp-json\/wp\/v2\/posts\/3232"}],"collection":[{"href":"https:\/\/www.easydeploy.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.easydeploy.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.easydeploy.io\/blog\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.easydeploy.io\/blog\/wp-json\/wp\/v2\/comments?post=3232"}],"version-history":[{"count":19,"href":"https:\/\/www.easydeploy.io\/blog\/wp-json\/wp\/v2\/posts\/3232\/revisions"}],"predecessor-version":[{"id":3807,"href":"https:\/\/www.easydeploy.io\/blog\/wp-json\/wp\/v2\/posts\/3232\/revisions\/3807"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.easydeploy.io\/blog\/wp-json\/wp\/v2\/media\/3491"}],"wp:attachment":[{"href":"https:\/\/www.easydeploy.io\/blog\/wp-json\/wp\/v2\/media?parent=3232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.easydeploy.io\/blog\/wp-json\/wp\/v2\/categories?post=3232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.easydeploy.io\/blog\/wp-json\/wp\/v2\/tags?post=3232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}