DevOps Task-2
Tushar Dighe
DevOps/Cloud Engineer | Kubernetes | GCP | AWS | Azure | Wiz | Databricks| Cycode | Security
Tasks :
1. Create container image that’s has Jenkins installed using Dockerfile
2. When we launch this image, it should automatically starts Jenkins service in the container.
3. Create a job chain of job1, job2, job3 and job4 using build pipeline plugin in Jenkins
4. Job1 : Pull the Github repo automatically when some developers push repo to Github.
5. Job2 : By looking at the code or program file, Jenkins should automatically start the respective language interpreter install image container to deploy code ( eg. If code is of PHP, then Jenkins should start the container that has PHP already installed ).
6. Job3 : Test your app if it is working or not.
7. Job4 : if app is not working , then send email to developer with error messages.
8. Create One extra job job5 for monitor : If container where app is running. fails due to any reson then this job should automatically start the container again.
Solution:
So we will start by creating a Dockerfile using centos: 7 image pulled from docker hub.
FROM: the image to be used for container
RUN: commands to be executed while building the modified container
We will be installing wget for downloading the files from url, and before moving further we will set up the yum repository for Jenkins from URLs using wget command. Then we will first install java as it is a prerequisite for the smooth functioning of Jenkins. We will make a Jenkins entry in the sudoers file to give it root powers without the requirement for any password. We will also require Git installed to be used in Jenkins as a plugin. Python3 is installed for a mailing code that will be used later in a job.
**The email part can be done directly from Jenkins plugins as well. I have used python here. If anyone needs the Jenkins method, I will make a separate article for it.
COPY: command will be used to copy files from host to image while building it.
CMD: the cmd used here will keep the Jenkins live till the container is on and will start on container boot.
Php webserver creating a Dockerfile using centos: 7 image pulled from docker hub.
and the mail.py file :
Run the Command to install image of your Dockerfile.
docker build -t jenkins:latest /root/ws docker build -t my-php-server:latest /root/ws1
On successful build, you will see a screen like this.
Now See the below image this two images is install in your os.
Now we will run our container.
docker run -it --privileged --name jenk -p 8081:80 -v /:/host jenkins:latest
--privileged has been used for special access to be used later while playing with dockers.
-v: the mount seen here has been done for the same as well.
Now we will be moving on to our jobs.
First job :
Next Job :
This will be triggered as soon as Job1 completes and will deploy a container on the host system.
I have put one condition of normal HTML server & PHP Server conditions can be added accordingly added as per the extensions and container images can be run on those cases.
See the terminal containers is running..
Job 3 is to test our application.
Job3 will be successfully run so the next job send mail to the dev.
Job4 :
Now time for the last one, the monitoring job. This is set to check every minute for the status of the container.
Now Build Pipeline:
All is the done using DevOps Automation so see the production site of the client access this
Html pages Apache Server
Php pages Apache Server
So this is all jobs are working good thanks.
For any queries, issue or suggestion, please feel free to contact me anytime. I will respond as soon as possible.
DevSecOps Consultant | Specialization in DevOps Cloud & Containers
4 å¹´great buddy
Staff Software Engineer @ Botsync | Driving Automation for Future Industries with Graph-Based Solutions
4 å¹´thanks for your posts on devops..... these are amazing