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
.