在主机清单文件hosts-学号后两位中,使用Inventory主机变量,实现如下需求: 使用dnf模块,针对主机Host1安装httpd服务,针对主机Host2安装vsftpd服务
时间: 2024-11-03 22:13:18 浏览: 4
vagrant-hostmanager:一个Vagrant插件,用于在多计算机环境中管理主机文件
在Ansible的`hosts`配置文件中,你可以通过`Inventory`主机变量来实现基于特定主机的不同操作。首先,你需要按照主机名或某些标签将主机分组,并在每个组里设置相应的服务安装任务。
例如,假设你的主机名称分别为`Host1`和`Host2`,它们的后两位学号是区分因素,你可以在`hosts`文件中添加类似这样的内容:
```yaml
[web_servers]
Host1
Host2
[web_servers:httpd]
# 如果后两位学号等于01,则安装httpd
hostvars.Host1.web_server_package = httpd
[virtual_servers]
Host1
Host2
[virtual_servers:vsftpd]
# 如果后两位学号等于02,则安装vsftpd
hostvars.Host2.virtual_server_package = vsftpd
```
然后,在`playbook.yml`或其他相关的Ansible脚本中,你可以像这样引用这些变量:
```yaml
---
- name: Install web servers packages
hosts: web_servers
tasks:
- name: Install httpd on Host1 (if applicable)
become: yes
package:
name: "{{ hostvars[inventory_hostname].web_server_package }}"
- name: Install virtual server packages
hosts: virtual_servers
tasks:
- name: Install vsftpd on Host2 (if applicable)
become: yes
package:
name: "{{ hostvars[inventory_hostname].virtual_server_package }}"
```
在这里,`inventory_hostname`会自动替换为你当前正在处理的具体主机名。
阅读全文