By the name DevOps, it’s very clear that it’s a collaboration of Development as well as Operations. But one should know that DevOps is not a tool, or software or framework, DevOps is a Combination of Tools which helps for the automation of the whole infrastructure. DevOps is basically an implementation of Agile methodology on the Development side as well as Operations side.
To fulfil the need of delivering more and faster and better application to meet more and more demands of users, we need DevOps. DevOps helps deployment to happen really fast compared to any other traditional tools.
The key aspects or principle behind DevOps is: Infrastructure as a Code Continuous Integration Continuous Deployment Automation Continuous Monitoring Security
Git Jenkins Ansible Puppet Nagios Docker ELK (Elasticsearch, Logstash, Kibana)
Version Control System (VCS) is a software that helps software developers to work together and maintain a complete history of their work. Some of the feature of VCS as follows: Allow developers to wok simultaneously Does not allow overwriting on each other changes. Maintain the history of every version. There are two types of Version Control Systems: Central Version Control System, Ex: Git, Bitbucket Distributed/Decentralized Version Control System, Ex: SVN
Git is a source code management (SCM) tool which handles small as well as large projects with efficiency. It is basically used to store our repositories in remote server such as GitHub. GIT SVN Git is a Decentralized Version Control Tool SVN is a Centralized Version Control Tool Git contains the local repo as well as the full history of the whole project on all the developers hard drive, so if there is a server outage , you can easily do recovery from your team mates local git repo. SVN relies only on the central server to store all the versions of the project file Push and pull operations are fast Push and pull operations are slower compared to Git It belongs to 3rd generation Version Control Tool It belongs to 2nd generation Version Control tools Client nodes can share the entire repositories on their local system Version history is stored on server-side repository Commits can be done offline too Commits can be done only online Work are shared automatically by commit Nothing is shared automatically
Git is written in C language, and since its written in C language its very fast and reduces the overhead of runtimes.
SubGit is a tool for migrating SVN to Git. It creates a writable Git mirror of a local or remote Subversion repository and uses both Subversion and Git if you like.
First, we must enter the e-mail and user name for your Jenkins system, then switch into your job directory and execute the “git config” command.
Agentless, it doesn’t require any extra package/daemons to be installed Very low overhead Good performance Idempotent Very Easy to learn Declarative not procedural
Ansible is mainly used in IT infrastructure to manage or deploy applications to remote nodes. Let’s say we want to deploy one application in 100’s of nodes by just executing one command, then Ansible is the one actually coming into the picture but should have some knowledge on Ansible script to understand or execute the same.
Roles Playbooks Roles are reusable subsets of a play. Playbooks contain Plays. A set of tasks for accomplishing certain role. Mapps among hosts and roles. Example: common, webservers. Example: site.yml, fooservers.yml, webservers.yml.
Ansible by default gathers “facts” about the machines, and these facts can be accessed in Playbooks and in templates. To see a list of all the facts that are available about a machine, you can run the “setup” module as an ad-hoc action: Ansible -m setup hostname This will print out a dictionary of all the facts that are available for that particular host.
Docker is a containerization technology that packages your application and all its dependencies together in the form of Containers to ensure that your application works seamlessly in any environment.
Docker image is the source of Docker container. Or in other words, Docker images are used to create containers.
Docker Container is the running instance of Docker Image.
Of Course, we can!! The only difference between agile methodology and DevOps is that, agile methodology is implemented only for development section and DevOps implements agility on both development as well as operations section.
Data redundancy and replication High availability Only one. git directory per repository Superior disk utilization and network performance Collaboration friendly Git can use any sort of projects.
A kernel is the lowest level of easily replaceable software that interfaces with the hardware in your computer.
I ignore alphabet difference V accept this value ex) ls | grep -i docker Dockerfile docker.tar.gz ls | grep -v docker Desktop Dockerfile Documents Downloads You can’t see anything with name docker.tar.gz
This feature is generally used to give the swap space to the server. Lets say in below machine I have to create swap space of 1GB then, dd if=/dev/zero of=/swapfile1 bs=1G count=1
Sudo(superuser do) is a utility for UNIX- and Linux-based systems that provides an efficient way to give specific users permission to use specific system commands at the root (most powerful) level of the system.
Jenkins Pipeline (or simply “Pipeline”) is a suite of plugins which supports implementing and integrating continuous delivery pipelines into Jenkins.
To stop the container: docker stop container ID Now to restart the Docker container: docker restart container ID
Docker runs on only Linux and Cloud platforms: Ubuntu 12.04 LTS+ Fedora 20+ RHEL 6.5+ CentOS 6+ Gentoo ArchLinux openSUSE 12.3+ CRUX 3.0+ Cloud: Amazon EC2 Google Compute Engine Microsoft Azure Rackspace Note that Docker does not run on Windows or Mac for production as there is no support, yes you can use it for testing purpose even in windows
For docker networking we generally use kubernets and docker swarm.
Lets say you want to run multiple docker container, at that time you have to create the docker compose file and type the command docker-compose up. It will run all the containers mentioned in docker compose file.
Scrum is basically used to divide your complex software and product development task into smaller chunks, using iterations and incremental practises. Each iteration is of two weeks. Scrum consists of three roles: Product owner, scrum master and Team
Commit object contain the following components: It contains a set of files, representing the state of a project at a given point of time reference to parent commit objects An SHAI name, a 40-character string that uniquely identifies the commit object (also called as hash).
Git pull command basically pulls any new changes or commits from a branch from your central repository and updates your target branch in your local repository. Git fetch is also used for the same purpose, but its slightly different form Git pull. When you trigger a git fetch, it pulls all new commits from the desired branch and stores it in a new branch in your local repository. If we want to reflect these changes in your target branch, git fetch must be followed with a git merge. Our target branch will only be updated after merging the target branch and fetched branch. Just to make it easy for us, remember the equation below: Git pull = git fetch + git merge