hetzner.hcloud.hcloud – Ansible dynamic inventory plugin for the Hetzner Cloud.

Note

This plugin is part of the hetzner.hcloud collection (version 1.6.0).

To install it use: ansible-galaxy collection install hetzner.hcloud.

To use it in a playbook, specify: hetzner.hcloud.hcloud.

Synopsis

  • Reads inventories from the Hetzner Cloud API.

  • Uses a YAML configuration file that ends with hcloud.(yml|yaml).

Requirements

The below requirements are needed on the local controller node that executes this inventory.

  • python >= 2.7

  • hcloud-python >= 1.0.0

Parameters

Parameter Choices/Defaults Configuration Comments
compose
dictionary
Default:
{}
Create vars from jinja2 expressions.
connect_with
string
    Choices:
  • public_ipv4 ←
  • hostname
  • ipv4_dns_ptr
  • private_ipv4
Connect to the server using the value from this field.
groups
dictionary
Default:
{}
Add hosts to group based on Jinja2 conditionals.
images
list / elements=string
Default:
[]
Populate inventory with instances with this image name, only available for system images.
keyed_groups
list / elements=string
Default:
[]
Add hosts to group based on the values of a variable.
label_selector
string
Default:
""
Populate inventory with instances with this label.
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.
locations
list / elements=string
Default:
[]
Populate inventory with instances in this location.
network
string
Default:
""
Populate inventory with instances which are attached to this network name or ID.
plugin
string / required
    Choices:
  • hcloud
  • hetzner.hcloud.hcloud
marks this as an instance of the "hcloud" 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.
token
string
The Hetzner Cloud API Token.
token_env
string
Default:
"HCLOUD_TOKEN"
Environment variable to load the Hetzner Cloud API Token from.
types
list / elements=string
Default:
[]
Populate inventory with instances with this type.
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).

Examples

# Minimal example. `HCLOUD_TOKEN` is exposed in environment.
plugin: hcloud

# Example with locations, types, groups and token
plugin: hcloud
token: foobar
locations:
  - nbg1
types:
  - cx11

# Group by a location with prefix e.g. "hcloud_location_nbg1"
# and image_os_flavor without prefix and separator e.g. "ubuntu"
# and status with prefix e.g. "server_status_running"
plugin: hcloud
keyed_groups:
  - key: location
    prefix: hcloud_location
  - key: image_os_flavor
    separator: ""
  - key: status
    prefix: server_status

Authors

  • Lukas Kaemmerling (@lkaemmerling)