mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-02 14:40:19 -07:00
inventory plugin docs (#42022)
* inventory plugin docs * added set options * minor wording and formatting fixes * changed headers to std as per #35520, also added to main readme * unified inventory plugin devel, referenced from generic plugin dev * fixed typos and update as per feedback
This commit is contained in:
parent
133b70ff45
commit
475abc0af7
5 changed files with 308 additions and 59 deletions
|
@ -146,14 +146,30 @@ class BaseInventoryPlugin(AnsiblePlugin):
|
|||
self.cache = None
|
||||
|
||||
def parse(self, inventory, loader, path, cache=True):
|
||||
''' Populates self.groups from the given data. Raises an error on any parse failure. '''
|
||||
''' Populates inventory from the given data. Raises an error on any parse failure
|
||||
:arg inventory: a copy of the previously accumulated inventory data,
|
||||
to be updated with any new data this plugin provides.
|
||||
The inventory can be empty if no other source/plugin ran successfully.
|
||||
:arg loader: a reference to the DataLoader, which can read in YAML and JSON files,
|
||||
it also has Vault support to automatically decrypt files.
|
||||
:arg path: the string that represents the 'inventory source',
|
||||
normally a path to a configuration file for this inventory,
|
||||
but it can also be a raw string for this plugin to consume
|
||||
:arg cache: a boolean that indicates if the plugin should use the cache or not
|
||||
you can ignore if this plugin does not implement caching.
|
||||
'''
|
||||
|
||||
self.loader = loader
|
||||
self.inventory = inventory
|
||||
self.templar = Templar(loader=loader)
|
||||
|
||||
def verify_file(self, path):
|
||||
''' Verify if file is usable by this plugin, base does minimal accessability check '''
|
||||
''' Verify if file is usable by this plugin, base does minimal accessability check
|
||||
:arg path: a string that was passed as an inventory source,
|
||||
it normally is a path to a config file, but this is not a requirement,
|
||||
it can also be parsed itself as the inventory data to process.
|
||||
So only call this base class if you expect it to be a file.
|
||||
'''
|
||||
|
||||
b_path = to_bytes(path, errors='surrogate_or_strict')
|
||||
return (os.path.exists(b_path) and os.access(b_path, os.R_OK))
|
||||
|
@ -168,7 +184,9 @@ class BaseInventoryPlugin(AnsiblePlugin):
|
|||
self.inventory.set_variable(host, k, variables[k])
|
||||
|
||||
def _read_config_data(self, path):
|
||||
''' validate config and set options as appropriate '''
|
||||
''' validate config and set options as appropriate
|
||||
:arg path: path to common yaml format config file for this plugin
|
||||
'''
|
||||
|
||||
config = {}
|
||||
try:
|
||||
|
@ -200,7 +218,10 @@ class BaseInventoryPlugin(AnsiblePlugin):
|
|||
cache_dir=options.get('cache_connection'))
|
||||
|
||||
def _consume_options(self, data):
|
||||
''' update existing options from file data'''
|
||||
''' update existing options from alternate configuration sources not normally used by Ansible.
|
||||
Many API libraries already have existing configuration sources, this allows plugin author to leverage them.
|
||||
:arg data: key/value pairs that correspond to configuration options for this plugin
|
||||
'''
|
||||
|
||||
for k in self._options:
|
||||
if k in data:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue