gpt4 book ai didi

Ansible 库存 : aws_ec2 module -- Looking for an example of a working 'groups:' function

转载 作者:行者123 更新时间:2023-12-04 12:10:15 24 4
gpt4 key购买 nike

我有一个使用 aws_ec2 模块的动态 ansible 库存。一般来说,它工作得很好。但是,有一个问题。我曾多次尝试使用 'groups:' 关键字创建组,但所有尝试都失败了。文档有点稀少——事实上,它是完整的:

groups: (dictionary)
Default:{}
Add hosts to group based on Jinja2 conditionals.

我尝试了多种语法、Jinja2、条件、声明,但到目前为止还没有成功创建一个名为“foo”的组。有一段时间我想也许我需要传递一个返回 true 或 false 的小代码 snibbet,从而包括或排除目标主机。情况似乎并非如此。我想知道这里是否有人使用过 'groups:' 关键字并且比我做得更远。我在谷歌搜索时发现的很少。 FWIW,我在 Linux 上使用 ansible 2.9.9。

一些不起作用的事情的例子:
---
plugin: aws_ec2

### fails to create a group
groups:
foo: >-
tags.get('Name') if tags.get('Name') == 'foo-server'

### returns every host in the AWS account.
groups:
bar:
- "{{ tags.get('Name') == 'bar-server' }}"

另外,这个模块很难使用 ansible 的调试工具。
许多,如剧本调试器,似乎不能正常工作,但我发现
它们在其他情况下非常有用。您可能对调试有任何提示
在这方面将受到热烈欢迎。

最佳答案

看起来你离得很近

与 ansible 的许多事情一样,权威的“文档”是源代码。具体their use of the 'groups' option其中调用 _add_host_to_composed_groups 其中他们喂养 groups: dict 到包含所有主机变量的 Jinja2 评估上下文中。表达式插入 {% if ... %}所以你不想包含 {{表达式中的标记,只是“原始”jinja2 表达式

groups:
foo: tags.get('Name') == 'foo-server'

预先警告我没有一个方便的环境来测试库存脚本,但这就是理论

关于Ansible 库存 : aws_ec2 module -- Looking for an example of a working 'groups:' function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62110796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com