ansible - Ansible:使模板使用不同文件中定义的变量进行不同的运行
问题描述
我在剧本中有一个任务,如图所示:
- name: Create configuration.json for every analytics from the template.
template:
src: ./src-zip/{{ item.key }}/configuration_sample.j2
dest: ./src-zip/{{ item.key }}/configuration.json
with_dict: "{{ apps }}"
现在,我有变量,其中一些是常见的,有些是在每次运行的文件中定义的不同。
就像,有var_alerts-manager.yml
一次运行的文件。对于另一次运行,我有var_abc.yml
.
现在我想为不同的运行使用不同的文件。换句话说,模板将使用var_alerts-manager.yml
在一次运行和abc.yml
另一次运行中定义的变量,依此类推。
如何在 ansible 中实现这一点,我应该将这些文件保存在哪里,以便任务每次运行只能包含该特定文件?
解决方案
这是角色机制演变的场景:
my_role
在您的剧本目录中创建一个角色。将您的任务和模板移至该角色。
将变量存储
vars
在角色的目录中。执行角色:
- name: Create configuration.json for every analytics from the template. include_role: name: my_role vars_from: "{{ item.key }}" # or whatever key your naming is defined in loop: "{{ apps|dict2items }}"
为了清楚起见,您可能想item
用其他一些变量替换模板任务内部,请阅读loop_control
.
推荐阅读
- pytorch - 由于此代码中的某些内容,我的 Google Colab 不断崩溃。不确定它是什么
- c# - 如何从后面的代码中动态添加 ASP.NET Web 窗体中的 quirks 模式元标记?
- amazon-web-services - fargate ECS 任务公网 IP 地址有限制吗?
- bash - Bash脚本shell:如何将文件名对应的变量用于嵌套for循环
- spring - 我可以在同一个 Spring 应用程序中同时使用 JDBC 和 R2DBC 吗?
- c# - 有谁知道如何在 Swagger SwashBuckle 的可用授权对话框中隐藏 client_id 和 client_secret?
- sql-server - SQL Server:Left Join Select 语句收到错误“查询优化期间查询处理器用尽堆栈空间”
- c++ - 我在窗口中有一个 fltk Fl_Choice 下拉菜单,但只能通过鼠标使用
- google-bigquery - Merge BigQuery structs of different types/lengths
- python-3.x - 从sqlalchemy中的相同多态类型继承的两个模型的多对一关系