问题标签 [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 - Ansible 高级变量解析
我是 Ansible 的新手,因此这个问题对于更高级的用户来说可能看起来很愚蠢,我不确定是否可以按照我的要求做,因为 Ansibel 在循环和条件方面非常有限。
我在 Virtual Connect 交换机上执行任务,因此我只能使用原始模块。
我有以下标准输出:
问题是 STDOUT 可以有多条线路,其中包含不同的配置文件,即我事先不知道线路号或 MAC 地址。
我想要实现的是状态检查。如果 ProfileCLO01ESX02
有 Network Name:Multiple Network
两次,那么我想跳过该任务。
每当我在谷歌上搜索解析变量或 STDOUT 时,我都会得到基本的答案。
Ansible 可以做到这一点,还是我被迫编写自定义脚本?
ansible - 从 json 响应 uri - 如何提取 json 键和值并使用 ansible json 查询过滤器验证它们?
使用 ANSIBLE:我从 url 获取 json 响应并打印响应,但无法打印特定的键/值。(请参阅 json 响应)在我的脚本中我会传递服务,所以我只想在标签下打印特定版本的服务。例如,我会将 abc 作为参数传递给 ansible playbook,然后我想在该标签下打印版本。我尝试了 json 查询过滤器,但无法得到这个。
我的 json 响应是这样的。
任何帮助将不胜感激。
ansible - 带有可变插值的 Ansible WHEN
从我在网上找到的资料来看,Ansible 在 jinja 模板方面并不能很好地支持变量插值。
但是我确信在 Ansible 中更高级的人已经找到了解决我的问题的方法。
我想将一个变量“插入”到WHEN语句中。IEwhen: Disabled in (smart_link_status.results[item[0]].stdout)
这是我的玩法:
我怎样才能做到这一点?似乎我可以使用普通模块轻松做到这一点,即调试但不能使用WHEN语句。
这工作正常:
任何帮助或指示将不胜感激。
ansible - Ansible concat 默认变量和文字字符串
我无法做一件非常简单的事情。
在我的任务中,我试图将两个默认变量与文字字符串连接起来以创建路径
这给了我一个错误。知道如何连接变量和文字字符串吗?
ansible - 是否可以使用 with_dict 模块和 ansible-fact ?
我正在尝试编写一个角色来配置一个 keepalived 集群。我希望根据目标框的 IP 将唯一信息传递到模板中。
在这种情况下:服务器 A 是 192.168.1.140,服务器 B 是 192.182.1.141,VIP 是 192.168.1.142
字典看起来像这样:
我希望任务看起来像这样:
模板看起来像这样:
任何见解将不胜感激约翰
ansible - 转义或区分 Ansible 中的 jinja 模板变量和.
历史:
在过去的几个月里,我们一直在使用 Ansible 来部署我们的服务和配置文件,并且我们一直在使用 Ansible 变量。变量被放置在我们的 (config_name).yml.j2 文件中,这使我们能够轻松地进行更改,而无需对所有配置进行硬编码。
例如在 Ansibles group_vars 中,我们可能有:
metric_port_var: "9100"
并且 (config_name).yml.j2 将包含一行:
EXPOSE_METRIC_PORT={{ metric_port_var}}
部署配置后,盒子上的配置现在是:
EXPOSE_METRIC_PORT=9100
问题:
现在我们正在为 AlertManager/Prometheus 部署配置。出现的问题是 AlertManager 也在我们尝试部署的自己的配置文件中使用 jinja 模板变量。这些其他 jinja 模板将来自盒子上的其他配置文件。
这意味着我们的 (config_name).yml.j2 理论上将包含大括号变量的混合,其中一些可能属于 Ansible,而另一些则属于另一个文件。
我们不能再使用 Ansible 的“模板”模块来部署我们的配置,因为在 group_vars 中找不到变量时会引发错误,因为特定的变量应该来自 AlertManager。
我们需要一种混合 jinja 模板或转义一些花括号而不是其他花括号的方法。现在我们回到硬编码我们的配置并让 AlertManager 使用所有变量。
ansible - Ansible 如何根据模板/剧本确保所有远程节点都处于所需状态
假设在运行剧本后,如果有人试图更改 Ansible 管理的一个/多个节点上的配置。那么 Ansible 如何知道他的一个/多个托管节点不同步并将其正确同步到所需状态。
我认为我们在其他自动化平台(如 Chef 和 Puppet)中也有此功能,其中远程代理定期运行以与主服务器模板同步。
还有什么是这样做的最佳实践。
ansible - Ansible concat vars 到字符串
我花了一天的大部分时间试图解决这个问题,但到目前为止都失败了。我正在构建一些剧本来自动化 Splunk 中的功能,并尝试从清单组 EG 转换主机列表
我从该剧的调试输出中得到的预期(期望)结果应该是:
https://1.2.3.4:8089, https://5.6.7.8:8089
我试图通过对正在运行的主机运行以下剧本来完成此操作:
使用模板bootstrap-sh-deployer.j2
:
但是,当前播放返回search_head_uri: ", "
告诉我循环正在运行,但{{ host }}
没有解决。
ansible - 直接在目标系统上更改值,而不是从源复制文件
使用 ansible 寻找直接在目标系统上更改值的想法,而不是从源复制文件。
例子:
我在目标系统上有许多 tmpl 格式的文件,并且想<%= applicationname_zk_quorum %>
通过动态使用 ansible 变量来更改与此相关的值。
我知道 ansible 变量仅支持处理 yaml 并且不知道是否可以为 tmpl 文件应用某些内容。
非常感谢大家的支持和指导!!!。
ansible - 将已执行的 ansible Tower 作业的作业类型从检查更改为重新运行时运行
在我的应用程序的持续交付步骤中,我希望 Jenkins 在作业类型检查中调用 ansible tower 作业(通过 tower cli)。
一旦 devops 团队决定发布它,我希望他们只需将作业类型更改为“运行”,以便可以进行实际部署。这个想法是保留 Jenkins 构建的工件的额外参数,如版本,并避免 devops 团队手动将它们复制到其他作业模板。
在 ansible tower 中,我没有看到将执行的检查作业编辑为运行作业类型的选项。有没有更好的方法来“缓存”塔中的部署信息以供以后部署?