问题标签 [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.
ansible - 如何获取服务器名称列表并将资源 URI 和端口附加到每个服务器名称?
我从 Ansible 清单中合并了两个列表:
输出是:
有了上面的结果,我需要https://
在前面附加一个端口号,在每个元素的后面附加一个端口号。然后我需要将其转换为服务器配置的逗号分隔列表。
在这个例子中,我想要:https://server01:8000,https://server02:8000,https://server03:8000
。
我尝试使用连接:
这部分工作,但它留下了没有端口的最后一个服务器。
我怎样才能实现我的目标?
ansible - dictsort 在 Ansible/Jinja2 中产生什么数据类型?
解释
假设我有一个字典mydict
设置为{ "key1": "value1" }
:
Ansible中
/li>dictsort
filter (mydict|dictsort
) 的结果似乎是一个包含另一个列表的列表:但是,当直接在 Jinja2 模板中访问该列表的第一个元素时
/li>(mydict|dictsort)[0]
,它呈现出一个奇怪的外观:然后,如果我设置一个值为 的事实
(mydict|dictsort)
,它的行为就像一个常规列表 - 访问第一个元素并[0]
导致:访问其
[0]
元素返回key1
.但是如果我用 的值设置一个事实
(mydict|dictsort)[0]
,它的行为就像一个字符串——访问[0]
元素返回第一个字符,即(
。另一方面,如果我直接访问子元素,例如
(mydict|dictsort)[0][0]
,它的行为就像一个列表,即返回key1
。
问题
是什么
(u'key1', u'value1')
?产生什么样的物体dictsort
?如何以
dictsort
一致、可靠的方式访问结果?
完整剧本:
完整成绩单:
copy
我用/检查了值,content
它们与debug
's 相同(缩进除外),因此debug
为了清楚起见发布结果。
variables - 如何忽略 j2 模板文件中的 jinja2 大括号 {{}}
我有一个 j2 文件,我想编辑并复制到我的远程服务器(作为我的 ansible 游戏的一部分)。该文件有几个用大括号表示的 3 个变量{{ }}
。我怎样才能只针对命名的第二个变量{{ bar }}
并忽略文件中的其他 2 个变量,以便将它们单独放置并复制到我的远程服务器?例如,我的 test.j2 文件包含:
{{ bar }}
我可以在我的 ansible playbook 中明确地处理变量吗?如果是这样,我将如何(在语法上)在我的 ansible 剧本中编写它?
ansible - Ansible 和 Jinja2 循环逻辑
变量文件createuser
:
合理的逻辑:
内容sshconfig.j2
:
我得到的输出/etc/ssh/sshd_config
:
我需要的输出:
请帮忙。
ansible - 键/值键中的 Ansible 变量
我将 env 变量传递给 ansible playbook 中的 Docker 容器,如何在 env 的键/值中的键中设置 Ansible 变量?
所以这:
变成这样:
ansible - 从 Jinja2 模板为多个主机生成单个配置
问题:鉴于 Ansible 的性质,我有 2 个任务按(预期)顺序执行。据我了解,每个任务只能执行一个模块。
任务 1 - 从网络设备收集事实信息(序列号、版本等)。
任务 2 - 使用任务 1 中收集的信息呈现模板
理想结果:由于我正在循环访问大量网络设备,我的理想结果是一次选择一个设备,从中收集信息,然后使用该信息渲染模板,然后转到循环中的另一个设备,然后很快。
方法:我想保持相同的语法,在任务 1 上将事实保存在文件 (.json) 中,在任务 2 上,读取 JSON 文件并获取我感兴趣的变量。
有没有更好的方法来做到这一点?(应该不止一个)
我目前所拥有的不符合我的目的,因为模板呈现时,它只包含有关最后一个设备的信息:
任务:角色/juniper.junos/tasks/main.yaml
模板:~/Ansible/roles/juniper.junos/templates/template.j2
理想输出:“~/Ansible/Ouput/Facts/Device_facts.yml”
ansible - Ansible - 将字符串与现有变量组合以注册到另一个变量中
我想将一个事实集与set_facts
一个字符串变量结合起来,并将其注册为一个新变量。
我认为,我们不能在 Ansible 剧本中注册新变量。那么我可以set_facts
再次使用将先前set_fact
变量与现有变量结合起来吗?
我不确定这里的语法。
这是一个例子:
现在我想将两个字符串与逗号结合起来,得到一个像这样的变量值:
json - Ansible: parsing/concatenating output of getent module
I try to set up chroot for sftp users, so that they can see user/group names on ls -l
as per this article. To this end I need to get output of getent
command and place it into /chroots/{{ user.username }}/etc/passwd
file.
I try to use Ansible to replace this command getent passwd sftpuser > /chroots/sftpuser/etc/passwd
as follows:
The 'getent_passwd' looks as follows:
But I get this error: FAILED! => {"failed": true, "msg": "Unexpected templating type error occurred on ({{ getent_passwd | from_json }}): expected string or buffer"}
- What is the proper way to get those values supplied by
getent_passwd
into one flat string joined by ":"? - Is it safe to use genent module with
key: "root"
this way instead ofecho "root:x:0:0:not really root:::" >> /chroots/sftpuser/etc/passwd
? - one can run
getent passwd user1 user2
- is it possible to supply two keys to the ansible's getent module somehow?
ansible - 使用 Ansible 和 Jinja2 将 Unicode 转换为字符串
我需要帮助将 Unicode 变量转换为字符串,以便下面的 Ansible 构造起作用。
在这种特殊情况下,我想使用该item.keys()
方法来获取当前env
名称(即uat
),但我得到[u'uat']
了。我一直在搜索互联网,但找不到转换[u'uat']
为简单uat
.
defaults/main.yml
:
tasks/main.yml
:
tasks/dosomething.yml
:
错误信息:
或者,我也欢迎其他方法,只要数据结构(即defaults/main.yml
文件)保持不变。
ansible - ansible 输出打印不需要的东西。如何格式化和仅显示特定数据
我在 centos 中使用 ansible 2.4,尝试在远程服务器中运行以下脚本并获取输出。这里的问题是 yum 信息输出也以 json 格式显示。但我只需要显示输出。如何删除 json 格式。
我也是回调模块的新手。请帮我解决这个问题。