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.
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.

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)