Ansible inventory:aws_ec2 模块——寻找工作“groups:”函数的示例

2024-04-05

我有一个使用 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 的东西一样,权威的“文档”就是源代码。具体来说他们对“群组”选项的使用 https://github.com/ansible/ansible/blob/v2.9.9/lib/ansible/plugins/inventory/aws_ec2.py#L568哪个调用_add_host_to_composed_groups https://github.com/ansible/ansible/blob/v2.9.9/lib/ansible/plugins/inventory/__init__.py#L367他们在那里喂养groups:dict 到包含所有主机变量的 Jinja2 评估上下文中。表达式被插入{% if ... %}所以你不想包括{{表达式中的标记,只是“原始”jinja2 表达式

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ansible inventory:aws_ec2 模块——寻找工作“groups:”函数的示例 的相关文章

  • 如何让 Angular-Flask 应用加载 html 部分?

    我试图让我的 Angular Flask 应用程序在基本 html 文件中渲染部分 HTML 文件 应用程序加载基本 html 窗口标题和页脚加载 但 ng view 没有加载任何内容 也许我到局部的角度路由不正确 文件结构 gt flas
  • Ansible local_action 指令

    我对 Ansible 很陌生 有一个简单的问题来了解我的理解local action指示 这是否意味着该命令完全在本地执行 假设你有这样的东西 local action command which nginx register check
  • Jinja2 嵌套循环计数器

    set cnt 0 for room in rooms for bed in room set cnt cnt 1 endfor cnt endfor 假设我们有一个嵌套循环 打印的 cnt 将始终为 0 因为这是我们进入第一个 for 循
  • Ansible 列表未排序

    我有一个正在循环的列表 问题是它给出了一个奇怪的顺序 param yml 文件 my list a val1 b val2 c val3 d val3 这是我的简单调试循环 name debug debug msg item loop my
  • 如何在 Jinja 中过滤字典?

    我有一个包字典 包名称是key和一些细节的字典是value php7 1 readline latest 7 1 9 1 ubuntu14 04 1 deb sury org 1 origins ppa launchpad net vers
  • 模板化字符串时出现模板错误:意外的字符 u - Ansible

    执行剧本以在远程主机中运行命令并使用 shell 传递输出时 出现以下错误 致命 master1 失败 gt MSG 模板化时出现模板错误 字符串 4 处出现意外的字符 u a 字符串 54aa7fda16833bff8358b6bd115
  • Ansible bitbucket 克隆配置 ssh 错误

    总之 当使用 Ansible 配置我的 vagrant box 时 在尝试使用 ssh 克隆我的 bitbucket 私有存储库时 我遇到了一个神秘的错误 该错误指出 主机密钥验证失败 然而 如果我流浪 ssh 然后运行 克隆 命令 私有存
  • Jinja2 中的 quote_plus URL 编码过滤器

    有一个urlencode http jinja pocoo org docs latest templates urlencodeJinja 中的过滤器 可与 url urlencode 但我正在寻找一个 加 版本 将空格替换为 代替 20
  • 使用带有文件模块的ansible创建目录列表很慢

    我有一个角色 必须创建目录列表 哪些目录最终出现在列表中取决于运行时评估的几个条件 当我使用file模块 如图所示 这非常慢 创建甚至检查每个目录是否存在大约需要半秒 在我遇到的场景中很容易就达到几分钟 流水线已启用 name Create
  • Ansible 多个清单文件

    我正在尝试将多个清单文件和动态清单与 Ansible 1 4 和 dev 一起使用 Ansible 返回没有匹配的主机 我有一个模拟场景 目录中有两个主机文件test列出该目录的内容 主机1 ini group1 test1 ansible
  • 如何使用ansible运行询问用户输入的脚本?

    我想使用 ansible 运行 shell 脚本 但 shell 脚本需要用户输入才能成功执行 例如 我的 shell 脚本询问唯一的 idossec agent 通过ansible我可以预定义我的unique id user input
  • 如何访问 Jinja2 模板(应用程序引擎上的 Bottle 框架)中的会话数据?

    我正在运行微框架Bottle http bottle paws de page docs在谷歌应用程序引擎上 我在用着Jinja2 http jinja pocoo org 2 对于我的模板 我正在使用Beaker http pypi py
  • dbt 的 dbt_project.yml 文件中的嵌套变量

    下面是我在 dbt project yml 文件中的代码 vars Variable project1 vendor ABC DEF ABC model name model123 case types name CASE1 name CA
  • 安塞布尔 + 10.11.6

    我在 非常 干净地安装 10 11 6 时遇到了 Ansible 的奇怪问题 我已经安装了brew zsh oh my zsh Lil snitch 和1password 实际上没有安装其他任何东西 我安装了ansible brew ins
  • 如何在microsoft windows下使用ansible克隆git存储库

    Ansible 2 1 centos7下控制主机 windows 10数量作为客户端 我需要在远程端克隆 git 存储库 但不知道如何执行此操作 没有Windows 本机模块 http docs ansible com ansible li
  • Ansible:对任务失败执行清理

    我目前正在编写一个 Ansible play 它遵循此通用格式并通过 cron 作业运行 pre tasks Configuration package installation tasks Work with installed pack
  • Ansible 创建可以访问所有表的 postgresql 用户?

    这应该很简单 我想要创建一个 Ansible 语句来创建一个 Postgres 用户 该用户具有特定数据库的连接权限以及对该特定数据库中所有表的选择 插入 更新 删除权限 我尝试了以下方法 name Create postgres user
  • 有没有办法验证 Ansible Inventory 文件中组的主机数量?

    我的要求如下所示 我有一个 Ansible 库存文件 它根据如下所示的组件分为几个组 all node1 node2 node3 node4 webapp node3 node4 ui node1 如果条件失败 则有没有办法验证清单文件中组
  • 在 python 中将变量传递给重定向上的模板

    我对 Python 比较陌生 所以请原谅任何幼稚的问题 我的主页有 2 个输入 一个用于 产品 一个用于 电子邮件 当用户单击 提交 时 他们应该被发送到 success 其中会显示 您已请求 产品 您将通过 电子邮件 收到通知 我试图找出
  • ansible unarchive 模块如何查找 tar 二进制文件?

    我正在尝试执行一个 ansible 剧本 该剧本的任务是利用unarchive模块 因为我是在 OSX 上执行此操作 所以我需要使用它gnu tar 而不是bsd tar通常与 OSX 一起提供 因为BSD tar 不受官方支持 https

随机推荐