per-lind 42a5cb5601 Fix inventory plugin on Ansible 2.11
The bug here is that the openstack inventory plugin will no longer work with Ansible 2.11. You can test an inventory file (named openstack.yml) with either of these syntaxes:

plugin: openstack
plugin: openstack.cloud.openstack
The first option errors due to custom validation present in openstack's own inventory plugin:

[WARNING]: * Failed to parse /home/alancoding/repos/awx/testing/openstack/openstack.yml with auto plugin: plugin
config file, but not for us: openstack

Because this was written back before FQCNs (fully-qualified collection names) were a thing. Before it migrated to a collection, "openstack" was the expectation, but then self.NAME for the inventory plugin changed to "openstack.cloud.openstack", meaning that "openstack" by itself would no longer work. That made sense until Ansible core introduced routing where it would recognize "openstack" and route it to "openstack.cloud.openstack" for purposes of the "auto" inventory plugin routing. See the routing entry at:

2cbfd1e350/lib/ansible/config/ansible_builtin_runtime.yml (L9548)

The second option errors with:

[WARNING]: * Failed to parse /home/alancoding/repos/awx/testing/openstack_fqcn/openstack.yml with auto plugin:
Invalid value "openstack.cloud.openstack" for configuration option "plugin_type: inventory plugin:
ansible_collections.openstack.cloud.plugins.inventory.openstack setting: plugin ", valid values are: ['openstack']

This is due to Ansible core enforcing stricter validation of options. Merged in this PR ansible/ansible#73162

That broke many inventory plugins because the practice before the migration to collections was to list the name in the choices for the "plugin" option. This has been fixed in other collections.

Because neither of these options work, the inventory plugin is not usable in recent Ansible versions.

Suggested patch here:

https://github.com/AlanCoding/ansible-collections-openstack/compare/fqcn_name?expand=1

This allows the user to use either syntax, because there's an argument for the validity of both.

credit to https://github.com/AlanCoding

Change-Id: Ie1211796929d0bc12c7a48764bd8efc7defdd2d7
2021-05-25 19:42:04 +02:00
2021-04-08 20:03:26 +03:00
2021-05-18 16:30:01 +00:00
2020-06-23 21:50:43 +03:00
2021-02-15 20:49:37 +00:00
2021-04-08 00:19:24 +03:00
2020-07-26 11:49:18 +03:00
2019-09-25 15:21:42 +00:00
2021-05-11 12:16:37 +03:00
2021-04-08 20:03:26 +03:00
2020-05-13 08:07:01 -05:00
2020-03-05 15:08:38 +00:00
2021-04-09 00:23:25 +03:00
2021-02-15 19:50:25 +01:00
2020-06-04 14:23:23 +00:00
2021-04-08 00:19:24 +03:00

OpenDev Zuul Builds - Ansible Collection OpenStack

Ansible Collection: openstack.cloud

This repo hosts the openstack.cloud Ansible Collection.

The collection includes the Openstack modules and plugins supported by Openstack community to help the management of Openstack infrastructure.

Installation and Usage

Installing dependencies

For using the Openstack Cloud collection firstly you need to install ansible and openstacksdk Python modules on your Ansible controller. For example with pip:

pip install ansible openstacksdk

OpenStackSDK has to be available to Ansible and to the Python interpreter on the host, where Ansible executes the module (target host). Please note, that under some circumstances Ansible might invoke a non-standard Python interpreter on the target host. Using Python version 3 is highly recommended for OpenstackSDK and strongly required from OpenstackSDK version 0.39.0.


NOTE

OpenstackSDK is better to be the last stable version. It should NOT be installed on Openstack nodes, but rather on operators host (aka "Ansible controller"). OpenstackSDK from last version supports operations on all Openstack cloud versions. Therefore OpenstackSDK module version doesn't have to match Openstack cloud version usually.


Installing the Collection from Ansible Galaxy

Before using the Openstack Cloud collection, you need to install the collection with the ansible-galaxy CLI:

ansible-galaxy collection install openstack.cloud

You can also include it in a requirements.yml file and install it through ansible-galaxy collection install -r requirements.yml using the format:

collections:
- name: openstack.cloud

Playbooks

To use a module from the Openstack Cloud collection, please reference the full namespace, collection name, and module name that you want to use:

---
- name: Using Openstack Cloud collection
  hosts: localhost
  tasks:
    - openstack.cloud.server:
        name: vm
        state: present
        cloud: openstack
        region_name: ams01
        image: Ubuntu Server 14.04
        flavor_ram: 4096
        boot_from_volume: True
        volume_size: 75

Or you can add the full namespace and collection name in the collections element:

---
- name: Using Openstack Cloud collection
  hosts: localhost
  collections:
    - openstack.cloud
  tasks:
    - server_volume:
        state: present
        cloud: openstack
        server: Mysql-server
        volume: mysql-data
        device: /dev/vdb

Contributing

For information on contributing, please see CONTRIBUTING

There are many ways in which you can participate in the project, for example:

We work with OpenDev Gerrit, pull requests submitted through GitHub will be ignored.

Testing and Development

If you want to develop new content for this collection or improve what is already here, the easiest way to work on the collection is to clone it into one of the configured COLLECTIONS_PATHS, and work on it there.

Testing with ansible-test

We use ansible-test for sanity:

tox -e linters

More Information

TBD

Communication

We have a dedicated Interest Group for Openstack Ansible modules. You can find other people interested in this in #openstack-ansible-sig on Freenode IRC.

License

GNU General Public License v3.0 or later

See LICENCE to see the full text.

Description
Ansible Modules Collection for using OpenStack
Readme 17 MiB
Languages
Python 99.3%
Shell 0.7%