fbpx

Top 100 Ansible Interview Questions and Answers

Ansible Interview Questions

Contents show

1. What is Ansible?

Answer: Ansible is an open-source automation tool that allows you to manage and automate infrastructure tasks such as configuration management, application deployment, and orchestration using simple, human-readable YAML scripts called playbooks.


2. How does Ansible work?

Answer: Ansible uses SSH to communicate with remote hosts and execute tasks using modules. Playbooks, written in YAML, define the desired state of the system, and Ansible ensures that the systemโ€™s current state matches the desired state.


3. What are Ansible Playbooks?

Answer: Ansible Playbooks are files written in YAML format that describe a series of tasks to be executed on remote hosts. They allow you to define the configuration and orchestration steps for your infrastructure in a declarative way.


4. How do you define tasks in an Ansible playbook?

Answer: Tasks are defined as a list of dictionaries under the tasks key in a playbook. Each dictionary contains a module name, module-specific arguments, and optional settings.


5. What is an Ansible Role?

Answer: An Ansible Role is a reusable and modular unit of automation that encapsulates a set of tasks, templates, files, and variables. Roles promote code reusability and allow you to organize your playbooks more effectively.


6. How can you define variables in Ansible?

Answer: Variables can be defined in playbooks, inventory, or external variable files. Use the vars keyword within a playbook or define variables in group_vars and host_vars directories in the inventory.


7. How can you pass variables to an Ansible playbook?

Answer: You can pass variables to an Ansible playbook using the -e flag followed by variable assignments, like ansible-playbook playbook.yml -e "variable=value".


8. Explain Ansible Facts.

Answer: Ansible Facts are pieces of information about remote hosts, collected by Ansible when it connects to them. Facts provide information such as system details, IP addresses, hardware information, and more.


9. How can you conditionally execute tasks in Ansible?

Answer: You can use conditional statements like when to execute tasks based on specific conditions. For example:

- name: Install Apache on Debian
  apt:
    name: apache2
  when: ansible_distribution == "Debian"

10. What is an Ansible Vault?

Answer: Ansible Vault is a tool for encrypting sensitive data within Ansible playbooks and roles. It ensures that sensitive information like passwords and API keys are stored securely.


11. How do you encrypt and decrypt files using Ansible Vault?

Answer: Use ansible-vault command to encrypt and decrypt files. For example:

ansible-vault encrypt vars/secrets.yml
ansible-vault decrypt vars/secrets.yml

12. How can you manage package installations using Ansible?

Answer: Use the package module to manage package installations. For example:

- name: Install Apache
  package:
    name: httpd
    state: present

13. Explain Ansible Handlers.

Answer: Ansible Handlers are tasks that are triggered only when notified by other tasks. They are useful for restarting services or performing other actions that should only occur if a configuration change happens.


14. How can you create and manage users in Ansible?

Answer: Use the user module to create and manage users. For example:

- name: Create a user
  user:
    name: john
    state: present

15. How do you use loops in Ansible playbooks?

Answer: Loops can be used to iterate over lists or dictionaries. For example, using with_items:

- name: Install packages
  yum:
    name: "{{ item }}"
  with_items:
    - httpd
    - nginx

16. What is Ansible Galaxy?

Answer: Ansible Galaxy is a platform for sharing, downloading, and reusing pre-built Ansible roles and collections created by the community.


17. How can you handle errors in Ansible tasks?

Answer: Use the failed_when directive to specify conditions that cause a task to be marked as failed.


18. Explain dynamic inventories in Ansible.

Answer: Dynamic inventories allow Ansible to pull host information from external sources such as cloud providers or databases.


19. How can you restart a service using Ansible?

Answer: Use the systemd or service module to restart a service:

- name: Restart a service
  systemd:
    name: apache2
    state: restarted

20. What is the purpose of the register keyword in Ansible?

Answer: The register keyword is used to capture the output of a task and store it in a variable for later use.


21. How can you copy files to remote hosts using Ansible?

Answer: Use the copy module:

- name: Copy a file
  copy:
    src: /path/to/source/file
    dest: /path/to/destination/file

22. Explain the ansible.cfg configuration file.

Answer: The ansible.cfg file is used to configure default settings for the Ansible command-line tool, such as SSH settings and module paths.


23. How can you include tasks from another file in an Ansible playbook?

Answer: Use the include or import_tasks directive to include tasks from another YAML file.


24. What is the purpose of the async and poll keywords in Ansible?

Answer: The async keyword is used to execute a task asynchronously, and the poll keyword is used to set the interval for checking the status of the async task.


25. How can you manage files and directories using Ansible?

Answer: Use the file module to manage files and directories:

- name: Create a directory
  file:
    path: /path/to/directory
    state: directory

26. What is Ansible Vault and how is it used?

Answer: Ansible Vault is a tool for encrypting sensitive data like passwords, API keys, and more. It allows you to keep encrypted data in playbooks or roles, providing security without exposing sensitive information.


27. How can you create and use Ansible Vault?

Answer: You can create an encrypted file using ansible-vault create. To encrypt an existing file, use ansible-vault encrypt. To decrypt and edit a file, use ansible-vault edit. Execute playbooks with encrypted data using --ask-vault-pass.


28. Explain Ansible Tower and its features.

Answer: Ansible Tower is a web-based interface and automation tool for managing Ansible automation. It provides features like role-based access control, scheduling, notifications, and more to enhance the use of Ansible in enterprise environments.


29. How can you manage secrets and credentials in Ansible Tower?

Answer: Ansible Tower provides credential management to securely store and manage sensitive data. You can create and store SSH keys, passwords, and other credentials, and then reference them in playbooks and inventories.


30. What is Ansible Galaxy and how does it work?

Answer: Ansible Galaxy is a platform for sharing, discovering, and collaborating on Ansible roles. It hosts pre-built roles that you can reuse in your playbooks. Roles can be easily installed using the ansible-galaxy command.


31. How do you define variables in Ansible playbooks?

Answer: You can define variables in playbooks using the vars keyword within a playbook or at a more global level using the vars_files directive. You can also define variables in inventory files or in separate variable files.


32. Explain the concept of dynamic inventory in Ansible.

Answer: Dynamic inventory allows Ansible to fetch inventory data from external sources like cloud providers, APIs, databases, etc. This enables automatic updates to the inventory without manually editing files. Common dynamic inventory scripts include AWS EC2, OpenStack, and more.


33. What is a callback plugin in Ansible?

Answer: Callback plugins in Ansible provide a way to customize and capture events during playbook runs. They can be used to generate custom output, notifications, and integrate with external systems.


34. How can you enable and use callback plugins in Ansible?

Answer: Callback plugins can be enabled by setting the callback_whitelist configuration in the Ansible configuration file. You can use built-in callback plugins or create custom ones to suit your needs.


35. Explain how Ansible handles errors and failures in playbooks.

Answer: Ansible provides various strategies to handle errors and failures. These include ignore_errors to continue with the playbook, failed_when to specify custom failure conditions, and block to group tasks for error handling.


36. What is the purpose of Ansible Playbook Roles?

Answer: Ansible roles are a way to organize playbooks and share tasks, variables, and files. Roles enhance code reusability, modularity, and maintainability by separating concerns and promoting best practices.


37. How can you create and use Ansible Playbook Roles?

Answer: Roles are created using the ansible-galaxy command or manually structured directories. Once created, roles can be included in playbooks using the roles directive. Roles contain tasks, variables, files, and more.


38. Explain Ansible Facts and how they are gathered.

Answer: Ansible Facts are system information gathered by Ansible from managed hosts. Facts provide details about the hostโ€™s hardware, software, network, and more. Facts are automatically collected by Ansible and can be referenced in playbooks.


39. How can you gather and use Ansible Facts in playbooks?

Answer: Ansible Facts are automatically collected when playbooks run. You can access them using variables like ansible_hostname, ansible_distribution, etc. Facts can be used to conditionally execute tasks based on the hostโ€™s characteristics.


40. Describe Ansible Galaxyโ€™s role versioning and dependencies.

Answer: Ansible Galaxy roles can have multiple versions. Roles can specify dependencies on other roles, ensuring the required roles are installed automatically. This simplifies playbook development by managing complex role relationships.


41. How does Ansible handle idempotence, and why is it important?

Answer: Ansible tasks are designed to be idempotent, meaning they can be run multiple times without changing the result. This ensures that running a playbook multiple times wonโ€™t cause unexpected changes or failures, promoting consistent and reliable automation.


42. Explain Ansibleโ€™s โ€œwhenโ€ statement and its usage.

Answer: The โ€œwhenโ€ statement is used to conditionally execute tasks based on a specific condition or variable value. It allows you to control task execution flow based on runtime conditions, making playbooks more flexible and adaptable.


43. What is Ansibleโ€™s โ€œnotifyโ€ mechanism, and how is it used?

Answer: Ansibleโ€™s โ€œnotifyโ€ mechanism is used to trigger handlers. Handlers are tasks that are only executed when notified by another task. This ensures that certain tasks, like service restarts, are only performed when necessary.


44. How can you manage packages using Ansible?

Answer: Ansible provides modules like yum, apt, and dnf to manage packages on different Linux distributions. You can use these modules to install, update, or remove packages across multiple hosts.


45. Explain Ansibleโ€™s โ€œdelegate_toโ€ directive and its purpose.

Answer: The โ€œdelegate_toโ€ directive is used to delegate a task to a specific host or group. This is useful when tasks need to be executed on a different host than the one being managed by the playbook.


46. What is Ansibleโ€™s strategy for handling configuration drift?

Answer: Ansibleโ€™s idempotent nature helps combat configuration drift. Ansible ensures the desired state is achieved, detecting any differences and making necessary changes to bring the managed systems back to the desired state.


47. Describe Ansibleโ€™s โ€œregisterโ€ variable and its usage.

Answer: The โ€œregisterโ€ variable is used to capture the output of a task and store it in a variable. This captured data can be used in subsequent tasks for analysis, conditionals, or to display in the playbookโ€™s output.


48. How can you manage users and groups using Ansible?

Answer: Ansible provides modules like user and group to manage user and group accounts. You can use these modules to create, modify, or delete users and groups on remote hosts.


49. Explain Ansibleโ€™s โ€œblockinfileโ€ module and its purpose.

Answer: The โ€œblockinfileโ€ module is used to insert or update blocks of text in files. Itโ€™s particularly useful when you want to manage specific sections of configuration files without affecting the rest of the content.


50. What are Ansible Tags, and how can they be used?

Answer: Ansible Tags are labels applied to tasks or plays. They allow you to selectively run or skip specific tasks by specifying tags during playbook execution. Tags provide granular control over which tasks are executed.


51. How can you manage configuration files using Ansible?

Answer: Ansible provides modules like template and lineinfile to manage configuration files. The template module uses Jinja2 templates to generate configuration files, while the lineinfile module updates specific lines in files.


52. Explain Ansibleโ€™s โ€œwait_forโ€ module and its usage.

Answer: The โ€œwait_forโ€ module is used to wait for a specific condition to be met on a remote host before proceeding with the playbook. Itโ€™s useful for tasks like waiting for a service to start or a port to be available.


53. What is Ansibleโ€™s โ€œfailโ€ module used for?

Answer: The โ€œfailโ€ module is used to intentionally fail a playbook task with a custom error message. It can be useful for implementing certain conditions or validations within playbooks.


54. How can you manage SSH keys using Ansible?

Answer: Ansible provides modules like authorized_key and ssh_keypair to manage SSH keys. You can use these modules to add or remove SSH keys from user accounts for secure access.


55. Explain Ansibleโ€™s โ€œec2โ€ module and its purpose.

Answer: The โ€œec2โ€ module is used to manage Amazon EC2 instances. It allows you to create, terminate, start, stop, and manage various aspects of EC2 instances directly from Ansible playbooks.


56. How can you manage Docker containers using Ansible?

Answer: Ansible provides the โ€œdocker_containerโ€ module to manage Docker containers. You can use this module to create, start, stop, and manage Docker containers on remote hosts.


57. What is Ansibleโ€™s โ€œcronโ€ module used for?

Answer: The โ€œcronโ€ module is used to manage cron jobs on remote hosts. You can use it to create, modify, or delete cron jobs for scheduled tasks.


58. Explain Ansibleโ€™s โ€œrebootโ€ module and its usage.

Answer: The โ€œrebootโ€ module is used to reboot remote hosts. It can be helpful when changes made by playbooks require a system reboot to take effect.


59. How can you manage firewalls using Ansible?

Answer: Ansible provides modules like ufw, firewalld, and iptables to manage firewalls on different Linux distributions. These modules help you define rules and manage firewall settings.


60. What is Ansibleโ€™s โ€œshellโ€ module, and when should you use it?

Answer: The โ€œshellโ€ module is used to execute shell commands on remote hosts. However, itโ€™s recommended to use specific Ansible modules for tasks whenever possible, as they provide better idempotence and integration.


61. Explain the concept of Ansible roles and its benefits.

Answer: Ansible roles are a way to organize and package playbooks, variables, and other resources. Roles promote modularity, reusability, and separation of concerns, making it easier to manage complex automation projects.


62. How can you manage network devices using Ansible?

Answer: Ansible provides modules like ios_command, nxos_command, and more to manage network devices. You can use these modules to automate tasks on network equipment like routers and switches.


63. Explain the use of Ansibleโ€™s โ€œincludeโ€ and โ€œimport_playbookโ€ statements.

Answer: The โ€œincludeโ€ statement is used to include external YAML files within playbooks, while โ€œimport_playbookโ€ is used to import other playbooks. These statements help organize and reuse playbook components.


64. How can you manage environment variables using Ansible?

Answer: Ansible provides the โ€œenvironmentโ€ keyword to set environment variables for tasks. You can use it to define environment variables that are required for specific tasks.


65. Explain the use of Ansibleโ€™s โ€œwith_itemsโ€ and โ€œloopโ€ constructs.

Answer: โ€œwith_itemsโ€ and โ€œloopโ€ constructs are used to iterate over a list of items within tasks. They allow you to perform the same task for each item in the list, such as installing multiple packages.


66. How can you execute tasks conditionally in Ansible playbooks?

Answer: Ansible provides various conditional statements like โ€œwhenโ€, โ€œfailed_whenโ€, and โ€œchanged_whenโ€ to control task execution based on conditions. These statements help customize playbook behavior.


67. What is Ansible Towerโ€™s REST API, and how can it be used?

Answer: Ansible Towerโ€™s REST API allows you to programmatically interact with Tower, creating and managing jobs, inventories, and more. Itโ€™s useful for integrating Tower with other tools and systems.


68. How can you manage Windows systems using Ansible?

Answer: Ansible provides modules like win_command, win_copy, and more to manage Windows systems. You can use these modules to automate tasks on Windows servers and workstations.


69. Explain the concept of Ansible Playbook Roles.

Answer: Ansible Playbook Roles are a way to encapsulate playbook components into reusable packages. Roles consist of predefined directories containing tasks, variables, templates,

and more, making playbooks modular and easier to manage.


70. How can you manage secrets and sensitive data in Ansible?

Answer: Ansible provides the โ€œansible-vaultโ€ tool to encrypt sensitive data like passwords and keys. You can encrypt files and use them in playbooks while ensuring data security.


71. What is Ansible Galaxy, and how can it be used?

Answer: Ansible Galaxy is a platform for sharing, finding, and reusing Ansible roles. It provides a repository of roles created by the community, making it easier to incorporate existing solutions into your automation projects.


72. Explain Ansibleโ€™s โ€œgather_factsโ€ module and its purpose.

Answer: The โ€œgather_factsโ€ module collects information about remote hosts, such as network details, hardware, and more. This information can be accessed as facts in playbooks, enabling dynamic configuration based on the target hostโ€™s characteristics.


73. How can you manage variables in Ansible?

Answer: Ansible allows you to define variables within playbooks, inventory files, and roles. Variables can hold data that can be used for customization and parameterization of playbooks.


74. Explain the use of Ansibleโ€™s โ€œdelegate_toโ€ directive.

Answer: The โ€œdelegate_toโ€ directive is used within a task to specify a different host to execute the task on. This is helpful when a task needs to run on a different host than the host being targeted by the play.


75. How can you manage package repositories using Ansible?

Answer: Ansible provides modules like yum_repository and apt_repository to manage package repositories. These modules enable you to add, update, or remove software repositories on remote hosts.


76. What is Ansible Tower, and how does it differ from Ansible?

Answer: Ansible Tower is a web-based interface and automation orchestration tool for Ansible. It provides a centralized platform for managing and monitoring automation, with features like job scheduling, user access control, and more.


77. Explain Ansibleโ€™s โ€œinclude_varsโ€ module and its usage.

Answer: The โ€œinclude_varsโ€ module is used to load variables from external files into playbooks. This is helpful for separating variable definitions from playbooks, making them more organized and reusable.


78. How can you manage Windows Active Directory using Ansible?

Answer: Ansible provides modules like win_domain and win_user to manage Windows Active Directory. You can use these modules to automate tasks related to domain management and user accounts.


79. Explain the use of Ansibleโ€™s โ€œset_factโ€ module.

Answer: The โ€œset_factโ€ module is used to set custom facts within playbooks. These facts can then be used later in the playbook, providing dynamic data that changes during playbook execution.


80. How can you manage Docker images using Ansible?

Answer: Ansible provides the โ€œdocker_imageโ€ module to manage Docker images. You can use this module to build, pull, and manage Docker images on remote hosts.


81. What is the purpose of Ansible Facts?

Answer: Ansible Facts are pieces of information gathered from remote hosts during playbook execution. These facts can be accessed as variables in playbooks, enabling dynamic and data-driven automation.


82. How can you manage AWS resources using Ansible?

Answer: Ansible provides modules like ec2, s3, and more to manage AWS resources. You can use these modules to automate tasks like provisioning EC2 instances, managing S3 buckets, and more.


83. Explain Ansibleโ€™s โ€œdebugโ€ module and its usage.

Answer: The โ€œdebugโ€ module is used to print debug information during playbook execution. Itโ€™s useful for troubleshooting and understanding the values of variables and expressions within playbooks.


84. How can you manage virtual machines using Ansible?

Answer: Ansible provides modules like virt to manage virtual machines on different virtualization platforms. You can use these modules to automate tasks like creating, starting, and stopping VMs.


85. What is the purpose of Ansibleโ€™s โ€œnotifyโ€ directive?

Answer: The โ€œnotifyโ€ directive is used to trigger handler tasks when specific tasks report changes. Handlers are tasks that are executed only when notified by other tasks, ensuring efficient playbook execution.


86. How can you manage Kubernetes resources using Ansible?

Answer: Ansible provides the โ€œk8sโ€ module to manage Kubernetes resources. You can use this module to automate tasks like deploying, updating, and managing Kubernetes pods, services, and more.


87. Explain Ansibleโ€™s โ€œadd_hostโ€ module and its purpose.

Answer: The โ€œadd_hostโ€ module is used to dynamically add hosts to an inventory during playbook execution. This is useful when you need to work with hosts that arenโ€™t defined in the static inventory.


88. How can you manage MySQL databases using Ansible?

Answer: Ansible provides modules like mysql_db and mysql_user to manage MySQL databases and users. You can use these modules to automate tasks like creating databases, granting privileges, and

more.


89. What is Ansible Towerโ€™s role-based access control (RBAC) feature?

Answer: Ansible Towerโ€™s RBAC feature allows you to define and control user roles and permissions. This ensures that only authorized users can access and manage certain resources within Ansible Tower.


90. How can you manage firewalls using Ansible?

Answer: Ansible provides modules like ufw and iptables to manage firewalls on Linux systems. You can use these modules to automate tasks like configuring firewall rules and ensuring security.


91. Explain Ansibleโ€™s โ€œuntilโ€ directive and its usage.

Answer: The โ€œuntilโ€ directive is used within a task to repeatedly run the task until a specific condition is met. This is helpful for tasks that need to wait for a specific state before proceeding.


92. How can you manage Azure resources using Ansible?

Answer: Ansible provides modules like azure_rm_resourcegroup and azure_rm_virtualmachine to manage Azure resources. You can use these modules to automate tasks like provisioning VMs, managing resource groups, and more.


93. What is the purpose of Ansibleโ€™s โ€œignore_errorsโ€ directive?

Answer: The โ€œignore_errorsโ€ directive is used to continue playbook execution even if a task reports an error. This can be useful when you want to handle errors later in the playbook.


94. How can you manage network devices using Ansible?

Answer: Ansible provides modules like ios_command and nxos_command to manage network devices from various vendors. You can use these modules to automate tasks like configuring network settings.


95. Explain Ansibleโ€™s โ€œimport_roleโ€ module and its usage.

Answer: The โ€œimport_roleโ€ module is used to include roles in playbooks. Roles are a way to organize playbooks and share reusable components across different projects.


96. How can you manage Git repositories using Ansible?

Answer: Ansible provides modules like git to manage Git repositories. You can use these modules to automate tasks like cloning repositories, checking out branches, and more.


97. What is Ansible Vault and how can it be used?

Answer: Ansible Vault is a feature for encrypting sensitive data like passwords and keys in playbooks. It helps ensure that sensitive information is stored securely and can only be decrypted by authorized users.


98. How can you manage log files using Ansible?

Answer: Ansible provides modules like lineinfile and replace to manage log files. You can use these modules to automate tasks like searching for specific lines, modifying contents, and more.


99. Explain Ansibleโ€™s โ€œfailโ€ module and its usage.

Answer: The โ€œfailโ€ module is used to intentionally fail a playbook with a custom error message. This can be useful for enforcing certain conditions or stopping playbook execution based on specific criteria.


100. How can you manage SSH keys using Ansible?

Answer: Ansible provides modules like authorized_key to manage SSH keys on remote hosts. You can use these modules to automate tasks like adding and removing SSH keys for user authentication.