I found the error. I had to enable the auto and script plugin.

Endre Szabo schrieb am Freitag, 12. Januar 2024 um 14:23:24 UTC+1:

> You don't need to have that Yaml file parsed/verified from within your 
> plugin.
>
> On Fri, Jan 12, 2024 at 04:50:01-0800, Kai Pistorius wrote:
> > I am trying to develop a Ansible Inventory Plugin based on some examples 
> I 
> > found on Github.
> > This is my Yaml File:
> > ---
> > plugin: oracle_inventory
> > oem_db_server: myoem.domain.com
> > oem_db_port: 1521
> > oem_db_sid: OEM
> > oem_schema_owner: SYSMAN
> > oem_owner_password: password
> > oem_target_read_user: READ_ONLY_USER
> > oem_target_read_password: password
> > And this is my implementation of the Plugin:
> > from __future__ import (absolute_import, division, print_function)
> > 
> > from loguru import logger
> > 
> > __metaclass__ = type
> > 
> > DOCUMENTATION = r'''
> > name: oracle_inventory
> > plugin_type: inventory
> > short_description: Returns Ansible inventory from Oracle databases 
> > description: Returns Ansible inventory from Oracle databases which are 
> > registered in Oracle Enterprise Manager (OEM)
> > options:
> > plugin:
> > description: Name of the plugin
> > required: true
> > choices: ['oracle_inventory']
> > oem_db_server:
> > description: The OEM repository database server
> > required: true
> > oem_db_port:
> > description: The Port of the OEM repository database
> > required: true
> > oem_db_sid:
> > description: The ORACLE_SID of the OEM repository database
> > required: true
> > oem_schema_owner:
> > description: The owner of the OEM repository schema
> > required: true
> > oem_owner_password:
> > description: The password of the OEM repository schema owner
> > required: true
> > oem_target_read_user:
> > description: The user which is allowed to query the host, 
> > agent, and database OEM targets and its properties
> > required: true
> > oem_target_read_password:
> > description: The password of the OEM target read user
> > required: true
> > '''
> > 
> > from ansible.plugins.inventory import BaseInventoryPlugin
> > from ansible.errors import AnsibleError, AnsibleParserError
> > 
> > 
> > class InventoryModule(BaseInventoryPlugin):
> > NAME = 'oracle_inventory'
> > 
> > def __init__(self):
> > super(InventoryModule, self).__init__()
> > 
> > def verify_file(self, path):
> > '''Return true/false if this is possibly a valid file for this 
> > plugin to consume
> > '''
> > valid = False
> > if super(InventoryModule, self).verify_file(path):
> > logger.info(path)
> > if path.endswith(('oracle_inventory.yaml',
> > 'oracle_inventory.yml')):
> > valid = True
> > return valid
> > 
> > def parse(self, inventory, loader, path, cache):
> > '''Return dynamic inventory from source '''
> > super(InventoryModule, self).parse(inventory, loader, path, cache)
> > 
> > try:
> > pass
> > # self.oem_db_server = self.get_option("oem_db_server")
> > # self.oem_db_sid = self.get_option("oem_db_port")
> > # self.oem_db_port = self.get_option("oem_db_port")
> > # self.oem_schema_owner = self.get_option("oem_schema_owner")
> > # self.oem_schema_password = 
> > self.get_option("oem_owner_password")
> > # self.oem_target_reader_user = 
> > self.get_option("oem_target_read_user")
> > # self.oem_target_reader_password = 
> > self.get_option("oem_target_read_password")
> > except Exception as e:
> > raise AnsibleError(f"Options required: {e}")
> > self._populate()
> > 
> > def _populate(self):
> > '''Return the hosts and groups'''
> > self.inventory.add_group("MY_DEPARTMENT")
> > self.inventory.add_host(host = "myserver.domain", group=
> > "MY_DEPARTMENT")
> > self.inventory.set_variable("myserver.domain", 'ansible_host', 
> > "myserver.domain")
> > 
> > 
> > Both files are located in /home/kai/inventory_plugins
> > 
> > When I execute 
> > ansible-inventory -vvv -i oracle_inventory.yml --list
> > 
> > I get this warnings:
> > kai@myserver:/home/kai/inventory_plugins:ansible-inventory -vvv -i 
> > oracle_inventory.yml --list
> > ansible-inventory [core 2.16.2]
> > config file = /etc/ansible/ansible.cfg
> > configured module search path = ['/home/kai/.ansible/plugins/modules', 
> > '/usr/share/ansible/plugins/modules']
> > ansible python module location = 
> > /usr/local/lib/python3.11/site-packages/ansible
> > ansible collection location = 
> > /home/kai/.ansible/collections:/usr/share/ansible/collections
> > executable location = /usr/local/bin/ansible-inventory
> > python version = 3.11.0 (main, Apr 4 2023, 13:20:21) [GCC 4.8.5] 
> > (/usr/local/bin/python3.11)
> > jinja version = 3.1.2
> > libyaml = True
> > Using /etc/ansible/ansible.cfg as config file
> > redirecting (type: inventory) ansible.builtin.virtualbox to 
> > community.general.virtualbox
> > host_list declined parsing 
> /home/kai/inventory_plugins/oracle_inventory.yml 
> > as it did not pass its verify_file() method
> > ansible_collections.community.general.plugins.inventory.virtualbox 
> declined 
> > parsing /home/kai/inventory_plugins/oracle_inventory.yml as it did not 
> pass 
> > its verify_file() method
> > [WARNING]: * Failed to parse 
> > /home/kai/inventory_plugins/oracle_inventory.yml with yaml plugin: 
> Plugin 
> > configuration YAML file, not YAML inventory
> > File 
> > "/usr/local/lib/python3.11/site-packages/ansible/inventory/manager.py", 
> > line 293, in parse_source
> > plugin.parse(self._inventory, self._loader, source, cache=cache)
> > File 
> > 
> "/usr/local/lib/python3.11/site-packages/ansible/plugins/inventory/yaml.py", 
>
> > line 114, in parse
> > raise AnsibleParserError('Plugin configuration YAML file, not YAML 
> > inventory')
> > [WARNING]: * Failed to parse 
> > /home/kai/inventory_plugins/oracle_inventory.yml with constructed 
> plugin: 
> > Incorrect plugin name in file: oracle_inventory
> > File 
> > "/usr/local/lib/python3.11/site-packages/ansible/inventory/manager.py", 
> > line 293, in parse_source
> > plugin.parse(self._inventory, self._loader, source, cache=cache)
> > File 
> > 
> "/usr/local/lib/python3.11/site-packages/ansible/plugins/inventory/constructed.py",
>  
>
> > line 142, in parse
> > self._read_config_data(path)
> > File 
> > 
> "/usr/local/lib/python3.11/site-packages/ansible/plugins/inventory/__init__.py",
>  
>
> > line 235, in _read_config_data
> > raise AnsibleParserError("Incorrect plugin name in file: %s" % 
> > config.get('plugin', 'none found'))
> > [WARNING]: Unable to parse 
> /home/kai/inventory_plugins/oracle_inventory.yml 
> > as an inventory source
> > [WARNING]: No inventory was parsed, only implicit localhost is available
> > {
> > "_meta": {
> > "hostvars": {}
> > },
> > "all": {
> > "children": [
> > "ungrouped"
> > ]
> > }
> > }
> > 
> > Could anyone help me solving this?
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups "Ansible Project" group.
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to [email protected].
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/ansible-project/796159e7-e791-43da-b486-096213a2cb7cn%40googlegroups.com
> .
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/964bb1af-e806-49fc-9ec2-4cc140ab166en%40googlegroups.com.

Reply via email to