Final Project: Automating Java App Deployment with Terraform, Ansible, Jenkins Pipelines, AKS, and Continuous Sync via Argo CD.
This project focuses on building a complete DevOps pipeline that incorporates containerization, infrastructure provisioning, AWS integration, configuration management, and continuous integration. The final deployment happens on an Azure Kubernetes Service (AKS) cluster using Jenkins pipelines.
Look at each directory README.md File
- Docker: Containerizing the application.
- Terraform: Provisioning AWS infrastructure.
- AWS Services: VPC, EC2, S3, CloudWatch.
- Ansible: Configuring EC2 instances.
- Jenkins: Building CI/CD pipelines.
- SonarQube: Code quality analysis.
- Argo-CD: Manage k8's cluster.
- Azure Kubernetes Service (AKS): Application deployment
- Clone the repository:
git clone https://github.com/Ibrahim-Adell/FinalProjectCode cd FinalProjectCode - Run Terraform to provision AWS infrastructure:
cd terraform terraform init terraform apply - Configure EC2 instances with Ansible:
On your master machine setup your inventory and run this command
On your slave machine setup your inventory and run this command
cd Ansible/master ansible-playbook -i inventory playbook.ymlcd Ansible/slave ansible-playbook -i inventory playbook.yml - Configure Jenkins pipeline:
- Add the
Jenkinsfileto your Jenkins job. - Use shared libraries for pipeline stages.
- Add the
- Verify AKS Deployment:
kubectl get pods kubectl get services
- Terraform State Issues:
- Ensure S3 backend is correctly configured and accessible.
- Ansible Playbook Failures:
- Verify SSH access to EC2 instances.
- Check package manager dependencies.
- Jenkins Pipeline Failures:
- Check the Jenkins logs and shared library configurations.
- AKS Deployment Issues:
- Verify
kubectlCLI is configured correctly. - Check the deployment YAML syntax.
- Verify
This project delivers a complete DevOps pipeline integrating Docker, Terraform, Ansible, Jenkins, and AWS. The final application is deployed on Azure Kubernetes Service (AKS), ensuring scalability and maintainability.
