DevOps

¡Supera tus tareas y exámenes ahora con Quizwiz!

What are the Testing types supported by Selenium?

Selenium supports two types of testing: Regression Testing: It is the act of retesting a product around an area where a bug was fixed. Functional Testing: It refers to the testing of software features (functional points) individually.

Explain some basic Git commands?

https://cdn.edureka.co/blog/wp-content/uploads/2016/01/Git.png

Q5. What are the advantages of DevOps?

For this answer, you can use your past experience and explain how DevOps helped you in your previous job. If you don't have any such experience, then you can mention the below advantages. Technical benefits: Continuous software delivery Less complex problems to fix Faster resolution of problems Business benefits: Faster delivery of features More stable operating environments More time available to add value (rather than fix/maintain)

What is Selenium IDE?

My suggestion is to start this answer by defining Selenium IDE. It is an integrated development environment for Selenium scripts. It is implemented as a Firefox extension, and allows you to record, edit, and debug tests. Selenium IDE includes the entire Selenium Core, allowing you to easily and quickly record and play back tests in the actual environment that they will run in. Now include some advantages in your answer. With autocomplete support and the ability to move commands around quickly, Selenium IDE is the ideal environment for creating Selenium tests no matter what style of tests you prefer.

What is Docker Swarm?

You should start this answer by explaining Docker Swarn. It is native clustering for Docker which turns a pool of Docker hosts into a single, virtual Docker host. Docker Swarm serves the standard Docker API, any tool that already communicates with a Docker daemon can use Swarm to transparently scale to multiple hosts. I will also suggest you to include some supported tools: Dokku Docker Compose Docker Machine Jenkins

Q2. How is DevOps different from Agile / SDLC?

Add to Bookmark Email this Post 112.5K 21 If you are a DevOps engineer with a strategic understanding of tools, processes and utilization of technology, be assured that 2017 is going to be your year. According to Gartner, organizations around the world are increasingly adopting the DevOps culture and by the end of 2016, 25 percent of top global 2000 organizations would have adopted DevOps as a mainstream strategy. DevOps is a philosophy, a cultural shift that merges operations with development and demands a linked toolchain of technologies to facilitate collaborative change. Since the DevOps philosophy is still at a very nascent stage, application of DevOps as well as the bandwidth required to adapt and collaborate, varies from organization to organization, yet we can talk about a winning formula of skills that can present you as a perfect candidate for any type of organization. On top of fluency in web languages such as Ruby, Python, PHP or Java, the ideal DevOps engineer should have some experience using infrastructure automation tools like Chef, Puppet, Ansible, SaltStack or Windows PowerShell DSC. Since DevOps is a cultural approach and not just a set of automation tools, organizations think about the requisite interpersonal skills that make DevOps practitioners successful. Cross-team communication and collaboration strategies may be harder to bring across the table, than technical competencies, but they're no less important. If you plan to give an interview for a DevOps-centric role, here is a comprehensive list of the most popular DevOps interview questions. I have put myself in your shoes and most of the answers in this blog are written in first person - a person who is a potential DevOps expert. If you have attended DevOps interviews or have any additional questions you would like us to answer, please do mention them in the comments section below. Top DevOps Interview Questions These are the top questions you might face in a DevOps job interview: General DevOps Interview Questions This category will include questions that are not related to any particular DevOps stage. Questions here are meant to test your understanding about DevOps rather than focusing on a particular tool or a stage. Q1. What is the need for DevOps? According to me, this answer should start by explaining the general market trend. Instead of releasing big sets of features, companies are trying to see if small features can be transported to their customers through a series of release trains. This has many advantages like quick feedback from customers, better quality of software etc. which in turn leads to high customer satisfaction. To achieve this, companies are required to: Increase deployment frequency Lower failure rate of new releases Shortened lead time between fixes Faster mean time to recovery in the event of new release crashing DevOps fulfills all these requirements and helps in achieving seamless software delivery. You can give examples of companies like Etsy, Google and Amazon which have adopted DevOps to achieve levels of performance that were unthinkable even five years ago. They are doing tens, hundreds or even thousands of code deployments per day while delivering world class stability, reliability and security. If I have to test your knowledge on DevOps, you should know the difference between Agile and DevOps. The next question is directed towards that. Get DevOps Certified Now >> Q2. How is DevOps different from Agile / SDLC? I would advise you to go with the below explanation: Agile is a set of values and principles about how to produce i.e. develop software. Example: if you have some ideas and you want to turn those ideas into working software, you can use the Agile values and principles as a way to do that. But, that software might only be working on a developer's laptop or in a test environment. You want a way to quickly, easily and repeatably move that software into production infrastructure, in a safe and simple way. To do that you need DevOps tools and techniques. You can summarize by saying Agile software development methodology focuses on the development of software but DevOps on the other hand is responsible for development as well as deployment of the software in the safest and most reliable way possible. Here's a blog that will give you more information on the evolution of DevOps. Now remember, you have included DevOps tools in your previous answer so be prepared to answer some questions related to that.

Is DevOps used for Agile methodology only or can it be really useful for any kind of development life cycle?

DevOps is really an extension of Agile methodologies, but it is also more of a culture or philosophy (See the Three Ways link in the first question). You can adopt DevOps without practicing Agile methodologies since there is clearly more to DevOps than just your software development lifecycle (SDLC), but it may be harder. Agile certainly compliments DevOps with its iterative processes more than other SDLC's, such as the Waterfall model. You can still be successful without following Agile methods, but software development projects typically realize more successes with Agile practices.

How does Change and Release Management integrate with DevOps?

First off, the DevOps culture involves embracing change. One of the core principles of DevOps, the second of the Three Ways according to Gene Kim, is to amplify feedback loops. The Second Way is the continual, iterative feedback loop allowing us to respond quickly to customer needs. This feedback loop is where change management comes into play. Often, change management occurs when things don't work the way you expected, or the customer (who can be internal or external) decides that a change should be made to increase business value. This type of change is OK. In fact you should embrace it. Without DevOps and the encouragement of continuous integration (CI) and continuous delivery (CD), a requested change usually didn't occur until after an official release. But with CI and CD in place teams can achieve faster and more frequent releases. Our customers therefore potentially see those changes in their products earlier. These rapid updates allow them to more quickly evaluate the product and their own requirements, which in turn leads to change requests. Let's face it, nothing brings about a change to requirements quite like actually seeing and using the product.

Explain how Flap Detection works in Nagios?

I will advise you to first explain Flapping first. Flapping occurs when a service or host changes state too frequently, this causes lot of problem and recovery notifications. Once you have defined Flapping, explain how Nagios detects Flapping. Whenever Nagios checks the status of a host or service, it will check to see if it has started or stopped flapping. Nagios follows the below given procedure to do that: Storing the results of the last 21 checks of the host or service analyzing the historical check results and determine where state changes/transitions occur Using the state transitions to determine a percent state change value (a measure of change) for the host or service Comparing the percent state change value against low and high flapping thresholds A host or service is determined to have started flapping when its percent state change first exceeds a high flapping threshold. A host or service is determined to have stopped flapping when its percent state goes below a low flapping threshold.

How to create Docker container?

I will suggest you to give a direct answer to this. We can use Docker image to create Docker container by using the below command: docker run -t -i <image name> <command name> This command will create and start container. You should also add, If you want to check the list of all running container with status on a host use the below command: docker ps -a

Why is Continuous monitoring necessary?

I will suggest you to go with the below mentioned flow: Continuous Monitoring allows timely identification of problems or weaknesses and quick corrective action that helps reduce expenses of an organization. Continuous monitoring provides solution that addresses three operational disciplines known as: continuous audit continuous controls monitoring continuous transaction inspection

How to automate Testing in DevOps lifecycle?

In DevOps, developers are required to commit all the changes made in the source code to a shared repository. Continuous Integration tools like Jenkins will pull the code from this shared repository every time a change is made in the code and deploy it for Continuous Testing that is done by tools like Selenium as shown in the below diagram. https://cdn.edureka.co/blog/wp-content/uploads/2016/01/automate-testing-devops-interview-questions.png

What do you understand by "Infrastructure as code"? How does it fit into the DevOps methodology? What purpose does it achieve?

Infrastructure as Code (IAC) is a type of IT infrastructure that operations teams can use to automatically manage and provision through code, rather than using a manual process. Companies for faster deployments treat infrastructure like software: as code that can be managed with the DevOps tools and processes. These tools let you make infrastructure changes more easily, rapidly, safely and reliably.

What is Version control?

This is probably the easiest question you will face in the interview. My suggestion is to first give a definition of Version control. It is a system that records changes to a file or set of files over time so that you can recall specific versions later. Version control systems consist of a central shared repository where teammates can commit changes to a file or set of file. Then you can mention the uses of version control. Version control allows you to: Revert files back to a previous state. Revert the entire project back to a previous state. Compare changes over time. See who last modified something that might be causing a problem. Who introduced an issue and when.

What are the three main variables that affect recursion and inheritance in Nagios?

According to me the proper format for this answer should be: First name the variables and then a small explanation of each of these variables: Name Use Register Then give a brief explanation for each of these variables. Name is a placeholder that is used by other objects. Use defines the "parent" object whose properties should be used. Register can have a value of 0 (indicating its only a template) and 1 (an actual object). The register value is never inherited.

What do you mean by passive check in Nagios?

According to me, the answer should start by explaining Passive checks. They are initiated and performed by external applications/processes and the Passive check results are submitted to Nagios for processing. Then explain the need for passive checks. They are useful for monitoring services that are Asynchronous in nature and cannot be monitored effectively by polling their status on a regularly scheduled basis. They can also be used for monitoring services that are Located behind a firewall and cannot be checked actively from the monitoring host.

What is the need for DevOps?

According to me, this answer should start by explaining the general market trend. Instead of releasing big sets of features, companies are trying to see if small features can be transported to their customers through a series of release trains. This has many advantages like quick feedback from customers, better quality of software etc. which in turn leads to high customer satisfaction. To achieve this, companies are required to: Increase deployment frequency Lower failure rate of new releases Shortened lead time between fixes Faster mean time to recovery in the event of new release crashing DevOps fulfills all these requirements and helps in achieving seamless software delivery. You can give examples of companies like Etsy, Google and Amazon which have adopted DevOps to achieve levels of performance that were unthinkable even five years ago. They are doing tens, hundreds or even thousands of code deployments per day while delivering world class stability, reliability and security. If I have to test your knowledge on DevOps, you should know the difference between Agile and DevOps. The next question is directed towards that.

What is Git rebase and how can it be used to resolve conflicts in a feature branch before merge?

According to me, you should start by saying git rebase is a command which will merge another branch into the branch where you are currently working, and move all of the local commits that are ahead of the rebased branch to the top of the history on that branch. Now once you have defined Git rebase time for an example to show how it can be used to resolve conflicts in a feature branch before merge, if a feature branch was created from master, and since then the master branch has received new commits, Git rebase can be used to move the feature branch to the tip of master. The command effectively will replay the changes made in the feature branch at the tip of master, allowing conflicts to be resolved in the process. When done with care, this will allow the feature branch to be merged into master with relative ease and sometimes as a simple fast-forward operation.

What is meant by saying Nagios is Object Oriented?

Answer to this question is pretty direct. I will answer this by saying, "One of the features of Nagios is object configuration format in that you can create object definitions that inherit properties from other object definitions and hence the name. This simplifies and clarifies relationships between various components."

Give me an example of how you would handle projects?

As a professional with managerial responsibilities, I would demonstrate a clear understanding of DevOps project management tactics and also work with teams to set objectives, streamline workflow, maintain scope, research and introduce new tools or frameworks, translate requirements into workflow and follow up. I would resort to CI, release management and other tools to keep interdisciplinary projects on track.

What is Automation Testing?

Automation testing or Test Automation is a process of automating the manual process to test the application/system under test. Automation testing involves use of separate testing tools which lets you create test scripts which can be executed repeatedly and doesn't require any manual intervention.

What are Plugins in Nagios?

Begin this answer by defining Plugins. They are scripts (Perl scripts, Shell scripts, etc.) that can run from a command line to check the status of a host or service. Nagios uses the results from Plugins to determine the current status of hosts and services on your network. Once you have defined Plugins, explain why we need Plugins. Nagios will execute a Plugin whenever there is a need to check the status of a host or service. Plugin will perform the check and then simply returns the result to Nagios. Nagios will process the results that it receives from the Plugin and take the necessary actions.

What are the advantages that Containerization provides over virtualization?

Below are the advantages of containerization over virtualization: Containers provide real-time provisioning and scalability but VMs provide slow provisioning Containers are lightweight when compared to VMs VMs have limited performance when compared to containers Containers have better resource utilization compared to VMs

Mention some of the useful plugins in Jenkins.

Below, I have mentioned some important Plugins: Maven 2 project Amazon EC2 HTML publisher Copy artifact Join Green Balls These Plugins, I feel are the most useful plugins. If you want to include any other Plugin that is not mentioned above, you can add them as well. But, make sure you first mention the above stated plugins and then add your own.

When should I use Selenium Grid?

For this answer, my suggestion would be to give a small definition of Selenium Grid. It can be used to execute same or different test scripts on multiple platforms and browsers concurrently to achieve distributed test execution. This allows testing under different environments and saving execution time remarkably.

What's a PTR in DNS?

Pointer records are used to map a network interface (IP) to a host name. These are primarily used for reverse DNS. Reverse DNS is setup very similar to how normal (forward) DNS is setup. When you delegate the DNS forward, the owner of the domain tells the registrar to let your domain use specific name servers.

Which VCS tool you are comfortable with?

You can just mention the VCS tool that you have worked on like this: "I have worked on Git and one major advantage it has over other VCS tools like SVN is that it is a distributed version control system." Distributed VCS tools do not necessarily rely on a central server to store all the versions of a project's files. Instead, every developer "clones" a copy of a repository and has the full history of the project on their own hard drive.

What is Docker hub?

Answer to this question is pretty direct. Docker hub is a cloud-based registry service which allows you to link to code repositories, build your images and test them, stores manually pushed images, and links to Docker cloud so you can deploy images to your hosts. It provides a centralized resource for container image discovery, distribution and change management, user and team collaboration, and workflow automation throughout the development pipeline.

Which scripting languages do you think are most important for a DevOps engineer?

As far as scripting languages go, the simpler the better. In fact, the language itself isn't as important as understanding design patterns and development paradigms such as procedural, object-oriented, or functional programming.

Explain your understanding and expertise on both the software development side and the technical operations side of an organization you've worked for in the past.

DevOps engineers almost always work in a 24/7 business critical online environment. I was adaptable to on-call duties and able to take up real-time, live-system responsibility. I successfully automated processes to support continuous software deployments. I have experience with public/private clouds, tools like Chef or Puppet, scripting and automation with tools like Python and PHP, and a background in Agile.

How is Docker different from other container technologies?

Docker containers are easy to deploy in a cloud. It can get more applications running on the same hardware than other technologies, it makes it easy for developers to quickly create, ready-to-run containerized applications and it makes managing and deploying applications much easier. You can even share containers with your applications. If you have some more points to add you can do that but make sure the above the above explanation is there in your answer.

How exactly are containers (Docker in our case) different from hypervisor virtualization (vSphere)? What are the benefits?

Given below are some differences. Make sure you include these differences in your answer: https://cdn.edureka.co/blog/wp-content/uploads/2016/10/Docker-vsphere-devops-interview-questions-507x300.png

What is State Stalking in Nagios?

I will advise you to first give a small introduction on State Stalking. It is used for logging purposes. When Stalking is enabled for a particular host or service, Nagios will watch that host or service very carefully and log any changes it sees in the output of check results. Depending on the discussion between you and interviewer you can also add, "It can be very helpful in later analysis of the log files. Under normal circumstances, the result of a host or service check is only logged if the host or service has changed state since it was last checked."

How to stop and restart the Docker container?

In order to stop the Docker container you can use the below command: docker stop <container ID> Now to restart the Docker container you can use: docker restart <container ID>

How far do Docker containers scale?

Large web deployments like Google and Twitter, and platform providers such as Heroku and dotCloud all run on container technology, at a scale of hundreds of thousands or even millions of containers running in parallel.

When Does Nagios Check for external commands?

Make sure that you stick to the question during your explanation so I will advise you to follow the below mentioned flow. Nagios check for external commands under the following conditions: At regular intervals specified by the command_check_interval option in the main configuration file or, Immediately after event handlers are executed. This is in addition to the regular cycle of external command checks and is done to provide immediate action if an event handler submits commands to Nagios.

How would you make software deployable?

The ability to script the installation and reconfiguration of software systems is essential towards controlled and automated change. Although there is an increasing trend for new software to enable this, older systems and products suffer from the assumption that changes would be infrequent and minor, and so make automated changes difficult. As a professional who appreciates the need to expose configuration and settings in a manner accessible to automation, I will work with concepts like Inversion of Control (IoC) and Dependency Injection, scripted installation, test harnesses, separation of concerns, command-line tools, and infrastructure as code.

What are the advantages of NoSQL database over RDBMS?

The advantages are: Less need for ETL Support for unstructured text Ability to handle change over time Breadth of functionality Ability to scale horizontally Support for multiple data structures Choice of vendors

What is the one most important thing DevOps helps do?

The most important thing DevOps helps do is to get the changes into production as quickly as possible while minimizing risks in software quality assurance and compliance. That is the primary objective of DevOps. However, there are many other positive side-effects to DevOps. For example, clearer communication and better working relationships between teams which creates a less stressful working environment.

Tell us about the CI tools that you are familiar with?

The premise of CI is to get feedback as early as possible because the earlier you get feedback, the less things cost to fix. Popular open source tools include Hudson, Jenkins, CruiseControl and CruiseControl.NET. Commercial tools include ThoughtWorks' Go, Urbancode's Anthill Pro, Jetbrains' Team City and Microsoft's Team Foundation Server.

Describe two-factor authentication?

Two-factor authentication is a security process in which the user provides two means of identification from separate categories of credentials; one is typically a physical token, such as a card, and the other is typically something memorized, such as a security code.

Do I lose my data when the Docker container exits?

You can answer this by saying, no I won't loose my data when Dcoker container exits. Any data that your application writes to disk gets preserved in its container until you explicitly delete the container. The file system for the container persists even after the container halts.

What is Docker image?

Docker image is the source of Docker container. In other words, Docker images are used to create containers. Images are created with the build command, and they'll produce a container when started with run. Images are stored in a Docker registry such as registry.hub.docker.com because they can become quite large, images are designed to be composed of layers of other images, allowing a minimal amount of data to be sent when transferring images over the network.

Which Testing tool are you comfortable with and what are the benefits of that tool?

Here mention the testing tool that you have worked with and accordingly frame your answer. I have mentioned an example below: I have worked on Selenium to ensure high quality and more frequent releases. Some advantages of Selenium are: It is free and open source It has a large user base and helping communities It has cross Browser compatibility (Firefox, chrome, Internet Explorer, Safari etc.) It has great platform compatibility (Windows, Mac OS, Linux etc.) It supports multiple programming languages (Java, C#, Ruby, Python, Pearl etc.) It has fresh and regular repository developments It supports distributed testing

What are the success factors for Continuous Integration?

Here you have to mention the requirements for Continuous Integration. You could include the following points in your answer: Maintain a code repository Automate the build Make the build self-testing Everyone commits to the baseline every day Every commit (to baseline) should be built Keep the build fast Test in a clone of the production environment Make it easy to get the latest deliverables Everyone can see the results of the latest build Automate deployment

How does Nagios works?

Nagios runs on a server, usually as a daemon or service. Nagios periodically runs plugins residing on the same server, they contact hosts or servers on your network or on the internet. One can view the status information using the web interface. You can also receive email or SMS notifications if something happens. The Nagios daemon behaves like a scheduler that runs certain scripts at certain moments. It stores the results of those scripts and will run other scripts if these results change. Now expect a few questions on Nagios components like Plugins, NRPE etc..

How do you squash last N commits into a single commit?

There are two options to squash last N commits into a single commit. Include both of the below mentioned options in your answer: If you want to write the new commit message from scratch use the following command git reset -soft HEAD~N && git commit If you want to start editing the new commit message with a concatenation of the existing commit messages then you need to extract those messages and pass them to Git commit for that I will use git reset -soft HEAD~N && git commit -edit -m"$(git log -format=%B -reverse .HEAD@{N})"

How to launch Browser using WebDriver?

The following syntax can be used to launch Browser: WebDriver driver = new FirefoxDriver(); WebDriver driver = new ChromeDriver(); WebDriver driver = new InternetExplorerDriver();

What types of testing are needed?

Software teams will often look for the "fair weather" path to system completion; that is, they start from an assumption that software will usually work and only occasionally fail. I believe to practice defensive programming in a pragmatic way, which often means assuming that the code will fail and planning for those failures. I try to incorporate unit test strategy, use of test harnesses, early load testing; network simulation, A/B and multi-variate testing etc.

Q9. What are the anti-patterns of DevOps?

A pattern is common usage usually followed. If a pattern commonly adopted by others does not work for your organization and you continue to blindly follow it, you are essentially adopting an anti-pattern. There are myths about DevOps. Some of them include: DevOps is a process Agile equals DevOps? We need a separate DevOps group Devops will solve all our problems DevOps means Developers Managing Production DevOps is Development-driven release management DevOps is not development driven. DevOps is not IT Operations driven. We can't do DevOps - We're Unique We can't do DevOps - We've got the wrong people

Q6. What is the most important thing DevOps helps us achieve?

According to me, the most important thing that DevOps helps us achieve is to get the changes into production as quickly as possible while minimizing risks in software quality assurance and compliance. This is the primary objective of DevOps. Learn more in this DevOps tutorial blog. However, you can add many other positive effects of DevOps. For example, clearer communication and better working relationships between teams i.e. both the Ops team and Dev team collaborate together to deliver good quality software which in turn leads to higher customer satisfaction.

How is DevOps different from Agile / SDLC?

Agile is a set of values and principles about how to produce i.e. develop software. Example: if you have some ideas and you want to turn those ideas into working software, you can use the Agile values and principles as a way to do that. But, that software might only be working on a developer's laptop or in a test environment. You want a way to quickly, easily and repeatably move that software into production infrastructure, in a safe and simple way. To do that you need DevOps tools and techniques. You can summarize by saying Agile software development methodology focuses on the development of software but DevOps on the other hand is responsible for development as well as deployment of the software in the safest and most reliable way possible. Here's a blog that will give you more information on the evolution of DevOps.

What is Continuous Testing?

Continuous Testing is the process of executing automated tests as part of the software delivery pipeline to obtain immediate feedback on the business risks associated with in the latest build. In this way, each build is tested continuously, allowing Development teams to get fast feedback so that they can prevent those problems from progressing to the next stage of Software delivery life-cycle. This dramatically speeds up a developer's workflow as there's no need to manually rebuild the project and re-run all tests after making changes.

What testing is necessary to ensure that a new service is ready for production?

DevOps is all about continuous testing throughout the process, starting with development through to production. Everyone shares the testing responsibility. This ensures that developers are delivering code that doesn't have any errors and is of high quality, and it also helps everyone leverage their time most effectively.

Discuss your experience building bridges between IT Ops, QA and development.

DevOps is all about effective communication and collaboration. I've been able to deal with production issues from the development and operations sides, effectively straddling the two worlds. I'm less interested in finding blame or playing the hero than I am with ensuring that all of the moving parts come together.

WHAT IS DEVOPS & WHY SHOULD YOU CARE?

DevOps is the centerpiece between Software Engineering, Quality Assurance, and Technology Operations, leading to crossover IT roles and a unified approach to development, infrastructure procurement, and product deployment. Essentially, it is the process of applying agile and lean approaches to improve communication, collaboration, and integration within an IT department to enhance the entire service lifecycle. The primary value is creating communication between the Operations Team and the Development Team, which enables faster development and more supportive, predictable application releases. The focus shifts from "working the software" to the overall service provided. A typical Operations team is under constant demand. They take care of everything data center driven, including planning for all IT infrastructure deployments, managing a budget, lifecycles of equipment, resources to manage that equipment, support for legacy and current applications, monitoring and maintaining system performance, support for internal and external clients, and maintaining uptime. They receive and troubleshoot end user issues and maintain security procedures as well. The Operations Team mindset is very different from the Software Development Team. Software developers work in a fast paced and dynamic environment that has very specific responsibilities; they manage full lifecycle application development from designing, coding, and debugging applications to implementing performance tuning and integrating software with other systems. They are very technically focused on code, but not on IT infrastructure. The Software Development Team wants to make sure the system is accessible to their clients and are less concerned with the security of that system. The normal response in an environment where there are no DevOps methodologies, meaning very little communication or interaction, is typically the counter-offensive project delay. Long procurement times lead to the long project cue time, and future projects enter the queue based on importance or critical nature, which pushes lower priority issues to the bottom of the list causing them to see longer solution times. Bringing the Software Development Team together with the Operations Team helps to create more sound and secure developments, while eliminating some FUD (fear, uncertainty, doubt) factors. The Operations Team has better insight and experience working with the infrastructure, while the Software Team knows how their code works. Together they can create a secure platform for the software to reach the customer in a streamlined process, which increases time to value (TtV).

Tell us how you have used Docker in your past position?

Explain how you have used Docker to help rapid deployment. Explain how you have scripted Docker and used Docker with other tools like Puppet, Chef or Jenkins. If you have no past practical experience in Docker and have past experience with other tools in similar space, be honest and explain the same. In this case, it makes sense if you can compare other tools to Docker in terms of functionality.

What is Docker container?

Docker containers include the application and all of its dependencies but share the kernel with other containers, running as isolated processes in user space on the host operating system. Docker containers are not tied to any specific infrastructure: they run on any computer, on any infrastructure, and in any cloud. Now explain how to create a Docker container, Docker containers can be created by either creating a Docker image and then running it or you can use Docker images that are present on the Dockerhub. Docker containers are basically runtime instances of Docker images.

Explain Main Configuration file of Nagios and its location?

First mention what this main configuration file contains and its function. The main configuration file contains a number of directives that affect how the Nagios daemon operates. This config file is read by both the Nagios daemon and the CGIs (It specifies the location of your main configuration file). Now you can tell where it is present and how it is created. A sample main configuration file is created in the base directory of the Nagios distribution when you run the configure script. The default name of the main configuration file is nagios.cfg. It is usually placed in the etc/ subdirectory of you Nagios installation (i.e. /usr/local/nagios/etc/).

How do you find a list of files that has changed in a particular commit?

For this answer instead of just telling the command, explain what exactly this command will do so you can say that, To get a list files that has changed in a particular commit use command git diff-tree -r {hash} Given the commit hash, this will list all the files that were changed or added in that commit. The -r flag makes the command list individual files, rather than collapsing them into root directory names only. You can also include the below mention point although it is totally optional but will help in impressing the interviewer. The output will also include some extra information, which can be easily suppressed by including two flags: git diff-tree -no-commit-id -name-only -r {hash} Here -no-commit-id will suppress the commit hashes from appearing in the output, and -name-only will only print the file names, instead of their paths.

What is the difference between Active and Passive check in Nagios?

For this answer, first point out the basic difference Active and Passive checks. The major difference between Active and Passive checks is that Active checks are initiated and performed by Nagios, while passive checks are performed by external applications. If your interviewer is looking unconvinced with the above explanation then you can also mention some key features of both Active and Passive checks: Passive checks are useful for monitoring services that are: Asynchronous in nature and cannot be monitored effectively by polling their status on a regularly scheduled basis. Located behind a firewall and cannot be checked actively from the monitoring host. The main features of Actives checks are as follows: Active checks are initiated by the Nagios process. Active checks are run on a regularly scheduled basis.

What is NRPE (Nagios Remote Plugin Executor) in Nagios?

For this answer, give a brief definition of Plugins. The NRPE addon is designed to allow you to execute Nagios plugins on remote Linux/Unix machines. The main reason for doing this is to allow Nagios to monitor "local" resources (like CPU load, memory usage, etc.) on remote machines. Since these public resources are not usually exposed to external machines, an agent like NRPE must be installed on the remote Linux/Unix machines. I will advise you to explain the NRPE architecture on the basis of diagram shown below. The NRPE addon consists of two pieces: The check_nrpe plugin, which resides on the local monitoring machine. The NRPE daemon, which runs on the remote Linux/Unix machine. There is a SSL (Secure Socket Layer) connection between monitoring host and remote host as shown in the diagram below. https://cdn.edureka.co/blog/wp-content/uploads/2016/01/nrpe-architecture-devops-interview-questions.png

Q8. Explain your understanding and expertise on both the software development side and the technical operations side of an organization you have worked with in the past.

For this answer, share your past experience and try to explain how flexible you were in your previous job. You can refer the below example: DevOps engineers almost always work in a 24/7 business-critical online environment. I was adaptable to on-call duties and was available to take up real-time, live-system responsibility. I successfully automated processes to support continuous software deployments. I have experience with public/private clouds, tools like Chef or Puppet, scripting and automation with tools like Python and PHP, and a background in Agile.

Why do you need a Continuous Integration of Dev & Testing?

For this answer, you should focus on the need of Continuous Integration. My suggestion would be to mention the below explanation in your answer: Continuous Integration of Dev and Testing improves the quality of software, and reduces the time taken to deliver it, by replacing the traditional practice of testing after completing all development. It allows Dev team to easily detect and locate problems early because developers need to integrate code into a shared repository several times a day (more frequently). Each check-in is then automatically tested.

Q4. How do all these tools work together?

Given below is a generic logical flow where everything gets automated for seamless delivery. However, this flow may vary from organization to organization as per the requirement. Developers develop the code and this source code is managed by Version Control System tools like Git etc. Developers send this code to the Git repository and any changes made in the code is committed to this Repository. Jenkins pulls this code from the repository using the Git plugin and build it using tools like Ant or Maven. Configuration management tools like puppet deploys & provisions testing environment and then Jenkins releases this code on the test environment on which testing is done using tools like selenium. Once the code is tested, Jenkins send it for deployment on the production server (even production server is provisioned & maintained by tools like puppet). After deployment It is continuously monitored by tools like Nagios. Docker containers provides testing environment to test the build features.

How do you expect you would be required to multitask as a DevOps professional?

I believe I'll be expected to: Focus attention on bridging communication gaps between Development and Operations teams. Understand system design from an architect's perspective, software development from a developer's perspective,operations and infrastructure from the perspective of a seasoned Systems Administrator. Execute - to be able to actually do what needs to be done.

What are the benefits of Automation Testing?

I have listed down some advantages of automation testing. Include these in your answer and you can add your own experience of how Continuous Testing helped your previous company: Supports execution of repeated test cases Aids in testing a large test matrix Enables parallel execution Encourages unattended execution Improves accuracy thereby reducing human generated errors Saves time and money

What is the difference between Assert and Verify commands in Selenium?

I have mentioned differences between Assert and Verify commands below: Assert command checks whether the given condition is true or false. Let's say we assert whether the given element is present on the web page or not. If the condition is true, then the program control will execute the next test step. But, if the condition is false, the execution would stop and no further test would be executed. Verify command also checks whether the given condition is true or false. Irrespective of the condition being true or false, the program execution doesn't halts i.e. any failure during verification would not stop the execution and all the test steps would be executed.

What is meant by Continuous Integration?

I will advise you to begin this answer by giving a small definition of Continuous Integration (CI). It is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. I suggest that you explain how you have implemented it in your previous job. You can refer the below given example: https://cdn.edureka.co/blog/wp-content/uploads/2016/10/Jenkins-standalone-architecture-Jenkins-tutorial-What-is-Jenkins-Edureka.png n the diagram shown above: Developers check out code into their private workspaces. When they are done with it they commit the changes to the shared repository (Version Control Repository). The CI server monitors the repository and checks out changes when they occur. The CI server then pulls these changes and builds the system and also runs unit and integration tests. The CI server will now inform the team of the successful build. If the build or tests fails, the CI server will alert the team. The team will try to fix the issue at the earliest opportunity. This process keeps on repeating

What platforms does Docker run on?

I will start this answer by saying Docker runs on only Linux and Cloud platforms and then I will mention the below vendors of Linux: Ubuntu 12.04, 13.04 et al Fedora 19/20+ RHEL 6.5+ CentOS 6+ Gentoo ArchLinux openSUSE 12.3+ CRUX 3.0+ Cloud: Amazon EC2 Google Compute Engine Microsoft Azure Rackspace

What is Git bisect? How can you use it to determine the source of a (regression) bug?

I will suggest you to first give a small definition of Git bisect, Git bisect is used to find the commit that introduced a bug by using binary search. Command for Git bisect is git bisect <subcommand> <options> Now since you have mentioned the command above, explain what this command will do, This command uses a binary search algorithm to find which commit in your project's history introduced a bug. You use it by first telling it a "bad" commit that is known to contain the bug, and a "good" commit that is known to be before the bug was introduced. Then Git bisect picks a commit between those two endpoints and asks you whether the selected commit is "good" or "bad". It continues narrowing down the range until it finds the exact commit that introduced the change.

How do you configure a Git repository to run code sanity checking tools right before making commits, and preventing them if the test fails?

I will suggest you to first give a small introduction to sanity checking, A sanity or smoke test determines whether it is possible and reasonable to continue testing. Now explain how to achieve this, this can be done with a simple script related to the pre-commit hook of the repository. The pre-commit hook is triggered right before a commit is made, even before you are required to enter a commit message. In this script one can run other tools, such as linters and perform sanity checks on the changes being committed into the repository. Finally give an example, you can refer the below script: #!/bin/sh files=$(git diff -cached -name-only -diff-filter=ACM | grep '.go$') if [ -z files ]; then exit 0 fi unfmtd=$(gofmt -l $files) if [ -z unfmtd ]; then exit 0 fi echo "Some .go files are not fmt'd" exit 1 This script checks to see if any .go file that is about to be committed needs to be passed through the standard Go source code formatting tool gofmt. By exiting with a non-zero status, the script effectively prevents the commit from being applied to the repository.

How will you know in Git if a branch has already been merged into master?

I will suggest you to include both the below mentioned commands: git branch -merged lists the branches that have been merged into the current branch. git branch -no-merged lists the branches that have not been merged.

What are the benefits of using version control?

I will suggest you to include the following advantages of version control: With Version Control System (VCS), all the team members are allowed to work freely on any file at any time. VCS will later allow you to merge all the changes into a common version. All the past versions and variants are neatly packed up inside the VCS. When you need it, you can request any version at any time and you'll have a snapshot of the complete project right at hand. Every time you save a new version of your project, your VCS requires you to provide a short description of what was changed. Additionally, you can see what exactly was changed in the file's content. This allows you to know who has made what change in the project. A distributed VCS like Git allows all the team members to have complete history of the project so if there is a breakdown in the central server you can use any of your teammate's local Git repository.

What are the key elements of Continuous Testing tools?

Key elements of Continuous Testing are: Risk Assessment: It Covers risk mitigation tasks, technical debt, quality assessment and test coverage optimization to ensure the build is ready to progress toward next stage. Policy Analysis: It ensures all processes align with the organization's evolving business and compliance demands are met. Requirements Traceability: It ensures true requirements are met and rework is not required. An object assessment is used to identify which requirements are at risk, working as expected or require further validation. Advanced Analysis: It uses automation in areas such as static code analysis, change impact analysis and scope assessment/prioritization to prevent defects in the first place and accomplishing more within each iteration. Test Optimization: It ensures tests yield accurate outcomes and provide actionable findings. Aspects include Test Data Management, Test Optimization Management and Test Maintenance Service Virtualization: It ensures access to real-world testing environments. Service visualization enables access to the virtual form of the required testing stages, cutting the waste time to test environment setup and availability.

What's your career objective in your role as a DevOps engineer?

My passion is breaking down the barriers and building and improving processes, so that the engineering and operations teams work better and smarter. That's why I love DevOps. It's an opportunity to be involved in the entire delivery system from start to finish.

What are containers?

My suggestion is to explain the need for containerization first, containers are used to provide consistent computing environment from a developer's laptop to a test environment, from a staging environment into production. Now give a definition of containers, a container consists of an entire runtime environment: an application, plus all its dependencies, libraries and other binaries, and configuration files needed to run it, bundled into one package. Containerizing the application platform and its dependencies removes the differences in OS distributions and underlying infrastructure. https://cdn.edureka.co/blog/wp-content/uploads/2016/10/containers-devops-interview-questions.png

In such an iterative environment/process how do you ensure that security requirements are always considered? Should we have a security person also in the DevOp process?

Security must always be considered and a security expert should be involved in the DevOps process from the beginning. You cannot expect a developer or an operations team member to make the necessary security decisions for a given project. If security is a concern (and these days it should always be a concern) to your business, then there is obviously room for a full-role dedicated to a primary subject matter expert in security/privacy. Your developer or operations professional should be an expert on topics such as 1) data privacy 2) intrusion detection 3) threat vectors 4) Common Vulnerabilities and Exposures (CVEs) 5) package security 6) authentication 7) authorization 8) security standards compliance

How does HTTP work?

The HTTP protocol works in a client and server model like most other protocols. A web browser using which a request is initiated is called as a client and a web server software which responds to that request is called a server. World Wide Web Consortium and the Internet Engineering Task Force are two important spokes in the standardization of the HTTP protocol. HTTP allows improvement of its request and response with the help of intermediates, for example a gateway, a proxy, or a tunnel. The resources that can be requested using the HTTP protocol, are made available using a certain type of URI (Uniform Resource Identifier) called a URL (Uniform Resource Locator). TCP (Transmission Control Protocol) is used to establish a connection to the application layer port 80 used by HTTP.

How does Nagios help with Distributed Monitoring?

The interviewer will be expecting an answer related to the distributed architecture of Nagios. So, I suggest that you answer it in the below mentioned format: With Nagios you can monitor your whole enterprise by using a distributed monitoring scheme in which local slave instances of Nagios perform monitoring tasks and report the results back to a single master. You manage all configuration, notification, and reporting from the master, while the slaves do all the work. This design takes advantage of Nagios's ability to utilize passive checks i.e. external applications or processes that send results back to Nagios. In a distributed configuration, these external applications are other instances of Nagios.

Which are the top DevOps tools? Which tools have you worked on?

The most popular DevOps tools are mentioned below: Git : Version Control System tool Jenkins : Continuous Integration tool Selenium : Continuous Testing tool Puppet, Chef, Ansible : Configuration Management and Deployment tools Nagios : Continuous Monitoring tool Docker : Containerization tool You can also mention any other tool if you want, but make sure you include the above tools in your answer. The second part of the answer has two possibilities: If you have experience with all the above tools then you can say that I have worked on all these tools for developing good quality software and deploying those softwares easily, frequently, and reliably. If you have experience only with some of the above tools then mention those tools and say that I have specialization in these tools and have an overview about the rest of the tools.

How will you secure Jenkins?

The way I secure Jenkins is mentioned below. If you have any other way of doing it, please mention it in the comments section below: Ensure global security is on. Ensure that Jenkins is integrated with my company's user directory with appropriate plugin. Ensure that matrix/Project matrix is enabled to fine tune access. Automate the process of setting rights/privileges in Jenkins with custom version controlled script. Limit physical access to Jenkins data/folders. Periodically run security audits on same.

Q7. Explain with a use case where DevOps can be used in industry / real-life.

There are many industries that are using DevOps so you can mention any of those use cases, you can also refer the below example: Etsy is a peer-to-peer e-commerce website focused on handmade or vintage items and supplies, as well as unique factory-manufactured items. Etsy struggled with slow, painful site updates that frequently caused the site to go down. It affected sales for millions of Etsy's users who sold goods through online market place and risked driving them to the competitor. With the help of a new technical management team, Etsy transitioned from its waterfall model, which produced four-hour full-site deployments twice weekly, to a more agile approach. Today, it has a fully automated deployment pipeline, and its continuous delivery practices have reportedly resulted in more than 50 deployments a day with fewer disruptions.

How do you setup a script to run every time a repository receives new commits through push?

There are three ways to configure a script to run every time a repository receives new commits through push, one needs to define either a pre-receive, update, or a post-receive hook depending on when exactly the script needs to be triggered. Pre-receive hook in the destination repository is invoked when commits are pushed to it. Any script bound to this hook will be executed before any references are updated. This is a useful hook to run scripts that help enforce development policies. Update hook works in a similar manner to pre-receive hook, and is also triggered before any updates are actually made. However, the update hook is called once for every commit that has been pushed to the destination repository. Finally, post-receive hook in the repository is invoked after the updates have been accepted into the destination repository. This is an ideal place to configure simple deployment scripts, invoke some continuous integration systems, dispatch notification emails to repository maintainers, etc. Hooks are local to every Git repository and are not versioned. Scripts can either be created within the hooks directory inside the ".git" directory, or they can be created elsewhere and links to those scripts can be placed within the directory.

In Git how do you revert a commit that has already been pushed and made public?

There can be two answers to this question so make sure that you include both because any of the below options can be used depending on the situation: Remove or fix the bad file in a new commit and push it to the remote repository. This is the most natural way to fix an error. Once you have made necessary changes to the file, commit it to the remote repository for that I will use git commit -m "commit message" Create a new commit that undoes all changes that were made in the bad commit.to do this I will use a command git revert <name of bad commit>

What is Dockerfile used for?

This answer according to me should begin by explaining the use of Dockerfile. Docker can build images automatically by reading the instructions from a Dockerfile. Now I suggest you to give a small definition of Dockerfle. A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image. Using docker build users can create an automated build that executes several command-line instructions in succession.

Which among Puppet, Chef, SaltStack and Ansible is the best Configuration Management (CM) tool? Why?

This depends on the organization's need so mention few points on all those tools: Puppet is the oldest and most mature CM tool. Puppet is a Ruby-based Configuration Management tool, but while it has some free features, much of what makes Puppet great is only available in the paid version. Organizations that don't need a lot of extras will find Puppet useful, but those needing more customization will probably need to upgrade to the paid version. Chef is written in Ruby, so it can be customized by those who know the language. It also includes free features, plus it can be upgraded from open source to enterprise-level if necessary. On top of that, it's a very flexible product. Ansible is a very secure option since it uses Secure Shell. It's a simple tool to use, but it does offer a number of other services in addition to configuration management. It's very easy to learn, so it's perfect for those who don't have a dedicated IT staff but still need a configuration management tool. SaltStack is python based open source CM tool made for larger businesses, but its learning curve is fairly low.

How would you prepare for a migration?

This question evaluates your experience of real projects with all the awkwardness and complexity they bring. Include terms like cut-over, dress rehearsals, roll-back and roll-forward, DNS solutions, feature toggles, branch by abstraction, and automation in your answer. Developing greenfield systems with little or no existing technology in place is always easier than having to deal with legacy components and configuration. As a candidate if you appreciate that any interesting software system will in effect be under constant migration, you will appear suitable for the role.

Describe branching strategies you have used.

This question is asked to test your branching experience so tell them about how you have used branching in your previous job and what purpose does it serves, you can refer the below points: Feature branching A feature branch model keeps all of the changes for a particular feature inside of a branch. When the feature is fully tested and validated by automated tests, the branch is then merged into master. Task branching In this model each task is implemented on its own branch with the task key included in the branch name. It is easy to see which code implements which task, just look for the task key in the branch name. Release branching Once the develop branch has acquired enough features for a release, you can clone that branch to form a Release branch. Creating this branch starts the next release cycle, so no new features can be added after this point, only bug fixes, documentation generation, and other release-oriented tasks should go in this branch. Once it is ready to ship, the release gets merged into master and tagged with a version number. In addition, it should be merged back into develop branch, which may have progressed since the release was initiated. In the end tell them that branching strategies varies from one organization to another, so I know basic branching operations like delete, merge, checking out a branch etc.

What is Nagios?

You can answer this question by first mentioning that Nagios is one of the monitoring tools. It is used for Continuous monitoring of systems, applications, services, and business processes etc in a DevOps culture. In the event of a failure, Nagios can alert technical staff of the problem, allowing them to begin remediation processes before outages affect business processes, end-users, or customers. With Nagios, you don't have to explain why an unseen infrastructure outage affect your organization's bottom line. Now once you have defined what is Nagios, you can mention the various things that you can achieve using Nagios. By using Nagios you can: Plan for infrastructure upgrades before outdated systems cause failures. Respond to issues at the first sign of a problem. Automatically fix problems when they are detected. Coordinate technical team responses. Ensure your organization's SLAs are being met. Ensure IT infrastructure outages have a minimal effect on your organization's bottom line. Monitor your entire infrastructure and business processes. This completes the answer to this question. Further details like advantages etc. can be added as per the direction where the discussion is headed.

Why is Continuous Testing important for DevOps?

You can answer this question by saying, "Continuous Testing allows any change made in the code to be tested immediately. This avoids the problems created by having "big-bang" testing left to the end of the cycle such as release delays and quality issues. In this way, Continuous Testing facilitates more frequent and good quality releases."

Can I use json instead of yaml for my compose file in Docker?

You can use json instead of yaml for your compose file, to use json file with compose, specify the filename to use for eg: docker-compose -f docker-compose.json up


Conjuntos de estudio relacionados

Chapter 13: Oscillations About Equilibrium

View Set

Introduction to Linux - Chapter 1 - 14

View Set

6-Client Profiles, Portfolio Strategies, and Taxation

View Set

final genetics practice questions

View Set

Ch. 15- Female Genitourinary Problems

View Set

Chapter 9 - Substance Related and Addictive Disorders

View Set