Ansible:使模板使用在不同文件中定义的变量进行不同的运行

时间:2018-08-27 06:52:51

标签: ansible

我在剧本中有一个任务,如下所示:

target 'mobilesdkIntegrationTests' do
  // write here any predefined pods if any, like
  testing_pods
end

现在,我有一些变量,每次运行时在文件中定义的变量中有些是常见的,有些则有所不同。

例如,文件- 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中定义的变量,依此类推。

这怎么能做到呢?我应该将这些文件保存在哪里,以便任务每次运行只能包含该特定文件?

1 个答案:

答案 0 :(得分:2)

这是角色机制演变的场景:

  1. 在剧本目录中创建一个my_role角色。

  2. 将任务和模板移到该角色。

  3. 将变量存储在该角色的vars目录中。

  4. 执行以下角色:

    - 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