This project focuses on automating the end-to-end infrastructure provisioning and deployment process on AWS. By integrating Jenkins for orchestration, Terraform for managing infrastructure as code (IaC), and Ansible for configuration management, it establishes a robust CI/CD pipeline.
This pipeline automates the creation and configuration of infrastructure, ensuring efficient and reliable deployment of applications. The aim is to enhance operational efficiency and streamline the deployment process through automation and IaC principles.
- Infrastructure as a Code (IaC) using Terraform
- CI/CD Orchestration using Jenkins
- Configuration Management using Ansible
- Cloud Provider: AWS
- Containerization using Docker
-
AWS account with S3 bucket and dynamodb table.
-
Initialize the remote backend. Terraform/backend.tf
-
Make 2 Ansible Roles:
- One for Jenkins-Master
- One to be as Jenkins-Slave
-
Create 2 ec2 on your AWS account to be (jenkins master & Slave)
- Configure Ansible to run over private IPs through Bastion
[application]
10.0.3.132 ansible_user=ubuntu ansible_ssh_private_key_file=../Terraform/key.pem ansible_ssh_common_args='-o ProxyCommand="ssh -W %h:%p -i ../Terraform/key.pem ubuntu@54.154.222.120"'
- create pipeline to deploy nodejs_example fro branch (rds_redis)
- Fork repository Jenkinsfile.
- Add application load balancer to your terraform code to expose your nodejs app on port 80 on the load balancer Terraform/loadBalancer.tf