ansible的roles中不同主机使用不同变量文件
时间: 2024-04-30 14:19:48 浏览: 14
在Ansible的roles中,可以使用不同的变量文件来为不同的主机提供不同的变量值。以下是一个示例:
1.首先,在roles目录中为每个主机创建一个目录,目录的名称应与主机的名称相同。
2.在每个主机目录中创建一个vars目录,并在其中创建一个名为“main.yml”的变量文件。
3.在每个主机目录中的“main.yml”文件中定义主机特定的变量。例如,对于主机“webserver1”,可能会定义以下变量:
```
---
http_port: 80
https_port: 443
```
4.在playbook中使用“hosts”关键字指定主机,并使用“vars_files”关键字指定要使用的变量文件。例如:
```
- name: Configure web servers
hosts: webserver1,webserver2
vars_files:
- roles/webserver1/vars/main.yml
- roles/webserver2/vars/main.yml
tasks:
- name: Copy configuration file
template:
src: templates/config.j2
dest: /etc/myapp/config
```
在上面的示例中,Ansible将使用“roles/webserver1/vars/main.yml”文件中定义的变量为“webserver1”主机提供变量值,使用“roles/webserver2/vars/main.yml”文件中定义的变量为“webserver2”主机提供变量值。同时,Ansible将在两个主机上执行“Copy configuration file”任务,并使用从“config.j2”模板生成的配置文件。