ngine_io.cloudstack.instance inventory – Apache CloudStack instance inventory source
Note
This inventory plugin is part of the ngine_io.cloudstack collection (version 2.5.0).
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
.
You need further requirements to be able to use this inventory plugin,
see Requirements for details.
To use it in a playbook, specify: ngine_io.cloudstack.instance
.
New in ngine_io.cloudstack 2.1.0
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 |
Comments |
---|---|
HTTP method used to query the API endpoint. If not given, the Choices:
Configuration:
|
|
API key of the CloudStack API. If not given, the Configuration:
|
|
Secret key of the CloudStack API. If not set, the Configuration:
|
|
HTTP timeout in seconds. If not given, the Default: Configuration:
|
|
URL of the CloudStack API e.g. https://cloud.example.com/client/api. If not given, the Configuration:
|
|
Verify CA authority cert file. If not given, the Configuration:
|
|
Create vars from jinja2 expressions. Default: |
|
Only return instances in the provided domain. |
|
Only return instances in the provided project. |
|
Only return instances in the provided VPC. |
|
Only return instances in the provided zone. |
|
Add hosts to group based on Jinja2 conditionals. Default: |
|
Field to match the hostname. Note v4_main_ip corresponds to the primary ipv4address of the first nic adapter of the instance. Choices:
|
|
Add hosts to group based on the values of a variable. Default: |
|
The default value when the host variable’s value is an empty string. This option is mutually exclusive with |
|
The key from input dictionary used to generate groups |
|
parent group for keyed group |
|
A keyed group name will start with this prefix Default: |
|
separator used to build the keyed group name Default: |
|
Set this option to This option is mutually exclusive with Choices:
|
|
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. Choices:
|
|
Token that ensures this is a source file for the ‘instance’ plugin. Choices:
|
|
If Since it is possible to use facts in the expressions they might not always be available and we ignore those errors by default. Choices:
|
|
Merge extra vars into the available variables for composition (highest precedence). Choices:
Configuration:
|
|
If If not given, the This should only be used on personally controlled sites using self-signed certificates. Choices:
|
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