ngine_io.cloudstack.instance – Apache CloudStack instance inventory source

Note

This plugin is part of the ngine_io.cloudstack collection (version 2.1.0).

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
    Choices:
  • get ←
  • post
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
    Choices:
  • v4_default_ip ←
  • hostname
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
    Choices:
  • no
  • yes ←
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
    Choices:
  • ngine_io.cloudstack.instance
Token that ensures this is a source file for the 'instance' plugin.
strict
boolean
    Choices:
  • no ←
  • yes
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
    Choices:
  • no ←
  • yes
ini entries:

[inventory_plugins]
use_extra_vars = no

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)