community.general.proxmox inventory – Proxmox 资源清单
注意
此资源清单插件是 community.general 集合 (版本 10.1.0) 的一部分。
如果您使用的是 ansible
包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.general
。您需要其他要求才能使用此资源清单插件,有关详细信息,请参阅 Requirements。
要在 playbook 中使用它,请指定:community.general.proxmox
。
community.general 1.2.0 中的新增功能
概要
从 Proxmox PVE 集群获取资源清单主机。
使用配置文件作为资源清单来源,它必须以
.proxmox.yml
或.proxmox.yaml
结尾。将为 Proxmox 节点检索具有 IP 地址的第一个网络接口。
可以检索 LXC/QEMU 配置作为事实。
要求
以下要求是在执行此资源清单的本地控制器节点上所需的。
requests >= 1.1
参数
参数 |
注释 |
---|---|
切换以启用/禁用资源清单源数据的缓存,需要设置缓存插件才能工作。 选项
配置
|
|
缓存连接数据或路径,请阅读缓存插件文档以了解详细信息。 配置
|
|
要用于资源清单源数据的缓存插件。 默认值: 配置
|
|
用于缓存插件文件/表的前缀 默认值: 配置
|
|
缓存持续时间(秒) 默认值: 配置
|
|
从 jinja2 表达式创建变量。 默认值: |
|
从资源清单输出中排除 proxmox 节点和 nodes 组。 选项
|
|
应用于 LXC/QEMU 配置事实的前缀。 默认值: |
|
允许过滤主机的 Jinja 模板列表。 默认值: |
|
应用于 Proxmox 组的前缀。 默认值: |
|
根据 Jinja2 条件将主机添加到组。 默认值: |
|
根据变量的值将主机添加到组。 默认值: |
|
主机变量的值为空字符串时的默认值。 此选项与 |
|
用于生成组的输入字典中的键 |
|
键控组的父组 |
|
键控组名称将以此前缀开头 默认值: |
|
用于构建键控组名称的分隔符 默认值: |
|
将此选项设置为 此选项与 选项
|
|
与 keyed_groups 结合使用。 默认情况下,如果未提供前缀或分隔符,则键控组的名称将以下划线开头。 这是因为默认前缀为“”而默认分隔符为“_”。 如果未给出前缀,则将此选项设置为 False 以省略前导下划线(或其他分隔符)。 如果组名来自映射,则仍使用分隔符来连接项目。 要完全不使用组名中的分隔符,请将键控组的分隔符设置为空字符串。 选项
|
|
Proxmox 认证密码。 如果在清单配置中未指定此值,则将改用环境变量 从 community.general 4.7.0 版本开始,您还可以使用模板指定 如果您未指定密码,则必须设置 配置
|
|
此插件的名称,对于此插件将其识别为自身,应始终设置为 选项
|
|
需要将 这引入了多个组(以 选项
|
|
如果为 由于可以在表达式中使用事实,因此它们可能并不总是可用,我们默认忽略这些错误。 选项
|
|
Proxmox 认证令牌 ID。 如果在清单配置中未指定此值,则将改用环境变量 要使用令牌认证,还必须指定 确保向令牌授予显式 pve 权限,或禁用“权限分离”以改用用户的权限。 配置
|
|
Proxmox 认证令牌密钥。 如果在清单配置中未指定此值,则将改用环境变量 要使用令牌认证,还必须指定 配置
|
|
Proxmox 集群的 URL。 如果在清单配置中未指定此值,则将改用环境变量 从 community.general 4.7.0 版本开始,您还可以使用模板指定 默认: 配置
|
|
将额外的变量合并到可用于组合的变量中(最高优先级)。 选项
配置
|
|
Proxmox 认证用户。 如果在清单配置中未指定此值,则将改用环境变量 从 community.general 4.7.0 版本开始,您还可以使用模板指定 配置
|
|
如果使用 HTTPS,则验证 SSL 证书。 选项
|
|
收集 LXC/QEMU 配置事实。 当 选项
|
|
是否为 Proxmox 节点设置 设置为 此选项的默认值已从 community.general 6.0.0 版本中的 选项
|
示例
# Minimal example which will not gather additional facts for QEMU/LXC guests
# By not specifying a URL the plugin will attempt to connect to the controller host on port 8006
# my.proxmox.yml
plugin: community.general.proxmox
user: ansible@pve
password: secure
# Note that this can easily give you wrong values as ansible_host. See further below for
# an example where this is set to `false` and where ansible_host is set with `compose`.
want_proxmox_nodes_ansible_host: true
# Instead of login with password, proxmox supports api token authentication since release 6.2.
plugin: community.general.proxmox
user: ci@pve
token_id: gitlab-1
token_secret: fa256e9c-26ab-41ec-82da-707a2c079829
# The secret can also be a vault string or passed via the environment variable TOKEN_SECRET.
token_secret: !vault |
$ANSIBLE_VAULT;1.1;AES256
62353634333163633336343265623632626339313032653563653165313262343931643431656138
6134333736323265656466646539663134306166666237630a653363623262636663333762316136
34616361326263383766366663393837626437316462313332663736623066656237386531663731
3037646432383064630a663165303564623338666131353366373630656661333437393937343331
32643131386134396336623736393634373936356332623632306561356361323737313663633633
6231313333666361656537343562333337323030623732323833
# More complete example demonstrating the use of 'want_facts' and the constructed options
# Note that using facts returned by 'want_facts' in constructed options requires 'want_facts=true'
# my.proxmox.yml
plugin: community.general.proxmox
url: http://pve.domain.com:8006
user: ansible@pve
password: secure
want_facts: true
keyed_groups:
# proxmox_tags_parsed is an example of a fact only returned when 'want_facts=true'
- key: proxmox_tags_parsed
separator: ""
prefix: group
groups:
webservers: "'web' in (proxmox_tags_parsed|list)"
mailservers: "'mail' in (proxmox_tags_parsed|list)"
compose:
ansible_port: 2222
# Note that this can easily give you wrong values as ansible_host. See further below for
# an example where this is set to `false` and where ansible_host is set with `compose`.
want_proxmox_nodes_ansible_host: true
# Using the inventory to allow ansible to connect via the first IP address of the VM / Container
# (Default is connection by name of QEMU/LXC guests)
# Note: my_inv_var demonstrates how to add a string variable to every host used by the inventory.
# my.proxmox.yml
plugin: community.general.proxmox
url: http://192.168.1.2:8006
user: ansible@pve
password: secure
validate_certs: false # only do this when you trust the network!
want_facts: true
want_proxmox_nodes_ansible_host: false
compose:
ansible_host: proxmox_ipconfig0.ip | default(proxmox_net0.ip) | ipaddr('address')
my_inv_var_1: "'my_var1_value'"
my_inv_var_2: >
"my_var_2_value"
# Specify the url, user and password using templating
# my.proxmox.yml
plugin: community.general.proxmox
url: "{{ lookup('ansible.builtin.ini', 'url', section='proxmox', file='file.ini') }}"
user: "{{ lookup('ansible.builtin.env','PM_USER') | default('ansible@pve') }}"
password: "{{ lookup('community.general.random_string', base64=True) }}"
# Note that this can easily give you wrong values as ansible_host. See further up for
# an example where this is set to `false` and where ansible_host is set with `compose`.
want_proxmox_nodes_ansible_host: true