ngine_io.cloudstack.instance – Apache CloudStack instance inventory source
Note
This plugin is part of the ngine_io.cloudstack collection (version 2.2.2).
You might already have this collection installed if you are using the ansible
package. It is not included in ansible-core
. To check whether it is installed, run ansible-galaxy collection list
.
To install it, use: ansible-galaxy collection install ngine_io.cloudstack
.
To use it in a playbook, specify: ngine_io.cloudstack.instance
.
New in version 2.1.0: of ngine_io.cloudstack
Synopsis
- Get inventory hosts from Apache CloudStack
- Allows filtering and grouping inventory hosts.
- Uses an YAML configuration file ending with either cloudstack-instances.yml or cloudstack-instances.yaml to set parameter values (also see examples).
Requirements
The below requirements are needed on the local controller node that executes this inventory.
- python >= 2.6
- cs >= 0.9.0
Parameters
Parameter | Choices/Defaults | Configuration | Comments |
---|---|---|---|
api_http_method string |
| env:CLOUDSTACK_METHOD | HTTP method used to query the API endpoint. If not given, the CLOUDSTACK_METHOD env variable is considered. |
api_key string / required | env:CLOUDSTACK_KEY | API key of the CloudStack API. If not given, the CLOUDSTACK_KEY env variable is considered. | |
api_secret string / required | env:CLOUDSTACK_SECRET | Secret key of the CloudStack API. If not set, the CLOUDSTACK_SECRET env variable is considered. | |
api_timeout integer | Default: 10 | env:CLOUDSTACK_TIMEOUT | HTTP timeout in seconds. If not given, the CLOUDSTACK_TIMEOUT env variable is considered. |
api_url string / required | env:CLOUDSTACK_ENDPOINT | URL of the CloudStack API e.g. https://cloud.example.com/client/api. If not given, the CLOUDSTACK_ENDPOINT env variable is considered. | |
api_verify_ssl_cert string | env:CLOUDSTACK_VERIFY | Verify CA authority cert file. If not given, the CLOUDSTACK_VERIFY env variable is considered. | |
compose dictionary | Default: {} | Create vars from jinja2 expressions. | |
filter_by_domain string | Only return instances in the provided domain. | ||
filter_by_project string | Only return instances in the provided project. | ||
filter_by_vpc string | Only return instances in the provided VPC. | ||
filter_by_zone string | Only return instances in the provided zone. | ||
groups dictionary | Default: {} | Add hosts to group based on Jinja2 conditionals. | |
hostname string |
| Field to match the hostname. Note v4_main_ip corresponds to the primary ipv4address of the first nic adapter of the instance. | |
keyed_groups list / elements=string | Default: [] | Add hosts to group based on the values of a variable. | |
leading_separator boolean added in 2.11 of ansible.builtin |
| Use in conjunction with keyed_groups. By default, a keyed group that does not have a prefix or a separator provided will have a name that starts with an underscore. This is because the default prefix is "" and the default separator is "_". Set this option to False to omit the leading underscore (or other separator) if no prefix is given. If the group name is derived from a mapping the separator is still used to concatenate the items. To not use a separator in the group name at all, set the separator for the keyed group to an empty string instead. | |
plugin string / required |
| Token that ensures this is a source file for the 'instance' plugin. | |
strict boolean |
| If yes make invalid entries a fatal error, otherwise skip and continue.Since it is possible to use facts in the expressions they might not always be available and we ignore those errors by default. | |
use_extra_vars boolean added in 2.11 of ansible.builtin |
| ini entries: [inventory_plugins] env:ANSIBLE_INVENTORY_USE_EXTRA_VARS | Merge extra vars into the available variables for composition (highest precedence). |
Notes
Note
- A detailed guide about cloudstack modules can be found in the CloudStack Cloud Guide.
- This module supports check mode.
Examples
# inventory_cloudstack.yml file in YAML format # Example command line: ansible-inventory --list -i cloudstack-instances.yml plugin: ngine_io.cloudstack.instance # Use the default ip as ansible_host hostname: v4_default_ip # Return only instances related to the VPC vpc1 and in the zone EU filter_by_vpc: vpc1 filter_by_zone: EU # Group instances with a disk_offering as storage # Create a group dmz for instances connected to the dmz network groups: storage: disk_offering is defined dmz: "'dmz' in networks" # Group the instances by network, with net_network1 as name of the groups # Group the instanes by custom tag sla, groups like sla_value for tag sla keyed_groups: - prefix: net key: networks - prefix: sla key: tags.sla
Authors
- Rafael del Valle (@rvalle)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/ngine_io/cloudstack/instance_inventory.html