问题标签 [ansible-template]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
857 浏览

ansible - 从 Ansible 模板生成文件而不执行播放?

我正在尝试为我的剧本构建一个 Ansible 模板文件,并且需要进行一定的反复试验才能找出模板 (.j2) 文件所需的正确模板变量。有什么方法可以运行 Ansible 以便它从模板生成文件而不实际执行 playbook 中的任务?我只想查看将从模板创建的文件,但在我知道我的模板正确之前不要自己运行播放。

0 投票
1 回答
17576 浏览

python - ansible 条件模板

我想在 ansibles jinja 模板中有一个简单的 if else 条件。对于普通蟒蛇

如果定义了以下变量,则效果会更好:

在 ansible 中,我看到以下错误:

这是一个最小的例子:

文件_1:变量

文件_2:剧本.yml

文件_4:库存

文件_5:bare_cluster.bp.j2

执行最小示例的命令是ansible-playbook -i inventory playbook.yml -e 'cluster_name=examplecluster'

0 投票
1 回答
559 浏览

ansible - 如何将 listB 中的所有项目连接到 listA 中的所有项目?

我试图弄清楚如何创建一个 Ansible 列表,该列表是将 listB 中的每个字符串附加到 listA 中的每个字符串的结果,从而有效地将两个字符串列表相乘。

在python中我会这样做:

在其他语言中,我会将一个for循环嵌套在另一个循环中。

我无法在 Ansible 中找到与此类似的东西。

我这样做的原因是允许角色自动确定主机所在的站点。我的所有主机都位于至少一个以物理位置和站点类型(开发、登台、生产)命名的组中。例如,纽约生产站点的组将是“nyc-prod”。我需要我的剧本才能从主机所在组的完整列表中挑选出站点名称。

给定所有可能站点的列表,我可以将该列表与主机所在的组列表相交,生成的单元素列表将包含当前主机的站点。

group_vars/all我可以通过将所有可能的站点类型组合的列表手写到角色中或角色中来强制执行此操作vars/main.yml,但是对于大量站点,这会乘以必须维护的大量列表。所以我的方法是尝试从更短的物理站点列表和类型列表中以编程方式构建列表。

如果我可以在 jinja 模板中嵌入任意 python,我可以在以下位置执行类似的操作tasks/main.yml

然而,这显然行不通。

以前有没有人解决过这个问题?

注意:我使用的是 Ansible 2.2.1.0

0 投票
1 回答
2923 浏览

ansible - 使用 with_dict 的 Ansible jinja 模板

所以我对 Ansible 还是很陌生,我正在尝试生成一个 DHCP 配置文件作为我的第一个真实世界的 Ansible 项目。

我在 RHEL7 上使用 ansible 2.2.1.0。

因为我的所有配置都存储在 yaml 中,所以我要崩溃了

在 ansible playbook 本身中,我可以使用以下代码打印每个项目的属性

但是,当我使用它来生成包含这些属性的配置文件时,我不知道如何执行此操作。我看不到 jinja2 的 with_dict 选项。

我曾希望在 with_dict 循环中使用模板并拥有类似于以下的模板

我是否试图以错误的方式解决这个问题?

我已经阅读了一些类似的问题,但它们似乎涉及必须整理字典,如果可能的话,我很想避免这种情况。

任何建议将不胜感激。

谢谢

0 投票
1 回答
6163 浏览

ansible - Ansible/jinja2:在 if 条件下使用过滤结果

是否可以在 ansible playbook 的条件下使用 Jinja2 过滤器的结果?

我试图让这个工作,但没有成功:

我当前测试中的item设置为localhost(并且可以是任何其他私有或公共域)。

应该这样做:如果item是 IPv4 地址,则应返回地址,否则应将其“转换”(使用dig进行 DNS 查找)为 IPv4 地址 - 但它始终返回主机名。

任何想法?

提前感谢马蒂亚斯

0 投票
1 回答
19111 浏览

ansible - 我想在 Jinja2 的 Ansible 上下文中包含另一个 Jinja2 模板

我有一个设置很多变量的 Ansible 剧本。其中一个剧本有这个任务:

模板main_config.j2写入在父 Ansible playbook 和任务中定义为变量的字符串。

我想包含另一个基于 Ansible 变量值的 Jinja2 模板。

job是在父 playbook 中设置的 Ansible 变量。

这是行不通的。可能是什么问题呢?

0 投票
1 回答
1034 浏览

ansible - 如何在 Ansible 中使用带变量的默认值?

我知道我可以默认使用一个简单的硬编码字符串,但我正在尝试这样做:

但它将其添加为字符串而不是对其进行评估。

0 投票
1 回答
302 浏览

ansible - Ansible 2.2:使用 with_sequence 在列表中查找值

我想做以下事情:

我有 port_list 变量,其中包含要插入每个属性文件的端口。我有以下错误作为回报:

任何的想法 ?我也试过

至今没有成功。

0 投票
1 回答
12625 浏览

ansible - Ansible 循环 - 如何将模板值与 with_items 匹配?

我正在尝试创建具有与其值匹配的with_items值的文件。

我有一个像这样的 var 列表:

我为此任务的列表中的每个对象创建单独的文件:

这两个都很好用。我需要在我的模板文件中拥有什么才能创建一个名为blue.conf并且只有.google.com

我尝试了很多变化。我最接近的是:

这将创建单个文件,但每个文件都有所有域和 cnames。

0 投票
6 回答
95694 浏览

ansible - 将变量传递给 ansible 角色

我的目录结构是这样的

当我在角色下创建用户时create_new_user,我将用户名硬编码为

解决这个问题的一种方法可能是创建一个var/main.yml并将用户名放在那里。但我想要一些东西,通过它我可以在play.yml级别指定用户名。因为我也在角色中使用用户名vimrcserver

我正在使用play.yml

在这种情况下,模板可以在这里工作吗?从这些SO 问题中找不到太多信息