---
title: "How to Setup Jenkins on AWS Using CloudFormation"
lang: "en"
author: "Mohammad Abu Mattar"
canonical: https://mkabumattar.com/post/how-to-setup-jenkins-on-aws-using-cloudformation
---

![Blog post image for How to Setup Jenkins on AWS Using CloudFormation - We will be using CloudFormation to set up Jenkins on AWS. CloudFormation is a service that helps you model and set up your AWS resources so that you can spend less time managing those resources and more time focusing on your applications that run in AWS.](/_astro/hero.r9yMhIoW_2suwdW.webp)

[Home](/)›[Blog](/blog)›[All Categories](/blog/categories)›[AWS](/blog/categories/aws)

Blog

[Prev in AWSHow To Setup Bastion Host on AWS using CloudFormation Template](/blog/post/how-to-setup-bastion-host-on-aws-using-cloudformation-template)[Next in AWSInfrastructure Automation on AWS: CloudFormation, SAM, and Terraform for IaC](/blog/post/infrastructure-automation-on-aws-cloudformation-sam-and-terraform-for-iac)

[AWS](/blog/categories/aws)[Jenkins](/blog/categories/jenkins)[CloudFormation](/blog/categories/cloudformation)[DevOps](/blog/categories/devops)[CI/CD](/blog/categories/cicd)

# How to Setup Jenkins on AWS Using CloudFormation

[Mohammad Abu Mattar](/authors/mohammad-abu-mattar)Published: 11 Dec 202205 Mins read03 Mins listen

[Markdown for AI(opens in a new tab)](/post/how-to-setup-jenkins-on-aws-using-cloudformation/index.md "Open the plain-Markdown version of this page, for pasting into an AI tool")

TL;DR

We will be using CloudFormation to set up Jenkins on AWS. CloudFormation is a service that helps you model and set up your AWS resources so that you can spend less time managing those resources and more time focusing on your applications that run in AWS.

Series

[Jenkins CI/CD with AWS](/series/jenkins-cicd-with-aws)3/3

[PreviousHow to CI/CD AWS With Github using Jenkins](/blog/post/how-to-ci-cd-aws-with-github-using-jenkins)

All posts in this series (3)

Blog3

1.  [How to Install Jenkins on AWS EC2 Instance](/blog/post/install-jenkins-on-aws-ec2-instance)
2.  [How to CI/CD AWS With Github using Jenkins](/blog/post/how-to-ci-cd-aws-with-github-using-jenkins)
3.  [How to Setup Jenkins on AWS Using CloudFormationYou are here](/blog/post/how-to-setup-jenkins-on-aws-using-cloudformation)

### How to Setup Jenkins on AWS Using CloudFormation

Contents

[Introduction](#introduction)[Prerequisites](#prerequisites)[Create the CloudFormation stack](#create-the-cloudformation-stack)[Step 1: Create a key pair](#step-1-create-a-key-pair)[Step 2: Create a CloudFormation template](#step-2-create-a-cloudformation-template)[Step 3: Create a CloudFormation stack](#step-3-create-a-cloudformation-stack)[Step 4: Check the status of the stack](#step-4-check-the-status-of-the-stack)[Step 5: Access the Jenkins server](#step-5-access-the-jenkins-server)[Connect to the Jenkins server and set up Jenkins](#connect-to-the-jenkins-server-and-set-up-jenkins)[Step 1: Connect to the Jenkins server](#step-1-connect-to-the-jenkins-server)[Step 2: Configure Jenkins](#step-2-configure-jenkins)[Cleanup](#cleanup)[Conclusion](#conclusion)[References](#references)

## [Introduction](#introduction)

In a previous blog post, we set up Jenkins on AWS using the AWS CLI ([How to Install Jenkins on AWS EC2 Instance](/blog/post/install-jenkins-on-aws-ec2-instance)). In this blog post, we will be using CloudFormation to set up Jenkins on AWS. CloudFormation is a service that helps you model and set up your AWS resources so that you can spend less time managing those resources and more time focusing on your applications that run on AWS.

## [Prerequisites](#prerequisites)

-   AWS CLI installed and configured
-   IAM user with the following permissions:
    -   AmazonVPCFullAccess
    -   AmazonEC2FullAccess
    -   AmazonS3FullAccess

## [Create the CloudFormation stack](#create-the-cloudformation-stack)

### [Step 1: Create a key pair](#step-1-create-a-key-pair)

Create a key pair to access the EC2 instance via SSH.

Terminal window

```
1# Create a key pair2aws ec2 create-key-pair \3  --key-name jenkins-server-key-pair \4  --query 'KeyMaterial' \5  --output text > jenkins-server-key-pair.pem6
7# Change the permission of the key pair8chmod 400 jenkins-server-key-pair.pem
```

  

Note

Store the key pair at a safe place. You will need it to access the EC2 instance via SSH.

### [Step 2: Create a CloudFormation template](#step-2-create-a-cloudformation-template)

Create a file named `jenkins-server.yml` and add the following content:

Terminal window

```
1touch jenkins-server.yml
```

  

jenkins-server.yml

```
1AWSTemplateFormatVersion: 2010-09-092Description: >-3  This template creates a VPC with a public subnet and an EC2 instance with4  Jenkins installed. The EC2 instance is accessible via SSH and HTTP.5
6Parameters:7  VPCCidrBlock:8    Description: CIDR block for the VPC9    Type: String10    Default: 15.0.0.0/1611    AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})12    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.13  VPCName:14    Description: Name of the VPC15    Type: String16    Default: jenkins-server-vpc17    AllowedPattern: ^[a-zA-Z0-9-]*$18    ConstraintDescription: must be a valid VPC name.19  PublicSubnetCidrBlock:20    Description: CIDR block for the public subnet21    Type: String22    Default: 15.0.1.0/2423    AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})24    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.25  PublicSubnetAvailabilityZone:26    Description: Availability zone for the public subnet27    Type: String28    Default: us-east-1a29  PublicSubnetName:30    Description: Name of the public subnet31    Type: String32    Default: jenkins-server-public-subnet33    AllowedPattern: ^[a-zA-Z0-9-]*$34    ConstraintDescription: must be a valid subnet name.35  InternetGatewayName:36    Description: Name of the internet gateway37    Type: String38    Default: jenkins-server-internet-gateway39    AllowedPattern: ^[a-zA-Z0-9-]*$40    ConstraintDescription: must be a valid internet gateway name.41  PublicRouteTableName:42    Description: Name of the public route table43    Type: String44    Default: jenkins-server-public-route-table45    AllowedPattern: ^[a-zA-Z0-9-]*$46    ConstraintDescription: must be a valid route table name.47  SecurityGroupName:48    Description: Name of the security group49    Type: String50    Default: jenkins-server-security-group51    AllowedPattern: ^[a-zA-Z0-9-]*$52    ConstraintDescription: must be a valid security group name.53  KeyPairName:54    Description: Name of an existing EC2 KeyPair to enable SSH access to the instances55    Type: AWS::EC2::KeyPair::KeyName56    Default: jenkins-server-key-pair57    ConstraintDescription: must be the name of an existing EC2 KeyPair.58  InstanceImageId:59    Description: Image ID of the instance60    Type: String61    Default: ami-0b0dcb5067f052a6362    AllowedPattern: ami-[a-z0-9]*63    ConstraintDescription: must be a valid AMI ID.64  InstanceType:65    Description: Enter the instance type for the instance66    Type: String67    Default: t2.micro68    AllowedValues:69      - t1.micro70      - t2.nano71      - t2.micro72      - t2.small73      - t2.medium74      - t2.large75      - m1.small76      - m1.medium77      - m1.large78      - m1.xlarge79      - m2.xlarge80      - m2.2xlarge81      - m2.4xlarge82      - m3.medium83      - m3.large84      - m3.xlarge85      - m3.2xlarge86      - m4.large87      - m4.xlarge88      - m4.2xlarge89      - m4.4xlarge90      - m4.10xlarge91      - c1.medium92      - c1.xlarge93      - c3.large94      - c3.xlarge95      - c3.2xlarge96      - c3.4xlarge97      - c3.8xlarge98      - c4.large99      - c4.xlarge100      - c4.2xlarge101      - c4.4xlarge102      - c4.8xlarge103      - g2.2xlarge104      - g2.8xlarge105      - r3.large106      - r3.xlarge107      - r3.2xlarge108      - r3.4xlarge109      - r3.8xlarge110      - i2.xlarge111      - i2.2xlarge112      - i2.4xlarge113      - i2.8xlarge114      - d2.xlarge115      - d2.2xlarge116      - d2.4xlarge117      - d2.8xlarge118      - hi1.4xlarge119      - hs1.8xlarge120      - cr1.8xlarge121      - cc2.8xlarge122      - cg1.4xlarge123    ConstraintDescription: must be a valid EC2 instance type.124  InstanceName:125    Description: Name of the instance126    Type: String127    Default: jenkins-server-instance128    AllowedPattern: ^[a-zA-Z0-9-]*$129    ConstraintDescription: must be a valid instance name.130  ElasticIPAddressName:131    Description: Name of the elastic IP address132    Type: String133    Default: jenkins-server-elastic-ip134    AllowedPattern: ^[a-zA-Z0-9-]*$135    ConstraintDescription: must be a valid elastic IP address name.136
137Resources:138  VPC:139    Type: AWS::EC2::VPC140    Properties:141      CidrBlock: !Ref VPCCidrBlock142      EnableDnsSupport: true143      EnableDnsHostnames: true144      Tags:145        - Key: Name146          Value: !Ref VPCName147  PublicSubnet:148    Type: AWS::EC2::Subnet149    Properties:150      VpcId: !Ref VPC151      CidrBlock: !Ref PublicSubnetCidrBlock152      AvailabilityZone: !Ref PublicSubnetAvailabilityZone153      MapPublicIpOnLaunch: true154      Tags:155        - Key: Name156          Value: !Ref PublicSubnetName157  InternetGateway:158    Type: AWS::EC2::InternetGateway159    Properties:160      Tags:161        - Key: Name162          Value: !Ref InternetGatewayName163  InternetGatewayAttachment:164    Type: AWS::EC2::VPCGatewayAttachment165    Properties:166      VpcId: !Ref VPC167      InternetGatewayId: !Ref InternetGateway168  PublicRouteTable:169    Type: AWS::EC2::RouteTable170    Properties:171      VpcId: !Ref VPC172      Tags:173        - Key: Name174          Value: !Ref PublicRouteTableName175  PublicRoute:176    Type: AWS::EC2::Route177    DependsOn: InternetGatewayAttachment178    Properties:179      RouteTableId: !Ref PublicRouteTable180      DestinationCidrBlock: 0.0.0.0/0181      GatewayId: !Ref InternetGateway182  PublicSubnetRouteTableAssociation:183    Type: AWS::EC2::SubnetRouteTableAssociation184    Properties:185      SubnetId: !Ref PublicSubnet186      RouteTableId: !Ref PublicRouteTable187  SecurityGroup:188    Type: AWS::EC2::SecurityGroup189    Properties:190      GroupDescription: Jenkins191      VpcId: !Ref VPC192      SecurityGroupIngress:193        - IpProtocol: tcp194          FromPort: 22195          ToPort: 22196          CidrIp: 0.0.0.0/0197        - IpProtocol: tcp198          FromPort: 80199          ToPort: 80200          CidrIp: 0.0.0.0/0201        - IpProtocol: tcp202          FromPort: 443203          ToPort: 443204          CidrIp: 0.0.0.0/0205        - IpProtocol: tcp206          FromPort: 8080207          ToPort: 8080208          CidrIp: 0.0.0.0/0209      Tags:210        - Key: Name211          Value: !Ref SecurityGroupName212  Instance:213    Type: AWS::EC2::Instance214    Properties:215      ImageId: !Ref InstanceImageId216      InstanceType: !Ref InstanceType217      KeyName: !Ref KeyPairName218      NetworkInterfaces:219        - DeviceIndex: 0220          SubnetId: !Ref PublicSubnet221          GroupSet:222            - !Ref SecurityGroup223      UserData:224        Fn::Base64: !Sub |225          #!/bin/bash226          sudo yum update -y227          sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo228          sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key229          sudo yum upgrade230          sudo amazon-linux-extras install java-openjdk11 -y231          sudo yum install jenkins -y232          sudo systemctl start jenkins233          sudo systemctl enable jenkins234          sudo yum install git -y235      Tags:236        - Key: Name237          Value: !Ref InstanceName238  ElasticIP:239    Type: AWS::EC2::EIP240    Properties:241      Domain: vpc242      NetworkBorderGroup: !Ref AWS::Region243      Tags:244        - Key: Name245          Value: !Ref ElasticIPAddressName246  ElasticIPAssociation:247    Type: AWS::EC2::EIPAssociation248    Properties:249      InstanceId: !Ref Instance250      EIP: !Ref ElasticIP251
252Mappings:253  AWSRegionArch2AMI:254    us-east-1:255      HVM64: ami-0b69ea66ff7391e80256      HVMG2: ami-0b69ea66ff7391e80257    us-east-2:258      HVM64: ami-0b69ea66ff7391e80259      HVMG2: ami-0b69ea66ff7391e80260
261Outputs:262  GetJenkinsDashboard:263    Description: URL to use for Jenkins dashboard264    Value: !Join265      - ''266      - - 'http://'267        - !GetAtt Instance.PublicDnsName268        - ':8080'269  GitHubWebhookURL:270    Description: URL to use for GitHub webhooks271    Value: !Join272      - ''273      - - 'http://'274        - !GetAtt Instance.PublicDnsName275        - ':8080/github-webhook/'
```

### [Step 3: Create a CloudFormation stack](#step-3-create-a-cloudformation-stack)

Now that you have created a template, you can create a stack using the AWS CLI.

Terminal window

```
1aws cloudformation create-stack \2    --stack-name jenkins-server \3    --template-body file://jenkins-server.yml
```

### [Step 4: Check the status of the stack](#step-4-check-the-status-of-the-stack)

You can check the status of the stack using the AWS CLI.

Terminal window

```
1aws cloudformation describe-stacks \2    --stack-name jenkins-server
```

### [Step 5: Access the Jenkins server](#step-5-access-the-jenkins-server)

You can access the Jenkins server using the public IP address of the instance.

Terminal window

```
1# Get the public IP address of the Jenkins server instance2AWS_PUBLIC_IP=$(aws ec2 describe-instances \3  --filters "Name=tag:Name,Values=jenkins-server-instance" \4  --query "Reservations[*].Instances[*].PublicIpAddress" \5  --output text)6
7# Open the Jenkins dashboard in the browser8echo "http://${AWS_PUBLIC_IP}:8080"
```

## [Connect to the Jenkins server and set up Jenkins](#connect-to-the-jenkins-server-and-set-up-jenkins)

### [Step 1: Connect to the Jenkins server](#step-1-connect-to-the-jenkins-server)

Connect to the Jenkins server using SSH.

Terminal window

```
1# Get the public IP address of the Jenkins server instance2AWS_PUBLIC_IP=$(aws ec2 describe-instances \3  --filters "Name=tag:Name,Values=jenkins-server-instance" \4  --query "Reservations[*].Instances[*].PublicIpAddress" \5  --output text)6
7# Connect to the Jenkins server instance via SSH8ssh -i jenkins-server-key-pair.pem ec2-user@${AWS_PUBLIC_IP}
```

### [Step 2: Configure Jenkins](#step-2-configure-jenkins)

Connect to the EC2 instance using SSH and run the following commands to configure Jenkins.

Terminal window

```
1sudo cat /var/lib/jenkins/secrets/initialAdminPassword
```

![jenkins-initial-password](/assets/blog/0033-how-to-setup-jenkins-on-aws-using-cloudformation/jenkins-initial-password.png)

Copy the initial password and paste it in the Jenkins login page.

![jenkins-login](/assets/blog/0033-how-to-setup-jenkins-on-aws-using-cloudformation/jenkins-login.png)

Select the recommended plugins and click on the Install button.

![jenkins-install-plugins](/assets/blog/0033-how-to-setup-jenkins-on-aws-using-cloudformation/jenkins-install-plugins.png)

Create an admin user and click on the Save and Finish button.

![jenkins-create-admin-user](/assets/blog/0033-how-to-setup-jenkins-on-aws-using-cloudformation/jenkins-create-admin-user.png)

Done! You have set up Jenkins on AWS using CloudFormation.

![jenkins-dashboard](/assets/blog/0033-how-to-setup-jenkins-on-aws-using-cloudformation/jenkins-dashboard.png)

## [Cleanup](#cleanup)

You can delete the stack using the AWS CLI.

Terminal window

```
1# Delete the stack2aws cloudformation delete-stack \3    --stack-name jenkins-server4
5# Check the status of the stack6aws cloudformation describe-stacks \7    --stack-name jenkins-server8
9# Delete the key pair10aws ec2 delete-key-pair \11    --key-name jenkins-server-key-pair
```

## [Conclusion](#conclusion)

In this article, we have learned how to set up Jenkins on AWS using CloudFormation. We have also learned how to create a CloudFormation template and create a stack using the AWS CLI.

## [References](#references)

-   [AWS CloudFormation User Guide](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
-   [AWS CloudFormation Template Reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-reference.html)
-   [Jenkins Official Website](https://www.jenkins.io/)
-   [Jenkins User Documentation](https://www.jenkins.io/doc/)
-   [Installing Jenkins](https://www.jenkins.io/doc/book/installing/)
-   [AWS Command Line Interface (CLI) User Guide](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)
-   [Amazon EC2 User Guide for Linux Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)
-   [Amazon VPC User Guide](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)
-   [AWS Identity and Access Management (IAM) User Guide](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)
-   [AWS Key Pairs and Amazon EC2 Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
-   [Working with AWS CloudFormation Stacks](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html)
-   [User data in CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-userdata)
-   [Elastic IP addresses - Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
-   [How to Install Jenkins on AWS EC2 Instance](/blog/install-jenkins-on-aws-ec2-instance) (Previous related post)
-   [AWS CloudFormation Best Practices](https://aws.amazon.com/blogs/devops/aws-cloudformation-best-practices/)

Was this useful?

## Tags

[#AWS CloudFormation](/blog/tags/aws-cloudformation)[#Jenkins Setup](/blog/tags/jenkins-setup)[#EC2 Instance](/blog/tags/ec2-instance)[#Infrastructure as Code](/blog/tags/infrastructure-as-code)[#CI/CD Pipeline](/blog/tags/cicd-pipeline)[#AWS CLI](/blog/tags/aws-cli)[#VPC Configuration](/blog/tags/vpc-configuration)[#YAML](/blog/tags/yaml)

## Share

[Facebook](https://facebook.com/sharer/sharer.php?u=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fhow-to-setup-jenkins-on-aws-using-cloudformation "Share on Facebook")[Twitter](https://twitter.com/intent/tweet/?text=How%20to%20Setup%20Jenkins%20on%20AWS%20Using%20CloudFormation&url=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fhow-to-setup-jenkins-on-aws-using-cloudformation "Share on Twitter")[LinkedIn](https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fhow-to-setup-jenkins-on-aws-using-cloudformation&title=How%20to%20Setup%20Jenkins%20on%20AWS%20Using%20CloudFormation&summary=We%20will%20be%20using%20CloudFormation%20to%20set%20up%20Jenkins%20on%20AWS.%20CloudFormation%20is%20a%20service%20that%20helps%20you%20model%20and%20set%20up%20your%20AWS%20resources%20so%20that%20you%20can%20spend%20less%20time%20managing%20those%20resources%20and%20more%20time%20focusing%20on%20your%20applications%20that%20run%20in%20AWS.&source=https://mkabumattar.com "Share on LinkedIn")[WhatsApp](https://wa.me/?text=How%20to%20Setup%20Jenkins%20on%20AWS%20Using%20CloudFormation%20https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fhow-to-setup-jenkins-on-aws-using-cloudformation "Share on WhatsApp")[Telegram](https://t.me/share/url?url=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fhow-to-setup-jenkins-on-aws-using-cloudformation&text=How%20to%20Setup%20Jenkins%20on%20AWS%20Using%20CloudFormation "Share on Telegram")[Reddit](https://www.reddit.com/submit?url=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fhow-to-setup-jenkins-on-aws-using-cloudformation&title=How%20to%20Setup%20Jenkins%20on%20AWS%20Using%20CloudFormation "Share on Reddit")[Hacker News](http://news.ycombinator.com/submitlink?u=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fhow-to-setup-jenkins-on-aws-using-cloudformation&t=How%20to%20Setup%20Jenkins%20on%20AWS%20Using%20CloudFormation "Share on Hacker News")[Pinterest](https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fhow-to-setup-jenkins-on-aws-using-cloudformation&media=&description=We%20will%20be%20using%20CloudFormation%20to%20set%20up%20Jenkins%20on%20AWS.%20CloudFormation%20is%20a%20service%20that%20helps%20you%20model%20and%20set%20up%20your%20AWS%20resources%20so%20that%20you%20can%20spend%20less%20time%20managing%20those%20resources%20and%20more%20time%20focusing%20on%20your%20applications%20that%20run%20in%20AWS. "Share on Pinterest")[Email](<mailto:?subject=How%20to%20Setup%20Jenkins%20on%20AWS%20Using%20CloudFormation&body=Check out this article: https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fhow-to-setup-jenkins-on-aws-using-cloudformation>)

## Comments

## You might also enjoy

More posts on similar topics

[![How to CI/CD AWS With Github using Jenkins](/_astro/hero.B1mpyM8T_14dvIE.webp)](/blog/post/how-to-ci-cd-aws-with-github-using-jenkins)

## [How to CI/CD AWS With Github using Jenkins](/blog/post/how-to-ci-cd-aws-with-github-using-jenkins)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [CI/CD](/blog/categories/cicd)
-   [DevOps](/blog/categories/devops)
-   [AWS](/blog/categories/aws)
-   [Jenkins](/blog/categories/jenkins)
-   [GitHub](/blog/categories/github)

Introduction In a previous post, I showed you how to set up Jenkins on an AWS EC2 instance. You can read that post here. In this post, I will sho

[#CI/CD Pipeline](/blog/tags/cicd-pipeline)[#Jenkins](/blog/tags/jenkins)[#GitHub Integration](/blog/tags/github-integration)+6 tags

[read more](/blog/post/how-to-ci-cd-aws-with-github-using-jenkins)

[![How to Install Jenkins on AWS EC2 Instance](/_astro/hero.BzqOEmzv_YuUyx.webp)](/blog/post/install-jenkins-on-aws-ec2-instance)

## [How to Install Jenkins on AWS EC2 Instance](/blog/post/install-jenkins-on-aws-ec2-instance)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [AWS](/blog/categories/aws)
-   [Jenkins](/blog/categories/jenkins)
-   [EC2](/blog/categories/ec2)
-   [DevOps](/blog/categories/devops)
-   [CI/CD](/blog/categories/cicd)

Introduction In this post, I will show you how to create an EC2 instance on AWS and install Jenkins on it. PrerequisitesAWS CLI installed and configured IAM user with the following permi

[#Jenkins Installation](/blog/tags/jenkins-installation)[#AWS EC2 Setup](/blog/tags/aws-ec2-setup)[#Linux Server](/blog/tags/linux-server)+4 tags

[read more](/blog/post/install-jenkins-on-aws-ec2-instance)

[![How To Setup Bastion Host on AWS using CloudFormation Template](/_astro/hero.DX_FnUff_Z21DeWl.webp)](/blog/post/how-to-setup-bastion-host-on-aws-using-cloudformation-template)

## [How To Setup Bastion Host on AWS using CloudFormation Template](/blog/post/how-to-setup-bastion-host-on-aws-using-cloudformation-template)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [AWS](/blog/categories/aws)
-   [CloudFormation](/blog/categories/cloudformation)
-   [Security](/blog/categories/security)
-   [Networking](/blog/categories/networking)
-   [DevOps](/blog/categories/devops)

Introduction In the previous post, How To Setup Bastion Host on AWS using AWS CLI, we set up a Bastion host with the AWS CLI. Here we w

[#AWS Bastion Host](/blog/tags/aws-bastion-host)[#CloudFormation Template](/blog/tags/cloudformation-template)[#VPC Setup](/blog/tags/vpc-setup)+7 tags

[read more](/blog/post/how-to-setup-bastion-host-on-aws-using-cloudformation-template)

[![How to Deploy a Spring Boot Application to AWS CloudFormation](/_astro/hero.C8XnJRc3_Z1OiL51.webp)](/blog/post/how-to-deploy-a-spring-boot-application-to-aws-cloudformation)

## [How to Deploy a Spring Boot Application to AWS CloudFormation](/blog/post/how-to-deploy-a-spring-boot-application-to-aws-cloudformation)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [AWS](/blog/categories/aws)
-   [Spring Boot](/blog/categories/spring-boot)
-   [CloudFormation](/blog/categories/cloudformation)
-   [DevOps](/blog/categories/devops)
-   [Java](/blog/categories/java)

Introduction Deploying a Spring Boot application to the cloud can provide many benefits such as scalability and easy management. AWS CloudFormation is a service that allows for the creation and ma

[#AWS CloudFormation](/blog/tags/aws-cloudformation)[#Spring Boot Deployment](/blog/tags/spring-boot-deployment)[#Java on AWS](/blog/tags/java-on-aws)+5 tags

[read more](/blog/post/how-to-deploy-a-spring-boot-application-to-aws-cloudformation)

[![How To Setup Bastion Host on AWS using AWS CLI](/_astro/hero.DGhoBA0r_KL9IM.webp)](/blog/post/how-to-setup-bastion-host-on-aws-using-aws-cli)

## [How To Setup Bastion Host on AWS using AWS CLI](/blog/post/how-to-setup-bastion-host-on-aws-using-aws-cli)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [AWS](/blog/categories/aws)
-   [AWS CLI](/blog/categories/aws-cli)
-   [Security](/blog/categories/security)
-   [Networking](/blog/categories/networking)
-   [DevOps](/blog/categories/devops)

Introduction Security is the top priority for any infrastructure and application, and that's why a Bastion host is a must-have in your infrastructure if you want to secure your remote connections.

[#AWS Bastion Host](/blog/tags/aws-bastion-host)[#AWS CLI](/blog/tags/aws-cli)[#VPC Setup](/blog/tags/vpc-setup)+7 tags

[read more](/blog/post/how-to-setup-bastion-host-on-aws-using-aws-cli)

[![AWS CloudFormation for Infrastructure as Code (IaC)](/_astro/hero.DW2mCCZ1_Z1qXfDg.webp)](/blog/post/aws-cloudformation-for-infrastructure-as-code-iac)

## [AWS CloudFormation for Infrastructure as Code (IaC)](/blog/post/aws-cloudformation-for-infrastructure-as-code-iac)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [AWS](/blog/categories/aws)
-   [CloudFormation](/blog/categories/cloudformation)
-   [Infrastructure as Code](/blog/categories/infrastructure-as-code)
-   [DevOps](/blog/categories/devops)
-   [Cloud Automation](/blog/categories/cloud-automation)

Introduction AWS CloudFormation is one of the core Infrastructure as Code (IaC) tools on AWS. It lets you declare your infrastructure using JSON or YAML templates, which simplifies creation and ma

[#AWS CloudFormation](/blog/tags/aws-cloudformation)[#IaC](/blog/tags/iac)[#JSON](/blog/tags/json)+7 tags

[read more](/blog/post/aws-cloudformation-for-infrastructure-as-code-iac)

6 related posts
