我们可以轻松地将特定于分发的任务和变量分离到不同的专用.yml文件中。Ansible帮助我们通过{{ ansible_distribution }}和自动识别目标主机分发{{ ansible_distribution_version }},因此我们只需要相应地命名分发专用.yml文件即可。
对于Ubuntu Xenial,基本角色目录树如下所示:
role ├── tasks │ ├── main.yml │ └── Ubuntu16.04.yml └── vars └── Ubuntu16.04.yml
tasks/main.yml现在,我们可以自动在目标主机分发中包含适当的变量和任务。
任务/ main.yml
--- - name: include distribution specific vars include_vars: "{{ ansible_distribution }}{{ ansible_distribution_version }}.yml" - name: include distribution specific install include: "{{ ansible_distribution }}{{ ansible_distribution_version }}.yml"
在内部tasks/Ubuntu16.06.yml,vars/Ubuntu16.04.yml我们现在可以分别为Ubuntu Xenial定义任务和变量。