问题标签 [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 回答
2094 浏览

automation - 在 Ansible 中评论一个块

我正在尝试自动化一些部署,我需要注释掉一些配置,这些配置基本上由一个完整的块组成。有没有办法通过 ansible playbook 注释特定的代码/配置块?

0 投票
5 回答
63136 浏览

ansible - 如何在 ansible 中测试 jinja2 模板?

有时我需要测试一些我在 ansible 角色中使用的 jinja2 模板。这样做的最简单方法是什么?

例如,我有一个模板(test.j2):

和 vars(在 group_vars/all 中):

0 投票
5 回答
51378 浏览

ansible - ansible模板中的循环字典

我正在尝试使用 jinja2 通过 ansible 模板循环字典以创建多个数据源,但收到此错误[{'msg': "AnsibleUndefinedVariable: One or more undefined variables: 'dict object' has no attribute 'value'", 'failed': True}]}

运行调试任务时,它确实会返回正确的值,所以我觉得我的问题出在模板本身,但我一直无法弄清楚我做错了什么。

Ansible 任务

Ansible 字典

Jinja2 模板

调试输出

0 投票
2 回答
4756 浏览

ansible - 为 ansible 模板定义了 if var 的简短版本

Ansible 模板中的 Jinja2 允许在模板中使用这种类型的表达式:

等等

是否有任何较短的版本说'如果未定义其变量,则不要打印此行?

像 foo_bar = {{foobar|skip_this_line_if_undefined}} 之类的东西?

0 投票
10 回答
335281 浏览

ansible - Ansible:获取当前目标主机的 IP 地址

如何获取角色中当前主机的IP地址?

我知道您可以获得主机所属的组列表和主机的主机名,但我无法找到获取 IP 地址的解决方案。

您可以使用获取主机名,使用获取{{inventory_hostname}}{{group_names}}

我尝试过像{{ hostvars[{{ inventory_hostname }}]['ansible_ssh_host'] }}ip="{{ hostvars.{{ inventory_hostname }}.ansible_ssh_host }}"

0 投票
1 回答
66067 浏览

ansible - Ansible Jinja2 字符串比较

我使用 group_vars 中定义的变量在 Jinja2 模板文件中获取变量“env”的值,例如:

env可能的三个值可能是abc, def, xyz.

基于这个值,我想使用服务器 URL,我在里面定义了它的可能值defaults/main.yml

在 Jinja2 模板中,我正在尝试做:

ServerURL = "server URL not found"但是,即使env带有abc,def或的值,它也总是最终定义xyz

如果我尝试在 Jinja2 模板(硬编码)中替换 env,如下条件确实满足:

所以这意味着我的语法是正确的,但"{{env}}"运行时的值没有被评估。

有什么建议我可以做些什么来解决这个问题?

0 投票
1 回答
982 浏览

ansible - How to include a variable file in Ansible?

I have the following playbook:

And the following Jinja template:

When I run the playbook I get the error:

AnsibleError: template error while templating string: expected token 'end of print statement', got 'main_body'.

How to tell Jinja to include a file, its name is stored in a previously defined fact?

0 投票
1 回答
16676 浏览

ansible - 如何删除或排除 Ansible 模板列表中的项目?

我正在编写一个 Ansible 模板,该模板需要在主机组中生成一个 IP 列表,不包括当前主机 IP。我在网上和文档中进行了搜索,但找不到任何允许您删除列表中项目的过滤器。我在下面创建了(hacky)for循环来执行此操作,但想知道是否有人知道这样的“最佳实践”过滤方式。

假设 groups['my_group'] 有 3 个 ip(192.168.1.1、192.168.1.2 和 192.168.1.3)。当为 192.168.1.1 生成模板时,它应该只打印 ip 的 192.168.1.2 和 192.168.1.3。

0 投票
1 回答
1465 浏览

ansible - 如何消除 Ansible Jinja2 模板中宏调用之间的额外空格?

给定 Ansible Jinja2 模板:

service变量定义:

如何更改模板以消除结果输出中的额外换行符:

所以它看起来像:

?

0 投票
1 回答
1073 浏览

ansible - 如何通过 `hostvars` 使用角色的默认值

我正在尝试创建一个受此启发的角色:ansible-cassandra

在这个角色中,变量有一个默认值cassandra_network_iface

还有一个模板文件cassandra.yaml.j2通过以下方式使用它hostvars

当我将此模板文件用于任务时:

我有这个错误:

问题是变量cassandra_network_iface没有定义到hostvars[host]范围内(我用调试任务检查过),否则我可以直接使用它。

我的问题:有没有办法cassandra_network_iface通过hostvars

注意:我尝试使用 ansible 2.1 和 2.2