For this Jenkins HA project, I have used the following DevOps Tools

  1. GitHub: Repository to store IaC
  2. Packer: To build Jenkins Controller and agent AMIs
  3. Ansible: To configure Jenkins controller and agent during the AMI building process
  4. Terraform: To provision AWS resources
  5. Python Boto3: To retrieve SSH public key from AWS parameter store.

Following are the AWS services used.

  1. IAM: To create IAM Role/Instance Profile for Jenkins Controller and Agent Nodes.
  2. EFS: To store Jenkins data
  3. AWS Parameter Store: To store SSH private and public keys as secrets to configure agents.
  4. Autoscaling Group: To deploy the Jenkins controller
  5. Application Load Balancer: To have a static DNS endpoint for the Jenkins controller instance running in the autoscaling group.