Nautobot est une plateforme utilisée en tant que Source de Vérité et d’automatisation réseau extensible et flexible. Que ce soit pour mettre en place une automatisation Python ou Ansible, il est possible et judicieux d’utiliser Nautobot en tant qu’inventory.
Pour programmer en Python, l’utilisation du Framework Nornir est un standard pour l’automatisation réseau. Il existe le plugin nornir-nautobot qui permet de faciliter la connexion à la Source de Vérité et de filtrer les équipements sur lesquels on souhaite travailler.
#!/usr/bin/env python
from nornir import InitNornir
from nornir.core.task import Task, Result
from nornir_utils.plugins.functions import print_result
def hello_device(task: Task) -> Result:
return Result(host=task.host, result=f"{task.host.name} says hello!")
def main():
nr = InitNornir(
runner={
"plugin": "threaded",
"options": {
"num_workers": 100,
},
},
inventory={
"plugin": "NautobotInventory",
"options": {
"nautobot_url": "http://192.168.105.29:8000",
"nautobot_token": "cc80ed4727abd39e8c35c877e1b921754597b18b",
"filter_parameters": {"site": "cdg"},
"ssl_verify": False,
},
},
)
# Print out the number of hosts corresponding to filter
print(f"Hosts found: {len(nr.inventory.hosts)}")
# Print out the keys for the inventory
print(nr.inventory.hosts.keys())
# Run nornir task
result = nr.run(task=hello_device)
print_result(result)
if __name__ == "__main__":
main()
Pour ceux qui préfèrent utiliser Ansible, il existe également une Collection nommée nautobot-ansible qui facile l’utilisation de la Source de Vérité Nautobot en tant qu’inventory.
--- plugin: networktocode.nautobot.inventory api_endpoint: http://192.168.105.29:8000 token: cc80ed4727abd39e8c35c877e1b921754597b18b validate_certs: False config_context: False group_by: - sites query_filters: - site: cdg compose: ansible_network_os: platform.slug
[defaults] inventory = ./inventory.yml host_key_checking = False interpreter_python=auto roles_path = roles.galaxy:roles collections_paths = collections.galaxy:collections
Il est possible de contrôler le bon fonctionnement de l’inventory avec la commande ansible-inventory --list ou ansible-inventory --graph.



