This project provisions two AWS EC2 instances and installs Jenkins and Docker using Ansible. It is designed as part of a DevSecOps Capstone project.
├── README.md
├── ansible
│ ├── docker.yml
│ ├── inventory.ini
│ └── jenkins.yml
└── terraform
├── instances.tf
├── main.tf
├── outputs.tf
├── security_groups.tf
├── terraform.tfstate
├── terraform.tfstate.backup
├── terraform.tfvars
└── variables.tf
- Terraform – To provision infrastructure (EC2 instances, security groups)
- Ansible – To configure the servers (install Docker and Jenkins)
- AWS EC2 – Virtual machines for deploying Jenkins and Docker
git clone https://github.com/udaychopade27/devsecops-project.git
cd devsecops-projectcd terraformterraform initaws_region = "ap-south-1"
instance_type = "t2.micro"
key_name = "your-key-name"
public_key_path = "~/.ssh/<privte-key.pem>"terraform applycd ansible[jenkins]
<jenkins_public_ip> ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa
[docker]
<docker_public_ip> ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsaansible-playbook -i inventory.ini jenkins.ymlansible-playbook -i inventory.ini docker.yml| File Name | Description |
|---|---|
main.tf |
AWS provider and key pair configuration |
instances.tf |
Defines EC2 instances |
security_groups.tf |
Security group rules (SSH, HTTP, etc.) |
variables.tf |
Input variable definitions |
terraform.tfvars |
Actual values for Terraform variables |
outputs.tf |
Prints public IPs of instances |
| File Name | Description |
|---|---|
inventory.ini |
Hosts file for Jenkins and Docker EC2 instances |
jenkins.yml |
Installs Java and Jenkins on the Jenkins instance |
docker.yml |
Installs Docker and Docker Compose on Docker host |
- Terraform ≥ 1.0
- Ansible ≥ 2.9
- AWS CLI configured with credentials
- Valid AWS EC2 key pair (.pem file)
- SSH access to EC2 instances
📬 Contact
Created by: Uday Chopade
📧 LinkedIn | 🗂️ GitHub