community.hrobot.robot 清单 – Hetzner Robot 清单源

注意

此清单插件是 community.hrobot 集合(版本 2.0.2)的一部分。

如果您使用的是 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.hrobot

要在 playbook 中使用它,请指定:community.hrobot.robot

community.hrobot 1.1.0 中的新增功能

概要

  • 从 Hetzner Robot API 读取服务器。

  • 使用以 robot.ymlrobot.yaml 结尾的 YAML 配置文件。

  • 清单插件将 https://robot.your-server.de/doc/webservice/en.html#get-server 中的所有值前缀为 hrobot_ 添加到服务器的清单中。例如,变量 hrobot_dc 包含服务器所在的数据中心。

参数

参数

注释

缓存

布尔值

切换以启用/禁用清单源数据的缓存,需要设置缓存插件才能工作。

选项

  • false ←(默认)

  • true

配置

cache_connection

字符串

缓存连接数据或路径,请阅读缓存插件文档了解具体信息。

配置

cache_plugin

字符串

用于清单源数据的缓存插件。

默认值: "memory"

配置

cache_prefix

字符串

用于缓存插件文件/表的前缀

默认值: "ansible_inventory_"

配置

cache_timeout

整数

缓存持续时间(秒)

默认值: 3600

配置

compose

字典

从 jinja2 表达式创建变量。

默认值: {}

filters

列表 / 元素=字典

在 community.hrobot 2.0.0 中添加

一个包含/排除筛选器的列表,允许为此清单选择/取消选择主机。

筛选器按顺序处理,直到找到第一个匹配 filters[].excludefilters[].include 的筛选器为止。如果 filters[].exclude 匹配,则排除主机;如果 filters[].include 匹配,则包含主机。如果没有任何筛选器匹配,则包含主机。

exclude

字符串

Jinja2 条件。如果它与主机匹配,则该主机将被排除

只能指定 filters[].excludefilters[].include 中的一个。

include

字符串

一个 Jinja2 条件。如果主机满足该条件,则该主机将被包含

只能指定 filters[].excludefilters[].include 中的一个。

groups

字典

根据 Jinja2 条件将主机添加到组。

默认值: {}

hetzner_password

字符串 / 必需

Robot Web 服务用户的密码。

配置

hetzner_user

字符串 / 必需

Robot Web 服务用户的用户名。

配置

keyed_groups

列表 / 元素=字典

根据变量的值将主机添加到组。

默认值: []

default_value

字符串

在 ansible-core 2.12 中添加

当主机变量的值为空字符串时的默认值。

此选项与 keyed_groups[].trailing_separator 互斥。

key

字符串

用于生成组的输入字典中的键。

parent_group

字符串

键分组的父组。

prefix

字符串

键分组名称将以此前缀开头。

默认值: ""

separator

字符串

用于构建键分组名称的分隔符。

默认值: "_"

trailing_separator

布尔值

在 ansible-core 2.12 中添加

将此选项设置为 False 以在值为空字符串时省略主机变量后的 keyed_groups[].separator

此选项与 keyed_groups[].default_value 互斥。

选项

  • false

  • true ← (默认)

leading_separator

布尔值

在 ansible-core 2.11 中添加

与 keyed_groups 结合使用。

默认情况下,没有提供前缀或分隔符的键分组的名称将以下划线开头。

这是因为默认前缀为 "",默认分隔符为 "_"。

如果没有给定前缀,将此选项设置为 False 可以省略前导下划线(或其他分隔符)。

如果组名称是从映射派生的,则仍使用分隔符连接各项。

要完全不在组名称中使用分隔符,请将键分组的分隔符设置为空字符串。

选项

  • false

  • true ← (默认)

plugin

字符串 / 必需

确保这是插件的源文件的令牌。

选项

  • "community.hrobot.robot"

simple_filters

字典

过滤器值对的字典。

此处列出的可用过滤器是服务器的键,例如 statusserver_ip

有关可以使用的所有值,请参阅 https://robot.your-server.de/doc/webservice/en.html#get-server

此选项在 community.hrobot 2.0.0 之前被称为 filters。它在 community.hrobotdns 1.9.0 中从 filters 重命名为 simple_filters,并且旧名称在 community.hrobot 2.0.0 之前仍然可用作别名。 filters 现在用于其他用途。

默认值: {}

strict

布尔值

如果 yes,则将无效条目作为致命错误,否则跳过并继续。

由于可以在表达式中使用事实,因此它们可能并不总是可用,并且我们默认忽略这些错误。

选项

  • false ←(默认)

  • true

use_extra_vars

布尔值

在 ansible-core 2.11 中添加

将额外变量合并到可用于组合的变量中(优先级最高)。

选项

  • false ←(默认)

  • true

配置

说明

注意

示例

# 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

作者

  • Oleksandr Stepanov (@alexandrst88)

提示

每个条目类型的配置条目都具有从低到高的优先级顺序。例如,列表中较低的变量将覆盖较高的变量。