40 Ansible Interview Questions

Are you prepared for questions like 'How can you run an Ansible playbook as a different user?' and similar? We've collected 40 interview questions for you to prepare for your next Ansible interview.

How can you run an Ansible playbook as a different user?

You can run an Ansible playbook as a different user using the --user option in the command line. For example, ansible-playbook -u username playbook.yml allows you to specify a different SSH user. Additionally, within the playbook itself, you can use become directives to elevate privileges or specify different users for executing tasks. For example:

yaml - name: Run tasks as a different user hosts: all become: yes become_user: desired_user tasks: - command: echo "This command runs as desired_user"

This way, you have flexibility either by command line or within the playbook itself.

What are Ansible collections?

Ansible Collections are a way to organize and distribute Ansible content, including roles, modules, plugins, and other resources, in a standardized format. They help you package and distribute reusable content, making it easier to share and collaborate within teams or across the community. Collections allow you to manage dependencies more effectively and keep your playbooks structured and modular. By using collections, you can simply install and use pre-built content from Ansible Galaxy or other sources, streamlining your automation workflows.

Explain the architecture of Ansible.

Ansible has a streamlined, agentless architecture. At the heart of it is the control node, where Ansible is installed. This control node uses SSH (or WinRM for Windows systems) to communicate with managed nodes, often known as hosts. Managed nodes don't need any special software or daemons running on them, just a standard SSH setup.

You'll define your automation tasks in YAML files called playbooks, which describe the desired state of your systems. Ansible modules, which are basically small programs, execute these tasks. The inventory file lists all managed nodes, organizing them into groups for easier management. This simplicity and the fact that it uses existing SSH infrastructure make Ansible easy to set up and use, even in complex environments.

How do you handle errors in an Ansible playbook?

Handling errors in an Ansible playbook can be done in several ways. One common approach is using the ignore_errors directive, which allows a task to continue running even if it fails. You can set ignore_errors: yes for tasks where failure is acceptable or expected under certain conditions.

Another approach is employing rescue and always blocks within the block module to provide more nuanced error handling. The block lets you group tasks, and if any of these tasks fail, the rescue section can include tasks to handle the error or cleanup actions. The always section will run regardless of the success or failure of the preceding tasks.

Additionally, the failed_when directive can specify custom conditions for task failure based on the output. Together, these methods offer a robust way to manage errors and ensure your playbooks handle different scenarios gracefully.

Can you explain what an inventory file is in Ansible?

An inventory file in Ansible is essentially a list of hosts or nodes that you manage and configure. These can be organized into groups and can include variables to tailor configurations per host or group. It’s crucial because it tells Ansible what machines to connect to and what configurations to apply where. By default, it’s usually a simple text file (e.g., hosts or inventory), but it can also be dynamic through scripts or external sources like cloud provider APIs or CMDBs.

What's the best way to prepare for a Ansible interview?

Seeking out a mentor or other expert in your field is a great way to prepare for a Ansible interview. They can provide you with valuable insights and advice on how to best present yourself during the interview. Additionally, practicing your responses to common interview questions can help you feel more confident and prepared on the day of the interview.

What are handlers in Ansible, and when would you use them?

Handlers in Ansible are special tasks that are triggered only when notified by other tasks. They are particularly useful for actions that should only happen if there was a change, like restarting a service after a configuration file is updated. For example, if you have a task that updates the Nginx configuration, you can notify a handler to restart Nginx only if the configuration file actually changed. This prevents unnecessary restarts and ensures that changes are only applied when needed, improving efficiency and reliability.

Explain the purpose of the Ansible.cfg file.

The Ansible.cfg file is a configuration file that allows you to customize and control the behavior of Ansible. It includes settings for inventory locations, remote user details, module and plugin paths, and various other execution details. By tweaking this file, you can define global settings that apply to all your playbooks, making it easier to manage consistent configurations across different environments.

Additionally, the Ansible.cfg file can help in optimizing performance by adjusting parameters like the number of forks, enabling pipelining, or setting timeouts. It's a powerful way to streamline your automation workflows and ensure they run smoothly.

What are the different types of variables in Ansible?

In Ansible, variables can be defined in several ways and places, making them pretty flexible. You have inventory variables, which are tied to your hosts in your inventory file. Then, there are playbook variables that you define directly within your playbooks. Role variables, defined in roles, also help in structuring and organizing your tasks. There are also variables defined in group_vars and host_vars directories, which help to segregate configurations based on groups or individual hosts.

Additionally, you have extra variables, which can be passed at runtime using the command line with -e flags. Variables can also be defined via registered variables during tasks or gathered from facts. Lastly, Ansible provides various special variables that provide useful information about the state of execution, like ansible_facts.

Each type of variable has its own scope and precedence, making it important to understand how they interrelate and which ones will take priority in case of conflicts.

How do you test Ansible playbooks?

Testing Ansible playbooks can be done through a few different approaches. One popular method is using Ansible's built-in --check mode, also known as "dry run," to simulate the execution of your playbook without making any actual changes. This can help you identify potential issues without altering your systems.

Another effective way is to incorporate tools like Molecule, which is designed specifically for testing Ansible roles and playbooks. Molecule allows you to write unit tests and run them in isolated environments such as Docker or Vagrant, ensuring your playbooks work as expected. This setup can include integration tests, linting, and even scenario testing.

Finally, you can also use continuous integration (CI) pipelines, like those provided by Jenkins or GitHub Actions, to automatically run your playbooks in test environments upon changes to your codebase. This helps maintain consistent quality and identify issues early in the development process.

What is Ansible and what are its main use cases?

Ansible is an open-source IT automation tool that simplifies the management of infrastructure and applications by enabling configuration management, application deployment, and task automation. It's designed to be both powerful and simple, using YAML for its playbook language, making it accessible even for those without deep programming skills.

Its main use cases include automating repetitive tasks, managing configurations consistently across multiple environments, deploying applications to multiple servers simultaneously, and orchestrating complex workflows with multiple tools and technologies. Ansible excels in scenarios where you need to ensure that your systems are consistently maintained and up-to-date without manual intervention.

How does Ansible differ from other configuration management tools like Puppet, Chef, or SaltStack?

Ansible distinguishes itself from other configuration management tools primarily through its agentless architecture, which means it doesn't require any software to be installed on managed nodes, leveraging SSH for communication instead. This can simplify deployment and reduce overhead. Additionally, Ansible uses YAML for its playbooks, making it more human-readable and easier to learn for those who might not have a programming background. Finally, Ansible emphasizes a push-based model for executing tasks, whereas some other tools like Puppet use a pull-based model.

What is an Ansible playbook?

An Ansible playbook is essentially a blueprint of automation tasks written in YAML that defines how a particular piece of infrastructure or application should be configured or managed. Playbooks contain plays, which are collections of tasks that target a set of hosts. Each play outlines what tasks should be executed on which machines and in what order, making them very readable and easy to understand.

Tasks within a play call Ansible modules, which are the actual commands that do the work, such as installing a package, copying a file, or starting a service. Playbooks can also handle complex workflows, dependencies, and error handling, making them a powerful tool for orchestrating and automating multi-step IT processes.

How do you define variables in an Ansible playbook?

You can define variables in an Ansible playbook directly within the vars section of a playbook or in separate files that get included. In the vars section, you'd put your variables under the play definition, something like this:

yaml - hosts: myhosts vars: my_variable: "some_value" tasks: - name: Print my variable debug: msg: "{{ my_variable }}"

You can also define variables in host or group variable files placed under the group_vars or host_vars directories, which Ansible will automatically load, or even pass them through command line options when running a playbook.

What command would you use to check the syntax of a playbook?

You can use the ansible-playbook command with the --syntax-check option to check the syntax of a playbook. For example, ansible-playbook playbook.yml --syntax-check will validate the syntax without actually running the playbook. This is really handy for catching errors before they cause issues during execution.

Explain the purpose of the "ansible-doc" command.

The "ansible-doc" command is used to display documentation on Ansible modules and plugins directly from the command line. It allows you to quickly get detailed information about how a particular module works, including its parameters, examples, and usage guidelines. This is particularly helpful when you're writing or debugging playbooks and you need to know exactly how to configure a module or what default values it might use.

What is an Ansible role and how do you create one?

An Ansible role is a modular way to organize and reuse Ansible code. Roles allow you to break down a playbook into smaller, reusable components. Each role is essentially a collection of tasks, variables, files, templates, and handlers structured in a specific directory layout. This makes your playbooks easier to manage and maintain.

To create a role, you can use the ansible-galaxy init <role_name> command, which sets up the directory structure for you. This will generate directories like tasks, vars, files, templates, and handlers, among others. You then add your specific Ansible code into the appropriate directories. For example, tasks you want to execute go into the tasks/main.yml file, and variables go into the vars/main.yml file.

Explain the difference between a playbook and a play in Ansible.

A playbook in Ansible is essentially a file, written in YAML, that contains one or more plays. It’s the top-level structure where you define your automation tasks. Think of it as a script that outlines what you want to automate across different hosts.

A play, on the other hand, is a section within a playbook that focuses on a specific group of tasks directed at certain hosts. Each play defines a set of roles or individual tasks that will be executed on a subset of your entire inventory. The play helps break down the automation into manageable chunks, so you can apply different tasks to different hosts as needed.

What are Ansible modules and how do they work?

Ansible modules are essentially small programs or scripts that perform a specific task, such as installing a package, managing services, or handling files. They are the building blocks for all Ansible tasks and playbooks. Modules can be written in any language, but they are typically written in Python for ease of integration with Ansible's core.

When you run an Ansible playbook, it communicates with the target systems (referred to as nodes) over SSH or WinRM and sends the necessary modules to these nodes. The modules execute the assigned tasks locally on each node, report back the results to the Ansible control machine, and then exit. This approach ensures that no persistent daemons or servers are required on the managed nodes, making the process efficient and lightweight.

How do you manage dynamic inventory in Ansible?

Dynamic inventory in Ansible can be managed using inventory scripts or plugins that pull inventory data from external sources. These sources can be cloud providers like AWS, GCP, or Azure, or even your own custom database or API. For example, Ansible provides built-in dynamic inventory plugins for popular services such as AWS EC2 and Google Cloud.

To use dynamic inventory, you typically configure a YAML or JSON file that includes necessary authentication and query details. You then call this executable with your playbooks. The dynamic inventory script will generate the list of hosts dynamically each time it runs, ensuring an up-to-date inventory.

Additionally, you can use tools like Ansible Tower/AWX, which helps in managing dynamic inventories more easily through a web interface and provides powerful scheduling and monitoring features.

How would you execute an Ansible playbook?

To execute an Ansible playbook, you use the ansible-playbook command followed by the path to your playbook file. For instance, if your playbook is named site.yml, you would run ansible-playbook site.yml from the command line. Optionally, you can specify additional flags, such as -i to define an inventory file, and -K to prompt for a sudo password if your playbook requires elevated privileges.

Can you describe what a task is in Ansible?

In Ansible, a task is a unit of action within a playbook that defines a specific operation to be carried out on a target machine, such as installing a package, copying a file, or restarting a service. Each task uses a module, like yum for package management or copy for file operations, to perform the specific action. Tasks are executed in the order they appear in the playbook and include parameters that specify details about what the task should do. They also support error handling, looping, and conditionals, making them flexible and powerful for automating a wide range of tasks on remote systems.

What are Ansible Galaxy and how can you use it?

Ansible Galaxy is essentially a hub for finding, sharing, and reusing Ansible roles. It's like a package repository where community and official roles are shared and can be easily integrated into your projects. You can think of it as a place to streamline the setup and management of configurations by leveraging pre-built roles instead of writing everything from scratch.

To use Ansible Galaxy, you typically start by searching for a role that fits your requirements on the Ansible Galaxy website. Once you find one, you can install it using the ansible-galaxy install command followed by the role's identifier, for example, ansible-galaxy install username.role_name. After installation, you can reference the role in your playbooks to take advantage of its features. This makes your automation tasks more modular and reusable.

How do you secure sensitive data in Ansible?

To secure sensitive data in Ansible, you can use Ansible Vault. It's a powerful feature that allows you to encrypt passwords, keys, and other sensitive information. You can create an encrypted file using ansible-vault create filename.yaml and then access it within your playbook using the !vault tag. This ensures that your sensitive data remains encrypted even if someone gains access to your files.

Another common practice is to use environment variables or a centralized secret management system like HashiCorp Vault, AWS Secrets Manager, or Azure Key Vault. This way, sensitive information is not stored directly in your playbook files. You can fetch the secrets dynamically as needed and integrate those values into your tasks using lookup or custom Ansible modules.

What is the difference between 'include' and 'import' statements in Ansible?

In Ansible, 'include' and 'import' might seem similar, but they function differently. The 'import' statements are processed statically during the playbook parsing time, meaning the tasks they bring in are included in the playbook before execution starts. This makes the playbook structure more predictable and helps catch errors early on.

On the other hand, 'include' statements are dynamic and are processed during execution. This gives you more flexibility, as the tasks can change based on conditions set at runtime. For example, you might use 'include' to bring in tasks conditionally, based on the results of earlier tasks in the same playbook.

Explain the use of the "delegate_to" directive in Ansible.

The "delegate_to" directive in Ansible allows you to specify that a particular task should be executed on a different host than the one you're managing with your playbook. This is useful when you need to run a task on a controller node or another specific machine, rather than the target host. For example, if you need to manage a load balancer or perform some orchestration tasks that should not be executed on the target hosts, you can delegate those tasks to a different host using "delegate_to."

Here's a quick example: if you're updating software on a group of web servers but need to notify a load balancer to take nodes out of rotation during the update, you'd use "delegate_to" to run the load balancer update task on the load balancer machine.

yaml tasks: - name: Take node out of load balancer rotation command: /usr/bin/update_lb --remove {{ inventory_hostname }} delegate_to: lb_host

With this directive, Ansible provides a flexible way to orchestrate complex operations involving multiple hosts and roles.

What is the purpose of the "register" keyword in Ansible?

The "register" keyword in Ansible is used to capture the output of a task into a variable. This can be useful when you need to use the results of one task in a subsequent task within the same playbook. For instance, if you run a command to fetch some status and want to make decisions based on that status later in your playbook, you would use "register" to store the output and then refer to that stored value in your conditional statements.

How can you parallelize tasks in Ansible?

To parallelize tasks in Ansible, you can leverage the forks parameter in your ansible.cfg file, which specifies the number of parallel processes to use. By default, Ansible uses 5 forks, but you can increase this number to speed up execution across many hosts. For example, setting forks = 20 would allow up to 20 parallel tasks.

Additionally, for specific tasks that benefit from parallel execution within a playbook, you can use the async and poll keywords. This allows a task to run asynchronously on a host for a specified duration, enabling other tasks to run concurrently. For example, async: 300 would allow the task to run for up to 300 seconds, and poll: 0 tells Ansible not to wait for the task to complete before moving on to the next one.

How do you manage dependencies in Ansible roles?

Ansible roles can manage dependencies using a specific structure in their metadata file. This is done by defining the dependencies in the meta/main.yml file of the role. You specify other roles that your current role depends on in the dependencies section. When your role runs, Ansible ensures that these dependencies are applied first. This helps streamline and organize the configuration, making it easier to maintain and reuse roles across different playbooks.

Explain the concept of idempotence in Ansible.

Idempotence in Ansible means that running a playbook multiple times on a system will produce the same result and leave the system in the same state as if it were run only once. Essentially, if a task is executed and the desired state is already achieved, Ansible will not make any changes. This feature is crucial because it ensures consistent and predictable deployments, reducing the risk of unintended side effects. It's one of the core principles that make Ansible reliable for configuration management and automation.

How do you handle asynchronous actions in Ansible?

In Ansible, asynchronous actions are handled using the async and poll parameters available in tasks. By setting the async parameter, you define how long you are willing to wait for the action to complete. The poll parameter specifies how often Ansible should check the status of the task. For example, you might use async: 300 and poll: 10 to allow up to 5 minutes for the task to complete, with status checks every 10 seconds.

To run an async task without waiting for its completion, you can set poll: 0, and then use the wait_for module later in your playbook to wait for the task to finish if required. This approach is useful for long-running operations where you don't want to block the playbook while waiting for completion.

What are some best practices for writing Ansible playbooks?

When writing Ansible playbooks, it's a good idea to make them as readable and maintainable as possible. Start by organizing your playbooks into roles, which helps in reusability and clarity. You can define tasks, handlers, variables, and templates within each role, making it easier to manage complex configurations.

Another important practice is to use YAML syntax correctly and consistently. Ensure indentation is correct since YAML is indentation-sensitive. Use meaningful names for tasks and roles to make the playbooks self-explanatory. Embedding comments can also provide context for why certain tasks are executed.

Lastly, always test your playbooks in a staging environment before deploying them to production. This practice helps in catching any unforeseen issues and ensures smoother deployments. Use Ansible's dry run mode (--check) to validate the playbooks without making any changes.

How do you manage multiple environments (e.g., dev, stage, prod) in Ansible?

To manage multiple environments like dev, stage, and prod in Ansible, you typically use inventory files or inventory directories. You can create separate inventory files for each environment and reference them when running your playbooks. For example, you might have inventory_dev, inventory_stage, and inventory_prod files. You specify which inventory to use with the -i flag when executing the ansible-playbook command.

Additionally, you can use variables within these inventory files or even separate variable files, organized by environment. Best practice is to create a directory structure where each environment has its own set of group_vars and host_vars, making it easier to manage and override settings based on the environment. By leveraging features like vars_files and Ansible Vault for sensitive data, you ensure that configuration management is both flexible and secure across different stages.

How can Ansible be used to manage cloud infrastructure?

Ansible can manage cloud infrastructure through its playbooks and integration with cloud provider modules like AWS, Azure, and Google Cloud. For example, you can use Ansible to provision, configure, and manage instances, networks, and storage on these platforms by specifying the desired state in YAML files. With modules like ec2 for AWS or azure_rm_virtualmachine for Azure, you can describe your infrastructure as code and achieve consistent, repeatable results.

Additionally, Ansible's state management ensures idempotency, meaning you can run your playbooks multiple times without causing unintended changes. This is crucial when managing cloud resources to ensure that the environment remains in the desired state even as you make incremental updates. You can also use Ansible Tower for more advanced features like scheduling, role-based access control, and integrating with other tools in your CI/CD pipeline.

What is the "gather_facts" feature in Ansible and how does it work?

The "gather_facts" feature in Ansible is used to collect system information from managed nodes. These facts are obtained through the setup module, and they're essentially detailed data about the node's environment, including hardware information, network details, OS specifics, and more. This information is then stored as variables that you can use within your playbooks to make more informed decisions.

When you run a playbook, "gather_facts" is enabled by default, and it runs at the beginning of a play to collect these details. If you want to disable this feature, you can set the gather_facts: no option in your playbook. This can save time if you don't need the additional system details and want your playbook to execute faster.

How would you use Ansible Vault to encrypt passwords and other sensitive data?

Ansible Vault is a feature that allows you to keep sensitive data, such as passwords and keys, encrypted within your Ansible files. To use it, you'd start by creating a vault file with the ansible-vault create filename.yml command. This prompts you for a password that encrypts the file. You can then include your sensitive data within this file in a YAML format.

When you need to edit the vault file, you can use the ansible-vault edit filename.yml command, and to view an encrypted file without altering it, you use ansible-vault view filename.yml. To incorporate an encrypted file into your playbooks, you just reference it like any other variable file, and during execution, Ansible will prompt for the vault password to decrypt the content on the fly.

To avoid entering the password manually every time, you can use a password file by creating a simple text file containing the password and pointing Ansible to it with the --vault-password-file option. This way, automation workflows can run seamlessly while keeping your secrets secure.

How do you integrate Ansible with CI/CD pipelines?

Integrating Ansible into CI/CD pipelines typically involves using a CI/CD tool like Jenkins, GitLab CI/CD, Travis CI, or others. You start by setting up your pipeline to include an Ansible playbook execution at relevant stages, such as after code is tested and built but before deployment to production. The playbooks can automate different tasks like provisioning infrastructure, deploying applications, and configuring services.

You'll generally store your Ansible playbooks in a version-controlled repository, such as Git. In the CI/CD tool, you configure a job or pipeline stage to pull those playbooks and execute them using the ansible-playbook command. Credentials and inventory details can be securely managed using methods provided by the CI/CD tools, such as Jenkins credentials, GitLab CI/CD variables, or other secret management solutions.

By including Ansible in your CI/CD process, you're able to automate deployment and configuration steps, ensuring consistent and repeatable environments across different stages of your development lifecycle. It helps in reducing manual errors and speeds up the entire deployment process.

What are Jinja2 templates and how are they used in Ansible?

Jinja2 templates in Ansible are powerful tools used to handle dynamic expressions and generate configuration files or scripts. They enable the embedding of control structures like loops and conditionals directly into files. These templates allow for dynamic content generation based on variables and data.

In practice, these templates often come in the form of .j2 files. You can use them with modules like template to transform template files into final configurations by rendering variables, executing loops, and conditionally processing elements before copying them to your target machines. This makes it easier to manage complex and customizable configurations within your infrastructure.

For example, you might have a template to generate a configuration file for an application, where placeholders are defined for different configuration parameters. When the template module is executed, it replaces these placeholders with actual values from Ansible's variable system.

Explain the use of loops in Ansible with an example.

Loops in Ansible are used to perform repetitive tasks efficiently. For instance, if you need to install multiple packages on a system, instead of writing a separate task for each package, you can use a loop to handle all of them in one go.

Here's a basic example: Suppose you want to install a list of packages on your servers. You can utilize the with_items loop like this:

yaml - name: Install multiple packages apt: name: "{{ item }}" state: present loop: - git - curl - vim

In this example, the apt module installs each package listed under loop. This not only simplifies the playbook but also makes it more maintainable.

What are tags in Ansible and how do you use them?

Tags in Ansible are a way to run specific parts of your playbook without executing the entire thing. They help in selectively running tasks and roles, which can save time during testing or when you know only a part of the configuration needs to be updated. You define tags by adding a tags attribute to tasks or roles.

For example, you can define a task with a tag like this:

yaml - name: Install nginx apt: name: nginx state: present tags: - webserver

When you run your playbook, you can specify tags using the --tags option to run only the tasks associated with those tags, like so:

shell ansible-playbook playbook.yml --tags "webserver"

This way, Ansible will only execute tasks that have the webserver tag, skipping all others.

How do you debug an Ansible playbook?

Debugging an Ansible playbook often starts with enabling the verbose mode by adding -v, -vv, -vvv, or even -vvvv to your ansible-playbook command; each additional "v" gives you more detailed output. You can also use the ansible-playbook --syntax-check command to catch any syntax errors before runtime.

Within the playbook itself, debug module is handy. You can insert debug tasks to print variable values or other messages at any point. Additionally, setting gather_facts: true in your playbook helps you to collect and review information about your managed nodes, which might reveal issues related to the environment where the playbook is running.

Get specialized training for your next Ansible interview

There is no better source of knowledge and motivation than having a personal mentor. Support your interview preparation with a mentor who has been there and done that. Our mentors are top professionals from the best companies in the world.

Only 1 Spot Left

I am a Lead Cloud / DevOps engineer who has worked with both Azure and AWS to help organisations build highly-available, scalable, easy-to-maintain and secure cloud platforms. As a big advocate of "everything-as-code", my experiences range from enhancing microservice speedy and simple deployment with Ansible, to supporting/improving enterprise production system …

$180 / month
8 x Calls

10+ year industry veteran with experience in working with major cloud providers (AWS, Azure, GCP) and open source contributions to Terraform and Ansible. If you are looking for practical real world experience then you have found the right mentor! This will be a fully hands on mentorship, roll your sleeves …

$450 / month
Regular Calls

Only 1 Spot Left

Are you interested in integrating different technologies? Do you like scripting and networks? Do you like structure and want to create workflows? Do you enjoy agile techniques and are passionate about tech? Your background doesn't matter, your attitude is what's important. I can help you take the leap into the …

$200 / month
2 x Calls

Only 3 Spots Left

Abdel-Aziz BINGUITCHA-FARE is a cloud enthusiast (10+ Certifications). He is 7x Certified AWS, 3x Certified GCP and joined the AWS Community Builders in 2024. He is a DevOps Engineer at AVIV Group where he works closely with developers to deploy serverless applications on AWS Cloud. Previously, he was a Site …

$240 / month
4 x Calls

Only 5 Spots Left

A reliable DevOps & Cyber Security Specialist with full experience in Cloud Native Applications, mission-critical infrastructure and platform engineering. Certified as CISSP - Certified Information Systems Security Professional. Offering coaching in DevOps and information security compliance.

$240 / month
2 x Calls

Only 1 Spot Left

You want to begin, develop, or high-power your career in DevOps but where to start? Books and self-guided online courses are an option, but the choices can be overwhelming and the concepts challenging without external support and problem-solving. I believe in personalized, individual-level approaches to career growth. I'll prepare a …

$90 / month

Browse all Ansible mentors

Still not convinced?
Don’t just take our word for it

We’ve already delivered 1-on-1 mentorship to thousands of students, professionals, managers and executives. Even better, they’ve left an average rating of 4.9 out of 5 for our mentors.

Find a Ansible mentor
  • "Naz is an amazing person and a wonderful mentor. She is supportive and knowledgeable with extensive practical experience. Having been a manager at Netflix, she also knows a ton about working with teams at scale. Highly recommended."

  • "Brandon has been supporting me with a software engineering job hunt and has provided amazing value with his industry knowledge, tips unique to my situation and support as I prepared for my interviews and applications."

  • "Sandrina helped me improve as an engineer. Looking back, I took a huge step, beyond my expectations."