community.hrobot.robot inventory – Hetzner Robot inventory source
Note
This inventory plugin is part of the community.hrobot collection (version 2.0.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 community.hrobot
.
To use it in a playbook, specify: community.hrobot.robot
.
New in community.hrobot 1.1.0
Synopsis
Reads servers from Hetzner Robot API.
Uses a YAML configuration file that ends with
robot.yml
orrobot.yaml
.The inventory plugin adds all values from https://robot.your-server.de/doc/webservice/en.html#get-server prepended with
hrobot_
to the server’s inventory. For example, the variablehrobot_dc
contains the data center the server is located in.
Parameters
Parameter |
Comments |
---|---|
Toggle to enable/disable the caching of the inventory’s source data, requires a cache plugin setup to work. Choices:
Configuration:
|
|
Cache connection data or path, read cache plugin documentation for specifics. Configuration:
|
|
Cache plugin to use for the inventory’s source data. Default: Configuration:
|
|
Prefix to use for cache plugin files/tables. Default: Configuration:
|
|
Cache duration in seconds. Default: Configuration:
|
|
Create vars from jinja2 expressions. Default: |
|
A list of include/exclude filters that allows to select/deselect hosts for this inventory. Filters are processed sequentially until the first filter where |
|
A Jinja2 condition. If it matches for a host, that host is excluded. Exactly one of |
|
A Jinja2 condition. If it matches for a host, that host is included. Exactly one of |
|
Add hosts to group based on Jinja2 conditionals. Default: |
|
The password for the Robot web-service user. Configuration:
|
|
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 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 Set this option to 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 plugin. Choices:
|
|
A dictionary of filter value pairs. Available filters are listed here are keys of server like See https://robot.your-server.de/doc/webservice/en.html#get-server for all values that can be used. This option used to be called Default: |
|
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:
|
Notes
Note
The
hetzner_user
andhetzner_password
options can be templated.
Examples
# Fetch all hosts in Hetzner Robot
plugin: community.hrobot.robot
# Filters all servers in ready state
filters:
status: ready
# Example showing encrypted credentials and using filters
# (This assumes that Mozilla sops was used to encrypt keys/hetzner.sops.yaml, which contains two values
# hetzner_username and hetzner_password. Needs the community.sops collection to decode that file.)
plugin: community.hrobot.robot
hetzner_user: '{{ (lookup("community.sops.sops", "keys/hetzner.sops.yaml") | from_yaml).hetzner_username }}'
hetzner_password: '{{ (lookup("community.sops.sops", "keys/hetzner.sops.yaml") | from_yaml).hetzner_password }}'
filters:
# Accept all servers in FSN1-DC1 and FSN1-DC2
- include: >-
hrobot_dc in ["FSN1-DC1", "FSN1-DC2"]
# Exclude all servers that didn't match any of the above filters
- exclude: true
# Example using constructed features to create groups
plugin: community.hrobot.robot
simple_filters:
status: ready
traffic: unlimited
# keyed_groups may be used to create custom groups
strict: false
keyed_groups:
# Add e.g. groups for every data center
- key: hrobot_dc
separator: ""
# Use the IP address to connect to the host
compose:
server_name_ip: hrobot_server_name ~ '-' ~ hrobot_server_ip