Day 89 of 100 Days : Error Handling in Ansible + Interview Questions

Welcome to Day 89 of the 100 Days of DevOps journey! Today, we will dive into error handling in Ansible, explore 10 interview questions related to Ansible, and conclude with some positive tips to stay consistent in your learning and work.


Error Handling in Ansible

Error handling is crucial in Ansible to ensure that your playbooks run smoothly and failures are handled gracefully. Here are the key ways to manage errors in Ansible:

1. ignore_errors

  • Use this to ignore task failures and allow the playbook to continue execution.
- name: Ignore errors example
  command: /bin/false
  ignore_errors: yes

2. failed_when

  • Define custom failure conditions for tasks.
- name: Fail task if specific condition is met
  command: /bin/true
  register: result
  failed_when: "result.rc != 0"

3. block, rescue, and always

  • Handle errors using blocks for better control.
- name: Block, rescue, and always example
  tasks:
    - block:
        - name: Task that may fail
          command: /bin/false
      rescue:
        - name: Handle failure
          debug:
            msg: "An error occurred, but we recovered!"
      always:
        - name: Always run this task
          debug:
            msg: "Cleanup complete!"

4. any_errors_fatal

  • Stop the playbook immediately if an error occurs.
- name: Stop on error
  tasks:
    - name: This will stop the playbook on error
      command: /bin/false
      any_errors_fatal: yes

5. assert Module

  • Validate conditions to catch errors early.
- name: Validate preconditions
  assert:
    that:
      - ansible_facts['os_family'] == 'Debian'
    fail_msg: "This playbook only supports Debian-based systems."

These techniques help you create robust playbooks that are fault-tolerant and predictable.


10 Ansible Interview Questions

Prepare for your next interview with these commonly asked questions:

  1. What is Ansible, and how does it work?

    • Ansible is an open-source automation tool used for configuration management, application deployment, and task automation. It operates on an agentless architecture, meaning it doesn’t require agents installed on managed nodes. It communicates via SSH or WinRM to execute tasks in a push-based model.
  2. What is an inventory file in Ansible?

    • An inventory file is a YAML or INI file that defines the hosts and groups of hosts on which Ansible will run tasks. It can be static (manually defined) or dynamic (generated via scripts). This file helps Ansible know the target systems for automation.
  3. Explain the difference between playbook and roles in Ansible.

    • Playbooks are YAML files containing a series of tasks to automate processes. Roles are a way to organize playbooks into reusable components, including tasks, variables, handlers, and templates. Roles promote modularity and make playbooks more manageable.
  4. How does Ansible ensure idempotency?

    • Idempotency in Ansible means that tasks can be executed multiple times without causing unintended changes. Modules in Ansible are designed to check the current state of the system and only make changes if necessary, ensuring predictable results.
  5. What is the purpose of handlers in Ansible?

    • Handlers are tasks triggered by other tasks using the notify keyword. They are typically used for actions like restarting services after configuration changes and only run when notified, saving unnecessary executions.
  6. How do you manage secrets in Ansible?

    • Ansible Vault is used to encrypt sensitive data such as passwords, API keys, or configuration files. Encrypted files can only be decrypted and used during playbook execution with a password or a vault key file.
  7. What is the significance of gather_facts?

    • The gather_facts module collects system information about managed nodes, such as OS type, network interfaces, and hardware details. This information can be used in playbooks to create conditional tasks.
  8. What are the common error-handling mechanisms in Ansible?

    • Error handling includes features like ignore_errors to skip failing tasks, failed_when for custom failure conditions, and block for structured error management using rescue and always sections.
  9. How do you troubleshoot an Ansible playbook failure?

    • Troubleshooting involves using verbose mode (-vvv) to get detailed logs, reviewing task execution results, checking error messages, and validating inventory files and module parameters.
  10. What are tags in Ansible, and how are they useful?

  • Tags allow selective execution of tasks within a playbook. By assigning tags to tasks, you can run specific parts of a playbook using the --tags option, which saves time during testing or debugging.

Staying Consistent in Work and Study

Hey, I get it—staying consistent can feel like a marathon sometimes. There are days when distractions creep in, and motivation wavers. But here’s the thing: it’s not about being perfect; it’s about showing up for yourself every single day. Think of consistency as a promise you make to your future self. Each small effort you put in now is building a foundation for something amazing.

It’s okay to stumble. We all do. What matters is that you pick yourself back up and keep going. Set realistic goals, track your progress, and don’t shy away from asking for help when you need it. Remember, learning isn’t a sprint; it’s a journey. And on those tough days, remind yourself why you started. You’re capable of so much more than you realize, and every step you take brings you closer to your goals. Keep going—you’ve got this.


With just 11 days left in this journey, keep pushing forward! Your dedication to learning DevOps is laying the foundation for a successful career.

See you on Day 90!