Develop a simple web application and deploy it on AWS, using DevOps best practices for infrastructure provisioning, configuration, and CI/CD.
- Git Repository: Create a repository on GitHub called
simple_app_cloud. This will be the development team's repository! - Documentation: Document the entire process and instructions in the repository's README.
- Development:
- Develop a web application according to the proposed challenge.
- Create a
Dockerfileto containerize the application. - Test the application locally using Docker.
- Infrastructure Provisioning:
- Write Terraform scripts to provision a VM EC2 in the
us-east-1region of AWS. - Configure a key pair and security groups for the VM to allow SSH and HTTP/s connections.
- Write Terraform scripts to provision a VM EC2 in the
- VM Configuration:
- Write Ansible playbooks to:
- Configure the VM.
- Install Docker.
- Clone the
simple_app_cloudrepository. - Share it with the development team users.
- Build and run the Docker container with the application.
- Write Ansible playbooks to:
- CI/CD:
- Configure a CI/CD pipeline using GitHub Actions to automate the provisioning, configuration, and deployment of the application. The trigger will be a merge into the
mainbranch of the devops repository (not thehackweek_devs2blurepository).
- Configure a CI/CD pipeline using GitHub Actions to automate the provisioning, configuration, and deployment of the application. The trigger will be a merge into the
-
Initialization:
- Create a repository on GitHub called
simple_app_cloudfor the pipeline. - Create a README with a project description and initial instructions.
- Create a repository on GitHub called
-
Local Development:
- Choose the language and framework for the application.
- Organize the repository according to best practices (directory structure, where to store keys, etc.).
- Develop the
Dockerfileand test the application locally.
-
Infrastructure Provisioning:
- Write Terraform scripts to provision the VM EC2 in AWS.
- Configure the key pair and security groups.
-
VM Configuration:
- Write Ansible playbooks to configure the VM and deploy the application.
-
CI/CD:
- Configure the CI/CD pipeline in GitHub Actions.
- Test the pipeline by making changes to the application and observing the automatic deployment on AWS.
-
Final Testing:
- Ensure the application is functioning correctly on AWS.
- Document any issues encountered and how they were resolved in the README.
Good luck with the DevOps challenge!