fabian
fabian

Reputation: 13

How to use inventory data on a single host in ansible

I get my network inventory for ansible dynamicly from the netbox plugin and I want to use this data to edit the /etc/hosts file and run a script on a special host (librenms) to add all the network devices there.

Has anyone an idea how to run a playbook only on the librenms host with the data of the netbox inventory plugin?

Here my inventory (the librenms host is not part of it)

plugin: netbox
api_endpoint: https://netbox.mydomain.com
token: abcdefghijklmopqrstuvwxyz
validate_certs: False
config_context: True
group_by:
  - device_roles
query_filters:
  - role: test-switch
  - has_primary_ip: True

Many, many thanks in advance!

Upvotes: 1

Views: 448

Answers (1)

Zeitounator
Zeitounator

Reputation: 44635

If the host you want to run the playbook on is not part of your dynamic inventory and at the same time you want to use variables defined in the dynamic inventory in a play for that host, you have to construct an "hybrid" inventory containing both your dynamic inventory ans other static entries.

This is covered in the documentation on inventories: Using multiple inventory sources.

Very basically you have two solutions:

  • Use two different inventories on the command line:
    ansible-playbook -i dynamic_inventory -i static_inventory your_playbook.yml
    
  • Create a compound inventory with different sources in a directory. See chapter "Aggregating inventory sources with a directory" in the above documentation.

Upvotes: 1

Related Questions