Violet Streams Resources(VSR) is a Software Consulting Firm that that Builds Web Applications in the Gaming Space
They currently have a legacy web Application witten in Java and hosted by their private server : https://projectjackpirodevops.s3.us-east-2.amazonaws.com/devopsgroup_a-devopsproject-faa298228141/JackPiro/src/main/webapp/index.html
, Updates to this application is done manually which incurrs alot of downtime
Your Task is to migrate this Application into the cloud and implement Devops Practices to their entire Software Development Life Cycle
You should show concepts that implement Plan --Code--Build--Test--Deploy--monitor
TASK A - Documentation: Setup a Wiki Server for your Project (Containerization)
a.
You can get the docker-compose file from below link
https://github.com/bitnami/containers/blob/main/bitnami/dokuwiki/docker-compose.yml
Or
Use the below command on your Terminal to get the Yaml code and create a Docker Compose File
curl -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/dokuwiki/docker-compose.yml
b. mount your own Data Volume on this container
Hint: by modifying the Docker Compose file eg.
c. Change default port of Wiki Server to be running on Port 100
d. Change the default User and password
to
Username: Jackpiro
Password: admin
hint: Use the official image documentation to find details to accomplish all this
https://github.com/bitnami/containers/tree/main/bitnami/dokuwiki#how-to-use-this-image
TASK A Acceptance Criteria:
i. The Wiki Server should be up and running and serving on 100
ii. Mount your own container volume to persist data
iii. Login with Credentials Jackpiro/admin
TASK B: Version Control The JackPiro Project
Plan & Code
App Name: JackPiro
- WorkStation A- Team - 3.129.65.16
- WorkStation B- Team - 18.118.167.59
(You can use Github or Bitbucket )-
1) Set up 2 repos, a Build Repo to store all the code base and a Deployment Repo to store all your deployment scripts and name them accordingly as you see below(in green):
- Build repo : JackPiro_Build --->Developers Access
- Deployment repo: JackPiro_Deployment --->-Your Team Access
2)Version control the JackPiro project located in the Developers WorkStation to enable the Developers migrate their code to the Source Control Management Tool(Bitbucket/Git)
- Set up Developers workstations ssh-keys in bitbucket to access Build Repo and Your Team(Devops) workstation ssh-keys in bitbucket to access the Deployment Repo
3)Git branching Strategy for JackPiro_Build
- master
- release: eg release/release-v1
- feature: eg feature/feature-v1
- develop
4)Git branching Strategy for JackPiro_Deploy
- master
- feature eg feature/feature-v1
- develop
TASK B Acceptance Criteria:
1. You should be able to push and pull code from the Developer Workstation assigned to your Team to the JackPiro_Build repo in Source Control Management(SCM)
2. Your Team (Devops) Should be able to pull and push code from your individual workstations to the JackPiro_Deploy repo
3. Demonstrate the git branching Strategy
TASK C: Set up your Infrastructure
1. Set up your Environment: DEV, UAT, QA, PROD A, PROD B
Provision 6 Apache Tomcat Servers (You can use Any IAC Tool(Terraform, Cloud Formation, Ansible Tower)You can host this use any cloud provider - Aws, Google Cloud, Azure
i. DEV - t2micro -8gb
ii. UAT(User Acceptance Testing)- t2small -10gb
iii. QA(Quality Assurance) - T2Large-20gb
iv. PROD A- T2Xlarge-30gb
v. PROD B- T2xLarge-30gb
Apache Tomcat Servers should be exposed on Port 4444
Linux Distribution for Apache Tomcat Servers: Ubuntu 16.04
Note: When Bootstrapping your servers make sure you install the Datadog Agent
2. Set up your Devops tools servers:
(These can be provisioned Manually or with IAC Tool, Be Free to use any Linux Distributions on theses eg Linux 2, Debian, Ubuntu,etc)
NOTE: USE AZURE CLOUD FOR BELOW
1 Ansible Tower T2xxl- 15gb
1 Kubernetes Server-You can use EKS, k3s,kubeadm or minikube
1 Jenkins(CI/CD) t2 xlarge 20gb
Insall Helm in your kubernetes Sever(k3s,Eks,kubeadm,miniqube) and the following with helm:
Install Sonarqube
Artifactory
Bonus Task:
Add an application or Elastic Loadbalancer to manage traffic between your ProdA and Prod B Servers
Register a Domain using Route 53, eg www.teamdevops.com
Point that domain to the Elastic/Application Loadbalancer
Acceptance Criteria: When you Enter your domain in the browser, it should Point to Either Prod A or Prod B
TASK E: Set Up Automated Build for Developers
The Developers make use of Maven to Compile the code
a. Set up a C/I Pipeline in Jenkins using Jenkinsfile
b. Enable Webhooks in bitbucket to trigger Automated build to the Pipeline Job
c. The CI Pipeline job should run on an Agent(Slave)
d. Help the developers to version their artifacts, so that each build has a unique artifact version
Pipeline job Name: JackPiro_Build
Pipeline should be able to checkout the code from SCM and build using Maven build tool, Provide code analysis ,codecoverage with sonarqube and upload artifacts to artifactory, and also send email to the team and provide versioning of artifacts
Pipeline should have slack channel notification to notify build status
i. Acceptance Criteria:
Automated build after code is pushed to the repository
1. Sonar Analysis on the sonarqube server
2. Artifact uploaded to artifactory
3. Email notification on success or failure
4. Slack Channel Notification
5. Each artifact has a unique version number
6. Code coverage displayed
TASK F: Deploy & Operate (Continous Deployment)
a. Set up a C/D pipeline in Jenkins using Jenkinsfile
create 4 CD pipeline jobs for each env (Dev,Uat, QA,Prod) or 1 pipeline that can select any of the 4 enviroments
Pipeline job Name:eg JackPiro_Dev_Deploy
i. Pipeline should be able to deploy any of your LLE (Dev, Uat, Qa) or HLE (Prod A, PROD B)
You can use DeploytoContainer plugin in jenkins or Deploy using Ansible Tower to pull artifact from artifactory and deploy to either Dev, Uat , Qa or Prod
ii. Pipeline should have slack channel notification to notify deployment status
iii. Pipeline should have email notification
iv. Deployment Gate
1. Acceptance criteria:
i. Deployment is seen and verified in either Dev, Uat, Qa or Prod
ii. Notification is seen in slack channel
iii. Email notification
TASK G: Monitoring
a. Set up continous monitoring with Datadog by installing Datadog Agent on all your servers
Acceptance criteria:
i All your infrastructure Sever metrics should be monitored(Infrastructure Monitoring)
ii All running Processes on all your Servers should be monitored(Process monitoring)
ii Tag all your servers on the Datadog dashboard
TASK H: Deployment and Rollback
a. Automate the manual deployment of a Specific Version of the Deli Application using Ansible Tower
Manual Deployment Process is Below:
step 1: login to tomcat server
step 2 :download the artifact
step 3: switch to root
step 4: extract the artifact to Deployment folder
Deployment folder: /var/lib/tomcat8/webapps
Use service id : ubuntu
Acceptance Criteria:
i. Deploy new artifact from artifactory to either Dev, Uat, Qa or Prod
ii. Rollback to an older artfact from Artifactory either to Dev, Uat, Qa or Prod
iii. All credentials should be encrypted
TASK I: Demonstrate Bash Automation of
i. Tomcat
ii. jenkins
iii. Apache


No comments:
Post a Comment