Ansible NMAP Inventory Source

One of the earliest and most adaptable connectivity techniques is NMAP. NMAP is used by the network management to find, examine, and trace the connections in a variety of scenarios. In this article, we learn how to configure, examine, and trace the target remote host so that we can build a connection between them.

The NMAP is one of the inventory sources in Ansible which means network mapper. In the Ansible platform, the NMAP is an easily accessible module in use for networking, exploring, monitoring, and vulnerability scanning. It can be used to scan the available networks and target remote hosts to determine their ports, services, and operating systems as well as to detect any potential security threats or vulnerabilities. The inventory NMAP also offers features such as host discovery, version detection, OS detection, and network mapping, making it a versatile tool for network administrators and security professionals. As a network administrator or security professional, managing and maintaining a large network can be a daunting task. With the ever-growing number of devices and systems, it is important to have an efficient and automated system in place to manage and monitor the network. This is where Ansible and NMAP come into play. Ansible is a powerful open-source IT automation platform that can be used to manage and configure the network devices, servers, and applications.

Contrarily, the NMAP module is an extremely popular tool for network investigation and vulnerability scanning. When used together, Ansible and NMAP can provide a powerful solution to automate the network management tasks easily.

Prerequisites of Utilizing the NMAP Inventory in Ansible

Make sure you always had the requirements before you begin to utilize the NMAP inventory if you are going to follow through with the NMAP lesson:

  • Version: We utilize Ansible version 2.9 so that we can easily utilize the network mapper inventory plugin in Ansible.
  • Ansible Controller: For it to make changes, we need a controlling server for Ansible. In this case, we use Ansible as a controller with the IP address of to configure the network of the target hosts.
  • Remote Host: We must have them connect with the remote servers. Furthermore, we use the host in this instance as a target remote server for the duration of the operation.
  • Installation: To begin using the NMAP inventory plugin in Ansible, we first need to install the plugin in the Ansible controller server as well as in the target remote servers. We need to configure the NMAP as a dynamic inventory for Ansible. This can be done by creating a script that uses NMAP to scan the network and generate an inventory of active hosts and their attributes. The script can then be used as the inventory source for Ansible.
  • NMAP Inventory: Once the NMAP script is set up, we can use it as the inventory source for Ansible. To do this, simply specify the script as the inventory file when executing the Ansible commands.

In this article, we go through the process of setting up the NMAP as a dynamic inventory for Ansible and demonstrate how it can be used to automate the network management tasks.


Now, let’s start implementing the very first example in the Ansible tool so that we can understand the functionality and implementation of the network mapper plugin in Ansible. To implement the NMAP plugin in Ansible, we first need to create a playbook so that we can configure the tasks in the target remote hosts devices. The following is the statement that we use to create the playbook in Ansible:

[root@master ansible]# nano nmap.yaml


Write the previous statement in the Ansible tool terminal and press the enter button. Now, the playbook is created and opened into a new prompt terminal named “nmap” in Ansible. Initially, the NMAP playbook is empty since we created a new playbook for this article. Now, let us start writing the script in the NMAP playbook:

plugin: nmap


strict: False

ipv4: yes

ports: no #disable scanning for open ports


Since we use the NMAP inventory plugin for this tutorial, we first provide the name of the plug-in that we utilize. Next, we provide the IP address or the name of the target remote host in the “address” parameter. We use the IP address of the target remote host which is In the next line, we use the “strict” parameter. We use the strict parameters because we type the wrong statement or press the wrong button when we sometimes write the statements in the playbook. Because of that, the ansible tool uses the “strict” parameter that shows the Boolean value in return. It shows the true value if all the statements in the terminal are written correctly. It generates the false Boolean value if the statements are invalid and shows the errors in the terminal. We can also use the fact expression for this. But the problem is that it does not always work correctly and sometimes, it also ignores the invalid statement errors by default. Next, we need an internet protocol so that we can easily connect to the target remote hosts that are available in the network. Here, we use the fourth version of the internet protocol which means IPv4 to connect with the host. In the end, we pass the “no” value to the port parameter of Ansible so that the network does not scan the available open ports.

We write all the required statements in the playbook. Now, close the playbook by pressing the ctrl+x. Then, write the following command to run the NMAP playbook:

[root@master ansible]# ansible-inventory -i nmap.yaml --list


The following is the desired output of the previously-mentioned command:

    "_meta": {
        "hostvars": {
            "": {
                "ip": ""
    "all": {
        "children": [
    "ungrouped": {
        "hosts": [



We covered what NMAP in Ansible is in this course, as well as how to use the NMAP plugin in Ansible. We talk about the prerequisites of using the NMAP plugin in Ansible. Finally, we added the example so that the users could quickly comprehend how the NMAP plugin functions.

About the author

Kalsoom Bibi

Hello, I am a freelance writer and usually write for Linux and other technology related content