Search

DevOps Roadmap to Become a Successful DevOps Engineer

“DevOps is a combination of best practices, culture, mindset, and software tools to deliver a high quality and reliable product faster”DevOps agile thinking drives towards an iterated continuous development model with higher velocity, reduced variations and better global visualization of the product flow. These three “V”s are achieved with synchronizing the teams and implementing CI/CD pipelines that automate the SDLC repetitive and complex processes in terms of continuous integration of code, continuous testing, and continuous delivery of features to the production-like environment for a high-quality product with shorter release cycles and reduced cost.This ensures customer satisfaction and credibility.A streamlined process in place with the help of best practices and DevOps tools reduce the overhead, and downtime thus giving more opportunity for innovation. As a matter of fact, DevOps way of defining every phase (coding, testing, infrastructure provisioning, deployment, and monitoring) as code also makes it easier to rollback a versioned code in case of disaster recovery and make the environment easily scalable, portable and secure.“DevOps tools help you accomplish what you can already do but do not have time to do it.”1. What are the tasks of a DevOps Engineer?A Summary of day-to-day tasks carried out by a DevOps engineer -Design, build, test and deploy scalable, distributed systems from development through productionManage the code repository(such as Git, SVN, BitBucket, etc.) including code merging and integrating, branching and maintenance and remote repository managementManage, configure and maintain infrastructure systemDesign the database architecture and database objects and synchronize the various environmentsDesign implement and support DevOps Continuous Integration and Continuous Delivery pipelinesResearch and implement new technologies and practicesDocument processes, systems, and workflowsCreation and enhancement of dynamic monitoring and alerting solutions using industry-leading servicesContinuously analyse tasks that are performed manually and can be replaced by codeCreation and enhancement of Continuous Deployment automation built on Docker and Kubernetes.2. Who can become a DevOps Engineer?DevOps is a vast environment that fits almost all technologies and processes into it. For instance, you could come from a coding or testing background or could be a system administrator, a database administrator, or Operations team there is a role for everyone to play in a DevOps approach.You are ready to become a DevOps Engineer if you have the below knowledge and/expertise-You have a Bachelor’s or Master’s or BSC degree (preferably in Computer Science, IT, Engineering, Mathematics, or similar)Minimum 2 years of IT experience as a Software Developer with a good understanding of SDLC lifecycle with lean agile methodology (SCRUM)Strong background in Linux/Unix & Windows AdministrationSystem development in an Object-oriented or functional programming language such as Python / Ruby / Java / Perl / Shell scripting / Groovy or GoSystem-level understanding of Linux (RedHat, CentOS, Ubuntu, SUSE Linux), Unix (Solaris, Mac OS) and Windows ServersShell scripting and automation of routines, remote execution of scriptsDatabase management experience in Mongo/Oracle or MySQL databaseStrong SQL and PL/SQL scriptingExperience working with source code version control management like Git, GitLab, GitHub or SubversionExperience with cloud architectures, particularly Amazon Web Services(AWS) or Google cloud platform or Microsoft AzureGood understanding of containerization using Dockers and/or KubernetesExperience with CI/CD pipelines using Jenkins and GitLabKnowledge of data-centre management, systems management, and monitoring, networking & securityExperience in Automation/configuration management using Ansible, and/or Puppet and/or ChefKnow how to monitor your code using Configuration Monitoring tools such as Nagios or PrometheusBackground in Infrastructure and NetworkingExtensive knowledge about RESTful APIsA solid understanding of networking and core Internet protocols (e.g. TCP/IP, DNS, SMTP, HTTP, and distributed networks)Excellent written and verbal English communication skillsSelf-learner, team layer, willingness to learn new technologies and ability to resolve issues independently and deliver results.3. Roadmap to becoming a DevOps Engineer3.1 Learn a programming languageA programming language enables a user to interact and manage the system resources such as the kernel, device drivers, memory devices, I/O devices; also to write software.A well-written piece of code will be more versatile, portable, error-proof, scalable and optimized that will enhance your DevOps cycle letting you be more productive with a high-quality product. As a DevOps Engineer, you will have to use many software and plugins for a CI/CD pipeline, and you will be at your best if you have a good grip on some of the popular programming languages:1. Java: An object-oriented, general-purpose programming language. Goal – “Write once, run anywhere”, which is synonymous with the Dockers(or containerization) philosophy     2. C: Is a general-purpose procedural programming language, it supports structured programming3. C#: A general-purpose, multi-paradigm object-oriented programming (OOP) language4. Python: Python is an easy to learn, interpreted, high-level and powerful programming language with an object-oriented approach. Ideal for infrastructure programming and web development. It has a very clear syntax5. Ruby: Is an open-source dynamic OOP programming language with an elegant and easy syntax. This implements multiple multi-paradigm approaches.As you know, DevOps majorly emphasizes on automating the repetitive and error-prone tasks. You ought to know any of the popular scripting languages:6. Perl: Perl is a highly capable scripting programming language, with its syntax very similar to C7. Bash shell script: Powerful set of instructions in a single shell script file to automate repetitive and complex commands8. JavaScript: An interpreted scripting language to build websites9. PowerShell for windows: A cross-platform automation and configuration framework or tool, that deals with structured data, REST APIs and object models. It has a command-line tool.Good-to-know language:10. Go: Go is an open-source programming language developed by Google. It is used to build simple, reliable and efficient software3.2 Understand different OS conceptsAs a Software developer, you must be able to write code that can interact with the machine resources and have a sound understanding of the underlying OS you are dealing with.Knowing the OS concepts will help you be more productive in your programming.This gives you the ability to make your code faster, manage processes, interact with the input-output devices, communicate with the other OS, optimize the processing usage, memory usage and disk usage of your program.As a DevOps engineer with infrastructure role, setting up and managing servers, controllers and switches becomes easier if you understand the resources, processes, and virtualization concepts very well.To be able to administer the users and groups, file permissions and security you must know the filesystem architecture.Essential OS concepts a DevOps engineer must know include:I. Kernel managementKernel is the core element of any OS. It connects the system hardware with the software. It is responsible for memory, storage, and process managementII. Memory ManagementMemory management is the allocation/deallocation of system memory(RAM, cache, page) to various system resources and to optimize the performance of the systemIII. Device drivers managementA device driver is a software program that controls the hardware device of the machineIV. Resource managementThe dynamic allocation/deallocation of system resources such as kernel, CPU, memory, disk and so onV. I/O managementCommunication between various input/output devices connected to the machine such as- keyboard, mouse, disk, USB, monitor, printers, etc VI. Processes and process managementEvery program that executes a certain task is called a process, each process utilizes a certain amount of computational resources. The technique of managing various processes to share the load of memory, disk and CPU(processing) usage also the inter-process communication is termed as process managementVII. Threads and concurrencyMany programming languages support multi-threading and concurrency, i.e, the ability to run multiple tasks simultaneously  VIII. Virtualization and containerizationConcept of simulating a single physical machine to multiple virtual machines/environments to optimize the use of resources and to reduce the time is taken and cost. Understand this well as you will often need to replicate the real-time environment.Linux containers are a great concept to isolate and package an application along with its run-time environment as a single entity.Run-time environment includes all its dependencies, binaries, configuration files and libraries. Dockers is a containerized command-line tool that makes it easier to create, run and deploy applications with containers.Using both Virtual machines and dockers together can yield better results in virtualizationIX. Distributed file systemsA client machine can access data located on a Server machine. This is true in the case of a client/server-based application model.X. Filesystem architectureThe architectural layout of how and in what hierarchy the data is organized on a disk, will make your task of managing data easier.3.3 Learn about managing serversAs cloud deployments become more useful with DevOps approach, there is a need to manage a group of Servers (Application, Database, Web Server, Storage, Infrastructure, Networking Server and so on) rather than individual servers.You should be dynamically scaled up/down the servers, without rewriting the configuration files.Nginx: This is a web server that can also be used as a reverse proxy, load balancer, mail proxy, and HTTP cache.This provides robust and customizable monitoring of your cloud instances and their status. Nginx offers more flexibility and configurability for better configuration and automation using DevOps tools like Puppet and Chef.3.4 Networking and SecurityIn a highly connected network of computers, it becomes essential to understand the basic concepts of networking, how to enforce security and diagnose problems.As a DevOps engineer, you would also be required to set up an environment to test networking functions. In addition, set up continuous integration, delivery and deployment pipelines for network functions.Learn the basic networking concepts like Ip addresses, DNS, routing, firewalls and ports, basic utilities like ping, ssh, netstat, ncr and ip, load balancing and TLS encryption.Understand the basic protocols(standard rules for networking) such as-TCP/IP (Transfer Control Protocol/Internet Protocol), HTTP (Hypertext Transfer Protocol), SSL, SSH (Secure Shell), FTP (File Transfer Protocol), DNS (Domain Name Server).Configuration management tools like Ansible and Jenkins can be used to configure and orchestrate network devices.3.5 What is and how to set-upAs a DevOps methodology we often describe CI/CD pipeline, let us understand what is it?Continuous Integration(CI) is a development practice wherein ­­developers regularly merge or integrate their code changes into a commonly shared repos­itory very frequently.If I speak from a VCS (preferably Git’s) point of view -Every minor code change done on various branches (from different contributors) is pushed and integrated with the main release branch several times a day, rather than waiting for the complete feature to be developed.Every code check-in is then verified by an automated build and automated test cases. This approach helps to detect and fix the bugs early, resolve the conflicts that may arise, improve software quality, reduce the validation and feedback loop time; hence increasing the overall product quality and speedy product releases.Continuous Delivery(CD) is a software practice where every code check-in is automatically built, tested and ready for a release(delivery) to production. Every code check-in should be release/deployment ready.CD phase delivers the code to a production-like-environment such as dev, uat, preprod, etc and runs automated tests.On successful implementation of continuous delivery in the prod-like environment, the code is ready to be deployed to the main production server.It is best to learn the DevOps lifecycle of continuous development, continuous build, continuous testing, continuous integration, continuous deployment and continuous monitoring throughout the complete product lifecycle.Based on the DevOps process setup use the right tools to facilitate the CI/CD pipeline.3.6 Learn Infrastructure as codeInfrastructure as code (IaC) is to define(or declare) and manage the infrastructure resources programmatically by writing code as configuration files instead of managing each resource individually.These infrastructure resources(hardware and software) may be set up on a physical server, a Virtual machine or cloud.An IaC defines the desired state of the machine and generates the same environment every time it is compiled.What does IaC do?Automation: Spinning up or scaling down many resources becomes easier, as just a configuration file needs to be compiled and run. This reduces the overhead and the time spent.Versioning:  IaC is a text file which can be versioned controlled which means 3 things:Infrastructure changes such as scaling up/down the resources and or changing/updating the resources (filesystem or user management) can be tracked through the versioned historyConfiguration files are easily shareable and portable and are checked-in as source codeAn IaC text file can easily be scheduled to be run in a CI/CD pipeline for Server management and orchestration.Manual errors eliminated: productivity increasedEach environment is an exact replica of production.How to do it?Use tools like  Puppet,  Ansible,  Chef,  TerraformThese tools aim at providing a stable environment for both development and operations tasks that results in smooth orchestration.A. Puppet: Puppet is a Configuration Management Tool (CMT) to build, configure and manage infrastructure on physical or virtual machinesB. Ansible: is a Configuration management, Deployment and Orchestration toolC. Chef: is a configuration management tool written in Ruby and Erlang to deploy, manage, update and repair server and application to any environmentD. Terraform: This automation tool builds, change, version and improve infrastructure and servers safely and efficiently.How will IaC be applied in DevOps?IaC configuration files are used to build CI/CD pipelines.IaC definitions enable DevOps teams to test applications/software in production-like stable environments quickly and effortlessly.These environments with IaC are repeatable and prevent runtime issues caused due to misconfiguration or missing dependencies.---3.7 Learn some Continuous Integration and Delivery (CI/CD) toolsIn order to continuously develop, integrate, build, test, apply feedback, deliver our product features to the production environment or deploy to the customer site, we have to build an automated sequence of jobs(processes) to be executed using the appropriate tools.CI/CD pipeline requires custom code and working with multiple software packages simultaneously. As a DevOps Engineer, here are some widely used tools you must know-a.  Jenkins is an open-source automation server. Using Jenkins plugins CI/CD pipelines are built to automatically build, test and deploy the source codeJenkins is a self-contained Java-based program and easy to configure, extensible and distributedb.  GitLab CI is a single tool for the complete DevOps cycle. Every code check-ins trigger builds, run tests, and deploy code in a virtual machine or docker container or any other server. Its has an excellent GUI interface. GitLab CI also has features for monitoring and securityc.  CircleCI software is used to build, test, deploy and automate the development cycle. This is a secure and scalable tool with huge multi-platform support for IOS and MAC OS using MAC virtual machines along with Android and Linux environmentsd.  Microsoft VSTS(Visual Studio Team Services) is not only a CI/CD service but also provide unlimited cloud-hosted private code repositoriese.  CodeShip tool empowers your DevOps CI/CD pipelines with easy, secure, fast and reliable builds with native docker support. It provides a GUI to easily configure the buildsf.  Bamboo by Atlassian is a Continuous integration, deployment and delivery Server. Bamboo has built-in  Jira Software and  BitBucket Software Integration, also built-in git branching and workflows.Jenkins is the most popular and widely used tool with numerous flexible plugins that integrate with almost any CI/CD toolchain. Also the ability of Jenkins to automate any project really distinguish this tool from others, thus it is highly recommended to get a good grip of this tool as a DevOps practitioner.Note: Since this is also a key for enthusiasts to choose the right tool but should be short definitions3.8 Know the tools to monitor software and infrastructureIt is crucial to continuously monitor the software and infrastructure upon setting up the continuous integration and continuous delivery pipeline (CI/CD) to understand how well your DevOps setup is performing. Also, it is vital to monitor system events and get alerts in real-time. A hiccup in the pipeline such as an application dependency failure or a linking error, or say the database has a downtime must be immediately notable and taken care of.This is where a DevOps Engineer must be familiar with monitoring tools such as -1.  Nagios: is an open-source software application that monitors systems, networks, and infrastructure(Servers) and generates logs and alerts2.  Prometheus: is an open-source real-time metrics-based event monitoring and alerting system.3.9 Learn about Cloud ProvidersAs the computational need increases so do the demand of the infrastructure resources.Cloud computing is a higher level of virtualization, wherein the computing resources are outsourced on a “cloud” and available for use on a pay-as-you-go basis over the internet.Some of the leading cloud providers such as AWS, Google Cloud, Microsoft Azure to name a few provide varied cloud services like IaaS, PaaS, and SaaS.Begin part of a DevOps practice, you will often find the need to access various cloud services say for infrastructure resources, production-like environment on the go for testing your product without having to provision it, get multiple replicas of the production environment, create a failover cluster, backup and recover your database over the cloud and various other tasks.Some of the cloud providers and what they offer are listed below-A.  AWS (Amazon Web Services): provide tooling and infrastructure resources readily available for DevOps programs customized as per your requirement. You can easily build and deliver products, automate CI/CD process without having to worry about provisioning and configuring the environmentB.  Microsoft Azure: Create a reliable CI/CD pipeline, practice Infrastructure as Code and continuous monitoring through Microsoft-managed data centresC.  Google Cloud Platform: Uses google-managed data centres to provide DevOps features like end-to-end CI/CD automation, Infrastructure as Code, configuration management, security management, and serverless computing.AWS is the most versatile and recommended provider that you may wish to start learning.4. What next after becoming a DevOps expert?“Sky is the only limit for a DevOps person !!!”Mastering the DevOps tools and practices opens up the door to new roles and challenges for you to learn and grow.4.1 DevOps EvangelistA technical Evangelist is a strong powerful and influential role that exhibits a strong thought process.A DevOps evangelist is a DevOps leader who identifies and implements the DevOps features to solve a business problem or a process, and then shares and promotes the benefits that come from DevOps practice.Also identifies the key roles and train the team in the same and is responsible for the success of entire DevOps processes and people.4.2 Code Release ManagerA Code Release Manager measures the overall progress of the project in terms of metrics, he/she is aware of the entire Agile methodology. A Release Manager is more involved in the coordination among all the phases of DevOps flow to support continuous delivery.4.3 Automation ArchitectThe key responsibility is to plan, analyze, and design a strategy to automate all manual tasks with the right tools and implement the processes for continuous deployment.4.4 Experience AssuranceAn experience Assurance person is responsible for the user experience and makes sure that the product being delivered meet the original business specifications.This role is also termed as Quality Assurance but with extended responsibilities of user experience testing. This role plays a critical role in the DevOps cycle.4.5 Software Developer/TesterUnder DevOps, the role and responsibilities of a Software Developer literally expand l, that the developers are no longer responsible for writing code, but also take ownership of unit testing, deployment and monitoring as well.A Developer/Tester has to make sure that the code meets the original business requirement.Henceforth; the role Developer/Tester or if the innovation extends further a Developer may also be referred to as DevTestOps.4.6 Security EngineerSecurity Engineer focuses on the Integrity of data by incorporating security into the product, and not at the end.He/she supports project teams in using security tools in the CI/CD pipeline, as well as provide resolution of identified security flaws. Conclusion“If you define the problem correctly, you almost have the solution.”  - Steve JobsIn a nutshell, if you aspire to  become a DevOps professional you ought to know -Programming language (C, Java, Perl, Python, Ruby, Bash shell, PowerShell)Operating System concepts (resource management)Source Control (like Git, Bitbucket, Svn, VSTS, etc)Continuous Integration and Continuous Delivery (Jenkins, GitLab CI, CircleCI)Infrastructure as Code (IaC) Automation (tools like Puppet, Chef, Ansible and/or Terraform)Managing Servers (application, storage, database, infrastructure, networking, web server etc)(Application, Database, Web Server, Storage, Infrastructure, Networking Server Networking and securityContainer Concepts (Docker)Continuous monitoring (Nagios and Prometheus)Cloud (like AWS, Azure, Google Cloud).DevOps ways( The three ways of DevOps) open the door of opportunities to improve and excel in the process using the right tools and technologies.“DevOps channels the entire process right from the idea on a whiteboard until the real product in the customer’s hands through automated pipelines(CI/CD).”As a DevOps Engineer you must be a motivated team player, need to have a desire to learn and grow, optimize the process and find better solutions.Since DevOps covers a vast area under its umbrella, it is best to focus on your key skills and learn the technologies and tools as needed.Understand the problem/challenge then find a DevOps solution around the same.

DevOps Roadmap to Become a Successful DevOps Engineer

10K
DevOps Roadmap to Become a Successful DevOps Engineer

“DevOps is a combination of best practices, culture, mindset, and software tools to deliver a high quality and reliable product faster

Benefits of DevOps

DevOps agile thinking drives towards an iterated continuous development model with higher velocity, reduced variations and better global visualization of the product flow. These three “V”s are achieved with synchronizing the teams and implementing CI/CD pipelines that automate the SDLC repetitive and complex processes in terms of continuous integration of code, continuous testing, and continuous delivery of features to the production-like environment for a high-quality product with shorter release cycles and reduced cost.This ensures customer satisfaction and credibility.

A streamlined process in place with the help of best practices and DevOps tools reduce the overhead, and downtime thus giving more opportunity for innovation. As a matter of fact, DevOps way of defining every phase (coding, testing, infrastructure provisioning, deployment, and monitoring) as code also makes it easier to rollback a versioned code in case of disaster recovery and make the environment easily scalable, portable and secure.

“DevOps tools help you accomplish what you can already do but do not have time to do it.”

1. What are the tasks of a DevOps Engineer?

A Summary of day-to-day tasks carried out by a DevOps engineer -

  • Design, build, test and deploy scalable, distributed systems from development through production
  • Manage the code repository(such as Git, SVN, BitBucket, etc.) including code merging and integrating, branching and maintenance and remote repository management
  • Manage, configure and maintain infrastructure system
  • Design the database architecture and database objects and synchronize the various environments
  • Design implement and support DevOps Continuous Integration and Continuous Delivery pipelines
  • Research and implement new technologies and practices
  • Document processes, systems, and workflows
  • Creation and enhancement of dynamic monitoring and alerting solutions using industry-leading services
  • Continuously analyse tasks that are performed manually and can be replaced by code
  • Creation and enhancement of Continuous Deployment automation built on Docker and Kubernetes.

2. Who can become a DevOps Engineer?Who can become a DevOps Engineer

DevOps is a vast environment that fits almost all technologies and processes into it. For instance, you could come from a coding or testing background or could be a system administrator, a database administrator, or Operations team there is a role for everyone to play in a DevOps approach.

You are ready to become a DevOps Engineer if you have the below knowledge and/expertise-

  • You have a Bachelor’s or Master’s or BSC degree (preferably in Computer Science, IT, Engineering, Mathematics, or similar)
  • Minimum 2 years of IT experience as a Software Developer with a good understanding of SDLC lifecycle with lean agile methodology (SCRUM)
  • Strong background in Linux/Unix & Windows Administration
  • System development in an Object-oriented or functional programming language such as Python / Ruby / Java / Perl / Shell scripting / Groovy or Go
  • System-level understanding of Linux (RedHat, CentOS, Ubuntu, SUSE Linux), Unix (Solaris, Mac OS) and Windows Servers
  • Shell scripting and automation of routines, remote execution of scripts
  • Database management experience in Mongo/Oracle or MySQL database
  • Strong SQL and PL/SQL scripting
  • Experience working with source code version control management like Git, GitLab, GitHub or Subversion
  • Experience with cloud architectures, particularly Amazon Web Services(AWS) or Google cloud platform or Microsoft Azure
  • Good understanding of containerization using Dockers and/or Kubernetes
  • Experience with CI/CD pipelines using Jenkins and GitLab
  • Knowledge of data-centre management, systems management, and monitoring, networking & security
  • Experience in Automation/configuration management using Ansible, and/or Puppet and/or Chef
  • Know how to monitor your code using Configuration Monitoring tools such as Nagios or Prometheus
  • Background in Infrastructure and Networking
  • Extensive knowledge about RESTful APIs
  • A solid understanding of networking and core Internet protocols (e.g. TCP/IP, DNS, SMTP, HTTP, and distributed networks)
  • Excellent written and verbal English communication skills
  • Self-learner, team layer, willingness to learn new technologies and ability to resolve issues independently and deliver results.

3. Roadmap to becoming a DevOps Engineer

3.1 Learn a programming language

Learn a programming language in DevOps Engineer

A programming language enables a user to interact and manage the system resources such as the kernel, device drivers, memory devices, I/O devices; also to write software.

A well-written piece of code will be more versatile, portable, error-proof, scalable and optimized that will enhance your DevOps cycle letting you be more productive with a high-quality product. 

As a DevOps Engineer, you will have to use many software and plugins for a CI/CD pipeline, and you will be at your best if you have a good grip on some of the popular programming languages:

1. Java: An object-oriented, general-purpose programming language. Goal – “Write once, run anywhere”, which is synonymous with the Dockers(or containerization) philosophy     

2. C: Is a general-purpose procedural programming language, it supports structured programming

3. C#: A general-purpose, multi-paradigm object-oriented programming (OOP) language

4. Python: Python is an easy to learn, interpreted, high-level and powerful programming language with an object-oriented approach. Ideal for infrastructure programming and web development. It has a very clear syntax

5. RubyIs an open-source dynamic OOP programming language with an elegant and easy syntax. This implements multiple multi-paradigm approaches.

As you know, DevOps majorly emphasizes on automating the repetitive and error-prone tasks. 

You ought to know any of the popular scripting languages:

6. PerlPerl is a highly capable scripting programming language, with its syntax very similar to C

7. Bash shell script: Powerful set of instructions in a single shell script file to automate repetitive and complex commands

8. JavaScript: An interpreted scripting language to build websites

9. PowerShell for windows: A cross-platform automation and configuration framework or tool, that deals with structured data, REST APIs and object models. It has a command-line tool.

Good-to-know language:

10. Go: Go is an open-source programming language developed by Google. It is used to build simple, reliable and efficient software

3.2 Understand different OS concepts

As a Software developer, you must be able to write code that can interact with the machine resources and have a sound understanding of the underlying OS you are dealing with.Knowing the OS concepts will help you be more productive in your programming.

This gives you the ability to make your code faster, manage processes, interact with the input-output devices, communicate with the other OS, optimize the processing usage, memory usage and disk usage of your program.

As a DevOps engineer with infrastructure role, setting up and managing servers, controllers and switches becomes easier if you understand the resources, processes, and virtualization concepts very well.

To be able to administer the users and groups, file permissions and security you must know the filesystem architecture.

Essential OS concepts a DevOps engineer must know include:

I. Kernel management

Kernel is the core element of any OS. It connects the system hardware with the software. It is responsible for memory, storage, and process management

II. Memory Management

Memory management is the allocation/deallocation of system memory(RAM, cache, page) to various system resources and to optimize the performance of the system

III. Device drivers management

A device driver is a software program that controls the hardware device of the machine

IV. Resource management

The dynamic allocation/deallocation of system resources such as kernel, CPU, memory, disk and so on

V. I/O management

Communication between various input/output devices connected to the machine such as- keyboard, mouse, disk, USB, monitor, printers, etc 

VI. Processes and process management

Every program that executes a certain task is called a process, each process utilizes a certain amount of computational resources. The technique of managing various processes to share the load of memory, disk and CPU(processing) usage also the inter-process communication is termed as process management

VII. Threads and concurrency

Many programming languages support multi-threading and concurrency, i.e, the ability to run multiple tasks simultaneously  

VIII. Virtualization and containerization

Concept of simulating a single physical machine to multiple virtual machines/environments to optimize the use of resources and to reduce the time is taken and cost. Understand this well as you will often need to replicate the real-time environment.

Linux containers are a great concept to isolate and package an application along with its run-time environment as a single entity.

Run-time environment includes all its dependencies, binaries, configuration files and libraries. Dockers is a containerized command-line tool that makes it easier to create, run and deploy applications with containers.

Using both Virtual machines and dockers together can yield better results in virtualization

IX. Distributed file systems

A client machine can access data located on a Server machine. This is true in the case of a client/server-based application model.

X. Filesystem architecture

The architectural layout of how and in what hierarchy the data is organized on a disk, will make your task of managing data easier.

3.3 Learn about managing servers

As cloud deployments become more useful with DevOps approach, there is a need to manage a group of Servers (Application, Database, Web Server, Storage, Infrastructure, Networking Server and so on) rather than individual servers.

You should be dynamically scaled up/down the servers, without rewriting the configuration files.

Nginx: This is a web server that can also be used as a reverse proxy, load balancer, mail proxy, and HTTP cache.
This provides robust and customizable monitoring of your cloud instances and their status. Nginx offers more flexibility and configurability for better configuration and automation using DevOps tools like Puppet and Chef.

3.4 Networking and Security

In a highly connected network of computers, it becomes essential to understand the basic concepts of networking, how to enforce security and diagnose problems.

As a DevOps engineer, you would also be required to set up an environment to test networking functions. In addition, set up continuous integration, delivery and deployment pipelines for network functions.

Learn the basic networking concepts like Ip addresses, DNS, routing, firewalls and ports, basic utilities like ping, ssh, netstat, ncr and ip, load balancing and TLS encryption.

Understand the basic protocols(standard rules for networking) such as-
TCP/IP (Transfer Control Protocol/Internet Protocol), HTTP (Hypertext Transfer Protocol), SSL, SSH (Secure Shell), FTP (File Transfer Protocol), DNS (Domain Name Server).

Configuration management tools like Ansible and Jenkins can be used to configure and orchestrate network devices.

3.5 What is and how to set-up

As a DevOps methodology we often describe CI/CD pipeline, let us understand what is it?

Continuous Integration(CI) is a development practice wherein ­­developers regularly merge or integrate their code changes into a commonly shared repos­itory very frequently.

If I speak from a VCS (preferably Git’s) point of view -
Every minor code change done on various branches (from different contributors) is pushed and integrated with the main release branch several times a day, rather than waiting for the complete feature to be developed.

Every code check-in is then verified by an automated build and automated test cases. This approach helps to detect and fix the bugs early, resolve the conflicts that may arise, improve software quality, reduce the validation and feedback loop time; hence increasing the overall product quality and speedy product releases.

Continuous Delivery(CD) is a software practice where every code check-in is automatically built, tested and ready for a release(delivery) to production. Every code check-in should be release/deployment ready.

CD phase delivers the code to a production-like-environment such as dev, uat, preprod, etc and runs automated tests.

On successful implementation of continuous delivery in the prod-like environment, the code is ready to be deployed to the main production server.

It is best to learn the DevOps lifecycle of continuous development, continuous build, continuous testing, continuous integration, continuous deployment and continuous monitoring throughout the complete product lifecycle.

Based on the DevOps process setup use the right tools to facilitate the CI/CD pipeline.

3.6 Learn Infrastructure as code

Infrastructure as code (IaC) is to define(or declare) and manage the infrastructure resources programmatically by writing code as configuration files instead of managing each resource individually.

These infrastructure resources(hardware and software) may be set up on a physical server, a Virtual machine or cloud.

An IaC defines the desired state of the machine and generates the same environment every time it is compiled.

What does IaC do?

  1. Automation: Spinning up or scaling down many resources becomes easier, as just a configuration file needs to be compiled and run. This reduces the overhead and the time spent.
  2. Versioning:  IaC is a text file which can be versioned controlled which means 3 things:
    • Infrastructure changes such as scaling up/down the resources and or changing/updating the resources (filesystem or user management) can be tracked through the versioned history
    • Configuration files are easily shareable and portable and are checked-in as source code
    • An IaC text file can easily be scheduled to be run in a CI/CD pipeline for Server management and orchestration.
  3. Manual errors eliminated: productivity increased

    • Each environment is an exact replica of production.

How to do it?

Use tools like  Puppet,  Ansible,  Chef,  Terraform

These tools aim at providing a stable environment for both development and operations tasks that results in smooth orchestration.

A. Puppet: Puppet is a Configuration Management Tool (CMT) to build, configure and manage infrastructure on physical or virtual machines

B. Ansible: is a Configuration management, Deployment and Orchestration tool

C. Chef: is a configuration management tool written in Ruby and Erlang to deploy, manage, update and repair server and application to any environment

D. Terraform: This automation tool builds, change, version and improve infrastructure and servers safely and efficiently.

How will IaC be applied in DevOps?

IaC configuration files are used to build CI/CD pipelines.

IaC definitions enable DevOps teams to test applications/software in production-like stable environments quickly and effortlessly.

These environments with IaC are repeatable and prevent runtime issues caused due to misconfiguration or missing dependencies.
---

3.7 Learn some Continuous Integration and Delivery (CI/CD) tools

In order to continuously develop, integrate, build, test, apply feedback, deliver our product features to the production environment or deploy to the customer site, we have to build an automated sequence of jobs(processes) to be executed using the appropriate tools.

CI/CD pipeline requires custom code and working with multiple software packages simultaneously. 

As a DevOps Engineer, here are some widely used tools you must know-

a.  Jenkins is an open-source automation server. Using Jenkins plugins CI/CD pipelines are built to automatically build, test and deploy the source code

Jenkins is a self-contained Java-based program and easy to configure, extensible and distributed

b.  GitLab CI is a single tool for the complete DevOps cycle. Every code check-ins trigger builds, run tests, and deploy code in a virtual machine or docker container or any other server. Its has an excellent GUI interface. GitLab CI also has features for monitoring and security

c.  CircleCI software is used to build, test, deploy and automate the development cycle. This is a secure and scalable tool with huge multi-platform support for IOS and MAC OS using MAC virtual machines along with Android and Linux environments

d.  Microsoft VSTS(Visual Studio Team Services) is not only a CI/CD service but also provide unlimited cloud-hosted private code repositories

e.  CodeShip tool empowers your DevOps CI/CD pipelines with easy, secure, fast and reliable builds with native docker support. It provides a GUI to easily configure the builds

f.  Bamboo by Atlassian is a Continuous integration, deployment and delivery Server. Bamboo has built-in  Jira Software and  BitBucket Software Integration, also built-in git branching and workflows.

Jenkins is the most popular and widely used tool with numerous flexible plugins that integrate with almost any CI/CD toolchain. Also the ability of Jenkins to automate any project really distinguish this tool from others, thus it is highly recommended to get a good grip of this tool as a DevOps practitioner.

Note: Since this is also a key for enthusiasts to choose the right tool but should be short definitions

3.8 Know the tools to monitor software and infrastructure

Know the tools to monitor software and infrastructure

It is crucial to continuously monitor the software and infrastructure upon setting up the continuous integration and continuous delivery pipeline (CI/CD) to understand how well your DevOps setup is performing. Also, it is vital to monitor system events and get alerts in real-time. 

A hiccup in the pipeline such as an application dependency failure or a linking error, or say the database has a downtime must be immediately notable and taken care of.

This is where a DevOps Engineer must be familiar with monitoring tools such as -

1.  Nagios: is an open-source software application that monitors systems, networks, and infrastructure(Servers) and generates logs and alerts

2.  Prometheus: is an open-source real-time metrics-based event monitoring and alerting system.

3.9 Learn about Cloud Providers

As the computational need increases so do the demand of the infrastructure resources.Cloud computing is a higher level of virtualization, wherein the computing resources are outsourced on a “cloud” and available for use on a pay-as-you-go basis over the internet.Some of the leading cloud providers such as AWS, Google Cloud, Microsoft Azure to name a few provide varied cloud services like IaaS, PaaS, and SaaS.

Begin part of a DevOps practice, you will often find the need to access various cloud services say for infrastructure resources, production-like environment on the go for testing your product without having to provision it, get multiple replicas of the production environment, create a failover cluster, backup and recover your database over the cloud and various other tasks.

Some of the cloud providers and what they offer are listed below-

A.  AWS (Amazon Web Services): provide tooling and infrastructure resources readily available for DevOps programs customized as per your requirement. You can easily build and deliver products, automate CI/CD process without having to worry about provisioning and configuring the environment

B.  Microsoft Azure: Create a reliable CI/CD pipeline, practice Infrastructure as Code and continuous monitoring through Microsoft-managed data centres

C.  Google Cloud Platform: Uses google-managed data centres to provide DevOps features like end-to-end CI/CD automation, Infrastructure as Code, configuration management, security management, and serverless computing.

AWS is the most versatile and recommended provider that you may wish to start learning.

4. What next after becoming a DevOps expert?

“Sky is the only limit for a DevOps person !!!”

Mastering the DevOps tools and practices opens up the door to new roles and challenges for you to learn and grow.

4.1 DevOps Evangelist

A technical Evangelist is a strong powerful and influential role that exhibits a strong thought process.

A DevOps evangelist is a DevOps leader who identifies and implements the DevOps features to solve a business problem or a process, and then shares and promotes the benefits that come from DevOps practice.

Also identifies the key roles and train the team in the same and is responsible for the success of entire DevOps processes and people.

4.2 Code Release Manager

A Code Release Manager measures the overall progress of the project in terms of metrics, he/she is aware of the entire Agile methodology. A Release Manager is more involved in the coordination among all the phases of DevOps flow to support continuous delivery.

4.3 Automation Architect

The key responsibility is to plan, analyze, and design a strategy to automate all manual tasks with the right tools and implement the processes for continuous deployment.

4.4 Experience Assurance

An experience Assurance person is responsible for the user experience and makes sure that the product being delivered meet the original business specifications.

This role is also termed as Quality Assurance but with extended responsibilities of user experience testing. This role plays a critical role in the DevOps cycle.

4.5 Software Developer/Tester

Under DevOps, the role and responsibilities of a Software Developer literally expand l, that the developers are no longer responsible for writing code, but also take ownership of unit testing, deployment and monitoring as well.

A Developer/Tester has to make sure that the code meets the original business requirement.
Henceforth; the role Developer/Tester or if the innovation extends further a Developer may also be referred to as DevTestOps.

4.6 Security Engineer

Security Engineer focuses on the Integrity of data by incorporating security into the product, and not at the end.

He/she supports project teams in using security tools in the CI/CD pipeline, as well as provide resolution of identified security flaws. 

Conclusion

“If you define the problem correctly, you almost have the solution.”  - Steve Jobs

In a nutshell, if you aspire to  become a DevOps professional you ought to know -

  • Programming language (C, Java, Perl, Python, Ruby, Bash shell, PowerShell)
  • Operating System concepts (resource management)
  • Source Control (like Git, Bitbucket, Svn, VSTS, etc)
  • Continuous Integration and Continuous Delivery (Jenkins, GitLab CI, CircleCI)
  • Infrastructure as Code (IaC) Automation (tools like Puppet, Chef, Ansible and/or Terraform)
  • Managing Servers (application, storage, database, infrastructure, networking, web server etc)
  • (Application, Database, Web Server, Storage, Infrastructure, Networking Server 
  • Networking and security
  • Container Concepts (Docker)
  • Continuous monitoring (Nagios and Prometheus)
  • Cloud (like AWS, Azure, Google Cloud).

DevOps ways( The three ways of DevOps) open the door of opportunities to improve and excel in the process using the right tools and technologies.

“DevOps channels the entire process right from the idea on a whiteboard until the real product in the customer’s hands through automated pipelines(CI/CD).”

As a DevOps Engineer you must be a motivated team player, need to have a desire to learn and grow, optimize the process and find better solutions.

Since DevOps covers a vast area under its umbrella, it is best to focus on your key skills and learn the technologies and tools as needed.

Understand the problem/challenge then find a DevOps solution around the same.

Divya

Divya Bhushan

Content developer/Corporate Trainer

  • Content Developer and Corporate Trainer with a 10-year background in Database administration, Linux/Unix scripting, SQL/PL-SQL coding, Git VCS. New skills acquired-DevOps and Dockers.
  • A skilled and dedicated trainer with comprehensive abilities in the areas of assessment, 
requirement understanding, design, development, and deployment of courseware via blended environments for the workplace. 

  • Excellent communication, demonstration, and interpersonal skills.

Website : https://www.knowledgehut.com/tutorials/git-tutorial

Join the Discussion

Your email address will not be published. Required fields are marked *

Suggested Blogs

How to Install Kubernetes on Windows

Kubernetes is a container-based platform for managing cloud resources and developing scalable apps. It is widely regarded as the most common platform for automating, deploying, and scaling the entire cloud infrastructure. The platform runs on all major operating systems and is the most widely used open-source cloud tool.  Kubernetes can scale your entire infrastructure, monitor each service's health, act as a load balancer, and automate deployments, among other things. You can deploy your pods (docker containers) and services across the cloud by installing and configuring as many nodes (clusters) as you want.Let’s get started. We will guide you through the complete roadmap on how to install Kubernetes for Windows users. This tutorial will show you how to set up Kubernetes and deploy the official web GUI dashboard, which will allow you to manage and monitor everything. PrerequisitesFor installing Kubernetes in your system, here are a few prerequisites that need special attention. The hardware and software requirements are discussed below:Hardware requirementsMaster node with at least 2 GB memory. (Additional will be great)Worker node with 700 MB memory capacity.Your Mouse/Keyboard (monitor navigation)Software requirementsHype-VDocker DesktopUnique MAC addressUnique product UUID for every nodeEnsuring that there is a full range of connectivity between all the machines in the cluster is a must.Installation ProcedureStep 1: Install & Setup Hyper-VAs we all know, Windows has its virtualization software, known as Hyper-V, which is essentially VirtualBox on steroids. Hyper-V allows you to manage your virtual machines (VMs) using either the free Microsoft GUI tool or the command line. It's simple to enable Hyper-V, but first, make sure your PC meets the following requirements:Your operating system should be Windows 10 (Enterprise, Pro, or Education), withAt least 4GB of RAM and CPU Virtualization support, though you should double-check that it's turned on in your BIOS settings.You can disable or enable features like Hyper-V that may not be pre-installed when Windows is installed. Always keep in mind that some of the features require internet access to download additional Windows Update components.To enable Hyper-V on your machine, follow the steps below:1. Open the Control Panel.2. Select Programs from the left panel.3. Next, go to Programs and Features, then Turn Windows Features On or Off.4. Examine Hyper-V and the Hypervisor Platform for Windows.5. Select OK.Your system will now begin installing Hyper-V in the background; it may be necessary to reboot a few times until everything is properly configured. Don't hold your breath for a notification or anything! Verify that Hyper-V is installed successfully on your machine by running the following command as Administrator in PowerShell:Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-VOnce the state is shown as Enabled for above command in Power shell, we are good to go.Step 2: Download Docker for Windows and install it.Kubernetes is a container orchestration system built on top of Docker. It is essentially just a tool for communicating with Docker containers and managing everything at an enterprise level. Simply go to install Docker and click to Get Docker Desktop for Windows (stable).Windows users can use Docker Desktop.Docker Desktop for Windows is a version of Docker optimized for Windows 10. It's a native Windows application that makes developing, shipping, and running dockerized apps simple. Docker Desktop for Windows is the fastest and most reliable way to develop Docker apps on Windows, as it uses Windows-native Hyper-V virtualization and networking. Docker Desktop for Windows can run Docker containers on both Linux and Windows.Installation of Docker DesktopLet us take a look on the different steps involved in installing docker desktop.Double-click Docker for Windows Installer to run the installer.Docker starts automatically once the installation is complete. Docker is running and accessible from a terminal, as indicated by the whale in the notification area.Run Try out some Docker commands in a command-line terminal like PowerShell!  Run the Docker version to check the version.Run Docker run hello-world to verify that Docker can pull and run images.Boom!As long as the Docker Desktop for Windows app is running, Docker is accessible from any terminal. The Docker whale in the taskbar has a setting button that can be accessed from the UI.For a detailed step by step installation guide with screenshot, visit the blog - How to Install Docker on Windows, Mac, & Linux: A Step-By-Step GuideWARNING: FOLLOW THE INSTRUCTIONS BELOW! If Docker was successfully installed but you can't find its tray icon, you'll need to restart your computer. Check the official troubleshooting guide here if the issue persists. Step 3: Install Kubernetes on Windows 10Docker includes a graphical user interface (GUI) tool that allows you to change some settings or install and enable Kubernetes.To install Kubernetes, simply follow the on-screen instructions on the screen:1. Right-click the Docker tray icon and select Properties.2. Select "Settings" from the drop-down menu.3. Select "Kubernetes" from the left panel.4. Check Enable Kubernetes and click "Apply"Docker will install additional packages and dependencies during the installation process. It may take between 5 and 10 minutes to install, depending on your Internet speed and PC performance. Wait until the message 'Installation complete!' appears on the screen. The Docker app can be used after Kubernetes has been installed to ensure that everything is working properly. Both icons at the bottom left will turn green if both services (Docker and Kubernetes) are running successfully and without errors.Example.Step 4: Install Kubernetes DashboardThe official web-based UI for managing Kubernetes resources is Kubernetes Dashboard. It isn't set up by default. Kubernetes applications can be easily deployed using the cli tool kubectl, which allows you to interact with your cloud and manage your Pods, Nodes, and Clusters. You can easily create or update Kubernetes resources by passing the apply argument followed by your YAML configuration file.Use the following commands to deploy and enable the Kubernetes Dashboard.1. Get the yaml configuration file from here.2. Use this to deploy it. kubectl apply -f .\recommended.yaml3. Run the following command to see if it's up and running.:kubectl.exe get -f .\recommended.yaml.txtStep 5: Access the dashboardThe dashboard can be accessed with tokens in two ways: the first is by using the default token created during Kubernetes installation, and the second (more secure) method is by creating users, giving them permissions, and then receiving the generated token. We'll go with the first option for the sake of simplicity.1. Run the following command PowerShell (not cmd)((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]2. Copy the generated token3. Runkubectl proxy.4. Open the following link on your browser: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/5. SelectToken & paste the generated token6. Sign InFinallyYou'll be able to see the dashboard and your cloud resources if everything is set up correctly. You can then do almost all of the "hard" work without having to deal with the CLI every time. You may occasionally get your hands dirty with the command line, but if you don't understand Docker and Kubernetes or don't have the time to manage your own cloud, it's better to stick with some PaaS providers that can be quite expensive.Kubernetes Uninstallation ProcessThe procedures for uninstalling cert-manager on Kubernetes are outlined below. Depending on which method you used to install cert-manager - static manifests or helm - you have two options.Warning: To uninstall cert-maneger, follow the same steps as you did to install it, but in reverse. Whether cert-manager was installed from static manifests or helm, deviating from the following process can result in issues and potentially broken states. To avoid this, make sure you follow the steps outlined below when uninstalling.Step 1: Before continuing, make sure that all user-created cert-manager resources have been deleted. You can check for any existing resources with the following command:$ kubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges --all-namespacesAfter you've deleted all of these resources, you can uninstall cert-manager by following the steps outlined in the installation guide.Step 2: Using regular manifests to uninstall.Uninstalling from a regular manifest installation is as simple as reversing the installation process and using the delete command.kubectl.2. Delete the installation manifests using a link to your currently running version vX.Y. Z like so:$ kubectl delete -f https://github.com/jetstack/cert-manager/releases/download/vX.Y.Z/cert-manager.yamlStep 3: Uninstalling with Helm.1. Uninstalling cert-manager from a Helm installation is as simple as reversing the installation process and using the delete command on both the server and the client. kubectl and helm.$ helm --namespace cert-manager delete cert-manager2. Next, delete the cert-manager namespace:$ kubectl delete namespace cert-manager3. Finally, delete the cert-manger  CustomResourceDefinitions using the link to the version vX.Y.Z you installed:$ kubectl delete -f https://github.com/jetstack/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yamlThe namespace is in the process of being terminated.The namespace may become stuck in a terminating state if it is marked for deletion without first deleting the cert-manager installation. This is usually because the APIService resource is still present, but the webhook is no longer active and thus no longer reachable.4. To fix this, make sure you ran the above commands correctly, and if you're still having problems, run:$ kubectl delete apiservice v1beta1.ConclusionIn this tutorial, we have explained in detail how to install Kubernetes with Hyper-V. Also, we have tackled what requirements we need, both in terms of the software and hardware. We have explained how to install Hyper-V and Docker on Windows 10.   It is important to note that the fundamental difference between Kubernetes and Docker is that Kubernetes is meant to run across a cluster and Docker is meant to run through nodes.   Kubernetes is also more extensive than Docker Swarm and is meant to coordinate a cluster of nodes at scale in production in an efficient manner. Each software is crucial to having a smooth installation process.   We finally looked at how to install and uninstall Kubernetes.
1686
How to Install Kubernetes on Windows

Kubernetes is a container-based platform for manag... Read More

How To Install Jenkins on Ubuntu

Jenkins is a Java-built open-source Continuous Integration (CI) and CD platform. Basically, Jenkins builds software projects, checks and deploys them. This is one of the most practical programming tools you can master, and today we will show you how Jenkins is installed on Ubuntu 18.04. Use this powerful tool to activate your VPS server!Jenkins is loved by teams of all sizes, for different language projects like Java, Ruby, Dot Net, PHP etc. Jenkins is a platform that is autonomous, and can be used on Windows, Linux or any other operating system.  Prerequisites Hardware Requirements: RAM- 4 GB (Recommended) Storage- more than 50 GB of Hard Disk Space (Recommended)        Software Requirements: Java: Java Development Kit (JDK) or Java Runtime Environment (JRE).  Web Browser: Any browser such as Google Chrome, Mozilla Firefox, Microsoft Edge. Operating System: An Ubuntu 18.04 server installed with a non-root sudo user and firewall. For help in the planning of production capability of a Jenkins installation see Choosing the right hardware for Masters. Why Use Jenkins? You need to consider continuous integration (CI) and continuous delivery (CD) to understand Jenkins: Continuous integration – the practice of continuous production combined with the main industry.  Continuous delivery – the code is constantly delivered to an area after the code is ready for delivery. It could be for production or staging. The commodity is supplied to a consumer base that can provide QA or inspection by customers. Developers update the code regularly in the shared repository (such as GitHub or TFS). Improvements made in the source code are made at the end of the day, making it difficult to identify the errors. So, Jenkins is used here. Once a developer changes the repository, Jenkins will automatically enable the build and immediately warn you in the event of an error (Continuous Integration CI). Installation Procedure: Step 1: Install Java Skip to the next section if you have Java already installed on your system. To check, please run the following command in the terminal: java --version Jenkins needs Java for running, but it doesn't include certain distributions by default, and Java versions of Jenkins are incompatible. Multiple Java implementations are available to you. OpenJDK is currently the most popular one, which we will use in this guide. Being an open-source Java application, Jenkins requires the installation of OpenJDK 8 on your system. The apt repositories can directly access OpenJDK 8. The installation of OpenJDK from standard repositories is recommended. Open and enter the following in the terminal window: $ sudo apt update  $ sudo apt install openjdk-8-jdk The download and installation will be requested. Press the "Y" button and press the Enter button to finish the process. Java 8 will be installed on your system. We are ready to download Jenkins package now as we have our requirements ready! Step 2: Install Jenkins The default Ubuntu packages for Jenkins are always behind the current version of the project itself. You may use the project-maintained packages to install Jenkins to take advantage of the newest patches and features. 1. add the framework repository key: $ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add  The device returns OK when the key is inserted. 2. Next, link the repository of Debian packages to the sources.list of the server: $ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' 3. When both are in place, upgrade to apt to use the new repository: $ sudo apt update 4. Install Jenkins: $ sudo apt install jenkins Now we're going to start the Jenkins server, as Jenkins and its dependencies are in place. Step 3: Start Jenkins 1. You can start Jenkins using systemctl: $ sudo systemctl start jenkins 2. As systemctl does not display performance, you can use the status command to check that Jenkins has successfully launched: $ sudo systemctl status jenkinsIf all went well, the start of the performance should demonstrate that the service is active and ready to boot: Output: jenkins.service - LSB: Start Jenkins at boot time     Loaded: loaded (/etc/init.d/jenkins; generated)     Active: active (exited) since Sat 2021-04-17 00:34:17 IST; 26s ago       Docs: man:systemd-sysv-generator(8)    Process: 17609 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCC As Jenkins is running, so adjust the firewall rules to complete our further setup of Jenkins from the web browser. Step 4: Opening the Firewall 1. Jenkins works by default on port 8080, so let's open the port with ufw: $ sudo ufw allow 8080  2. Check ufw’s status: $ sudo ufw status You will see that traffic from anywhere is permitted to port 8080. Output: Status: active  To                         Action      From  --                         ------      ----  8000                       ALLOW       Anywhere                    CUPS                       ALLOW       Anywhere                    27017                      ALLOW       Anywhere                    27017                      ALLOW       192.168.1.10                8080                       ALLOW       Anywhere                    8000 (v6)                  ALLOW       Anywhere (v6)               CUPS (v6)                  ALLOW       Anywhere (v6)               27017 (v6)                 ALLOW       Anywhere (v6)               8080 (v6)                  ALLOW       Anywhere (v6) 3. If the firewall is inactive, the following commands will allow OpenSSH and turn it back on: $ sudo ufw allow OpenSSH  $ sudo ufw enable We can finish the initial configuration with Jenkins installed and our firewall configured. Note: If you decide to continue to use Jenkins, use a Nginx Reverse Proxy at Ubuntu 18.04 to configure Jenkins with SSL when your exploration has been completed to protect your passwords and any sensitive system or product information sent between the machine and the server in plain text. Step 5: Setting Up Jenkins 1. To set up installation, visit Jenkins on its default 8080 port with your server domain name or IP address: http://your_server_ip_or_domain:8080 You should see the Unlock Jenkins screen, which displays the initial password's location:2. You can use the cat command to display the password: $ sudo cat /var/lib/jenkins/secrets/initialAdminPassword 3. Copy the alphanumeric terminal 32-character password and paste into the Administrator Password field, then click Continue. Output: 0aaaf00d9afe48e5b7f2a494d1881326 The following screen shows the ability to install or select certain plugins: 4. We will click on the option to install proposed plugins to start the installation process immediately. 5. When the installation is done, the first administrative user will be prompted. You can save this step and use your initial password to continue as an Admin. However, we will take some time to create the user. The Jenkins default server is NOT encrypted to prevent data from being protected. Use the Nginx Reverse Proxy on Ubuntu 18.04 to configure Jenkins with SSL. This protects the information of users and builds transmitted through the web interface. 6. You will see a configuration instance page, which asks you to confirm your Jenkins instance's URL of choice. Confirm either your server's domain name or the IP address of your server.  7. Click Save and Finish once you have confirmed the relevant information. A confirmation page will show you that "Jenkins is ready!"  Hit Start using Jenkins button and it will take you to the Jenkins dashboard.  Congratulations! You have completed the installation of Jenkins. Step 6: Creation of New Build Jobs in Jenkins: The freestyle job is a highly versatile and user-friendly choice. It's easy to set up and many of its options appear in many other build jobs. For all projects, you can use it. Follow the following steps: You have to login to your Jenkins Dashboard by visiting2) Create New item: Click on the New Item on the left-hand side of the dashboard.3) Fill the project description: You can enter the job details as per your need.4) Source Code Management: Under source code management, enter the repository URL.You can also use a Local repository. 5) Build Environment: Now in the Build section, Click on the “Add build Setup” Select "Execute Windows batch command".Now, add the java commands. In this article, we have used javac HelloWorld.java and java HelloWorld.   6) Save the project: Click Apply and save the project. 7) Build Source Code and check its status: Click on “Build Now” on the left-hand side of the screen to create the source code. 8) Console Output: Select the build number and click on “Console Output” to check the status of the build run. When it shows success, it means that we have successfully run the HelloWorld program from the cGitHub Repository. In case of failure, you can check the job logs by clicking on failure icon and debug the root cause.Uninstall Jenkins Follow the instructions to uninstall Jenkins: $ sudo apt-get remove jenkins Uninstall Jenkins: $ sudo apt-get remove --auto-remove jenkins Purging your data: $ sudo apt-get purge jenkins or you can use: $ sudo apt-get purge --auto-remove jenkins Conclusion: Installing Jenkins on Ubuntu is really that easy. Jenkins has a low learning curve and so you can start to work with it as quickly as possible. In the above article we have learned how to install Jenkins in an Ubuntu machine where all the steps are explained clearly. In case you want to learn more about the core concepts of Jenkins Jobs, Pipelines, Distributed System, Plugins, and how to use Jenkins in depth you can enroll for our course Jenkins Certification Course. 
5376
How To Install Jenkins on Ubuntu

Jenkins is a Java-built open-source Continuous In... Read More

How to install Jenkins on a Mac

Jenkins is a Java-built open-source Continuous Integration (CI) and Continuous Deployment (CD) platform. Basically, Jenkins builds software projects, checks and deploys them. This is one of the most practical programming tools you can master, and today we will show you how to install Jenkins on your macOS, and how to use this powerful tool to activate your VPS server. VPS copies a dedicated server environment in a shared server.Jenkins is loved by teams of all sizes, for different language projects like Java, Ruby, Dot Net, PHP etc. Jenkins is a platform that is autonomous, and can be used on Windows, Mac or any other operating system.In this article, we will learn how to install Jenkins on Mac OS.Why Use Jenkins?To understand Jenkins, you will need to consider continuous integration (CI) and continuous delivery (CD):Continuous integration – the practice of continually merging the working copies of developers with the main repository.Continuous delivery – constantly delivering the code to an area once it is ready for delivery. It could be for production or staging. The commodity is supplied to a consumer base that can provide QA or inspection by customers.Developers update the code regularly in the shared repository (such as GitHub or TFS). Improvements made in the source code are made at the end of the day together, making it difficult to identify the errors. To avoid this, Jenkins is used here.Once a developer changes the repository, Jenkins will automatically enable the build and immediately warn you in the event of an error (Continuous Integration CI).We can also automate the post-construction tests with Jenkins (unit test, success test, acceptance test). Jenkins will conduct these tests and produce a report whenever progress is achieved (Continuous Delivery CD).Why is Jenkins so popular?Easy to use – simple, intuitive, and visually appealing user interfaceExtensibility – Jenkins is highly versatile and easy to adapt to your requirements. With various functionalities, there are thousands of open-source Plugins.Jenkins supports various version control systems, code indicators, notifiers, user interface adaptations, and more!How does Jenkins work?As a WAR archive and as an Installer package, Jenkins is distributed as a Homebrew package, an image in the Docker and as source code for the main operating systems. Most of the source code is in Java and contains several Groovy, Ruby, and Antlr files.You can run the Jenkins WAR on a Java application server such as Tomcat on your own or as a servlet. In any event, the web user interface is created and calls to its REST API are accepted.When you first run Jenkins, you create a long random password for the administrative user, which you may paste in your first webpage to unlock the installation.PrerequisitesWe will be going to run multiple jobs on Jenkins, so we need some proper configurations.Hardware Requirements:Minimum requirement:RAM– 256 MB Storage- 1 GB of Hard Disk Space For small teams(recommended):RAM- 4 GB Storage- more than 50 GB of Hard Disk Space Software Requirements:The following list shows the minimum software requirements:Java: Java Development Kit (JDK) or Java Runtime Environment (JRE). Web Browser: Any browser such as Google Chrome, Mozilla Firefox, Microsoft Edge, SafariOperating System: macOSInstallation ProcedureWe will discuss two ways to install Jenkins on your macOS:Using Homebrew packageUsing DockerInstall Jenkins using HomebrewStep1: Install HomebrewYou can install Homebrew with the following command:$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"You can check the Homebrew installation using:$ brew  -–versionStep 2: Install JavaSkip to the next section if you have Java already installed on your system.Being an open-source Java application, Jenkins requires the installation of OpenJDK 8 on your system. The apt repositories can directly access OpenJDK 8.The installation of OpenJDK from standard repositories is recommended. Open and enter the following in the terminal window:$ brew install javaStep 3: Install JenkinsAfter Homebrew has been installed, it is required to execute the command that downloads and installs the latest version of Jenkins' Long-Term Support (LTS).$ brew install jenkins-ltsStep 4: Start the Server:You can run the following command to start the Jenkins server finally.$ brew services start jenkins-ltsThe above command will start the Jenkins server soon. The port will be 8080. You can check it by visiting Jenkins on its default 8080 port with your server domain name or IP address: http://localhost:8080/Step 5: Unlock Jenkins:The Unlock Jenkins screen displays the initial password's location:Use the cat command to display the password:$ cat In this case,$ cat /Users/ijs/.jenkins/secrets/initialAdminPasswordCopy the 32-character password and paste it into the Administrator Password field, then click Continue.We will discuss the steps to complete the setup process at the end in the section How to configure Jenkins?Install Jenkins using DockerStep 1: Install DockerIt's pretty easy to install Docker on Mac. It has a file with the .dmg graphical installer. Docker Engine, CLI client, Compose, Kitematic and Docker Machine, provided for installation.1. Download Docker from install docker desktop. You will get a .dmg file  2. Click on the .dmg file and it will ask you to move the Docker app to the Application Folder.3. Once the Docker icon has been dragged to the Applications folder, double-click the Docker icon and you will be asked if you want to open the App. Click on yes, to open Docker installer.4. Click on the Next button and after this, it will ask you to install tools and will ask your permissions to proceed:5. Now, you will see the Docker icon on the toolbar, which means that Docker is starting on your system.Step 2: Run the Jenkins Docker imageAfter installation and set-up of Docker, you can run the following command to install Jenkins:$ docker run -p 8080:8080 -p 50000:50000 -v ~/jenkins_home:/var/jenkins_home jenkins/jenkins:ltsThis command will download Jenkins' current version of Long-Term Support (LTS) and spin a new Docker container. This might take time for installation.Step 3: Get the installation password:You will be asked for the administrator password and you will also see the location where you can find it when you visit Jenkins on its default 8080 port with your server domain name or IP address: http://localhost:8080/We can refer to the steps above for the location of the password.How to Configure Jenkins?After the installation of Jenkins, we have to configure Jenkins to make it ready.Step 1: Install PluginsJenkins has many plugins that can integrate with open-source project. The next move requires the installation of suitable plugins as per your requirement.  You can easily add or delete plugins later.  As of now we can simply install the suggested plugins.Jenkins is currently the leading open-source automation server for all types of development work with around 1600 plugins. These 1,600 plug-ins cover five fields: platforms, UI management, management of source code, and build management most commonly.Now, you have to create an admin user account. Make sure you note down the username and password as they would be needed later.Step 3: Jenkins URL ConfigurationThe last step is to configure the URL for the server.Click Save and Finish once you have confirmed the relevant information. A confirmation page will show you that "Jenkins is ready!"Finally, click on Start using Jenkins and you will see a dashboard.How to start and stop Jenkins?When you install Jenkins using HomebrewRun the following command to stop the Jenkins server:$ brew services stop jenkins-ltsRun the following command to restart the server again:$ brew services restart jenkins-ltsWhen you install Jenkins using DockerTo stop Jenkins, go to the terminal window where the Docker container was started and enter command + C. This will stop the Docker container from running and also stop Jenkins.If you need to restart Jenkins, execute the same command that you used while installing Jenkins.How to Uninstall Jenkins on Mac?Jenkins is an automation platform focused on servers and is usually concerned with security. Jenkins also requires add-ons for projects written in languages other than Java. These additional components normally bloat Jenkins. Follow the steps to see how to uninstall Jenkins on Mac when you're having trouble or notice that Jenkins doesn't work on Mac.If you have installed Jenkins using Homebrew then you should run the following commands to uninstall Jenkins:$ brew uninstall jenkins --force $ brew cleanupLearn more about the core concepts of Jenkins Jobs, Pipelines, Distributed System, Plugins with Jenkins Certification Course.ConclusionInstalling Jenkins on mac is very easy. Jenkins has a low learning curve and you can start to work with it as quickly as possible.There are some popular alternatives to Jenkins. One of these tools is Zuul, which does not allow broken code to integrate into your main branch, with various gate configurations like inter-project testing, cross-project dependencies and testing in parallel.In this tutorial, you have learnt to install Jenkins using the packages provided by the project. You have started the server, opened the firewall, and created an administrative user. You can now begin to explore Jenkins!
3440
How to install Jenkins on a Mac

Jenkins is a Java-built open-source Continuous Int... Read More

Useful links