Ansible:如何在条件语句中包含变量文件

时间:2015-10-02 17:16:15

标签: ansible

我有三套服务器。根据主机名,我希望客户端获取正确的文件。我在一台服务器上测试了剧本,其中包含" batch"但它会选择文件group_vars/perlgroup_vars/batch

pre_tasks:
  - include_vars: group_vars/web
    when: "'web' in ansible_hostname"
  - include_vars: group_vars/batch
    when: "'web' not in ansible_hostname"
  - include_vars: group_vars/perl
    when: "'web' not in ansible_hostname" or "'batch' not in ansible_hostname"

1 个答案:

答案 0 :(得分:2)

Ansible将为您处理group_vars。对于群组web中的所有主机,将自动包含group_vars/web(或group_vars/web.yml)的变种。请参阅Ansible文档中的Splitting Out Host and Group Specific Data

要回答有关条件变量包含的问题,您提供的示例是正确的语法。这是另一个例子,不使用group_vars:

- include_vars: vars/{{ ansible_distribution}}_packages.yml
  when: install_extra_packages is defined and
        install_extra_packages != ''

请注意include_vars接受表达式,因此您可以使用变量来确定要动态引入的vars文件。