问题标签 [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.
automation - 在 Ansible 中评论一个块
我正在尝试自动化一些部署,我需要注释掉一些配置,这些配置基本上由一个完整的块组成。有没有办法通过 ansible playbook 注释特定的代码/配置块?
ansible - 如何在 ansible 中测试 jinja2 模板?
有时我需要测试一些我在 ansible 角色中使用的 jinja2 模板。这样做的最简单方法是什么?
例如,我有一个模板(test.j2):
和 vars(在 group_vars/all 中):
ansible - ansible模板中的循环字典
我正在尝试使用 jinja2 通过 ansible 模板循环字典以创建多个数据源,但收到此错误[{'msg': "AnsibleUndefinedVariable: One or more undefined variables: 'dict object' has no attribute 'value'", 'failed': True}]}
运行调试任务时,它确实会返回正确的值,所以我觉得我的问题出在模板本身,但我一直无法弄清楚我做错了什么。
Ansible 任务
Ansible 字典
Jinja2 模板
调试输出
ansible - 为 ansible 模板定义了 if var 的简短版本
Ansible 模板中的 Jinja2 允许在模板中使用这种类型的表达式:
等等
是否有任何较短的版本说'如果未定义其变量,则不要打印此行?
像 foo_bar = {{foobar|skip_this_line_if_undefined}} 之类的东西?
ansible - Ansible:获取当前目标主机的 IP 地址
如何获取角色中当前主机的IP地址?
我知道您可以获得主机所属的组列表和主机的主机名,但我无法找到获取 IP 地址的解决方案。
您可以使用获取主机名,使用获取{{inventory_hostname}}
组{{group_names}}
我尝试过像{{ hostvars[{{ inventory_hostname }}]['ansible_ssh_host'] }}
和ip="{{ hostvars.{{ inventory_hostname }}.ansible_ssh_host }}"
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}}"
运行时的值没有被评估。
有什么建议我可以做些什么来解决这个问题?
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?
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。
ansible - 如何消除 Ansible Jinja2 模板中宏调用之间的额外空格?
给定 Ansible Jinja2 模板:
带service
变量定义:
如何更改模板以消除结果输出中的额外换行符:
所以它看起来像:
?
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