在Ansible的清单文件中,可以使用变量和条件语句来为相同的IP地址设置不同的组名。以下是一个示例:
清单文件(inventory.ini):
[web_servers]
192.168.1.100
[app_servers]
192.168.1.100
[database_servers]
192.168.1.101
剧本文件(playbook.yml):
- hosts: all
gather_facts: false
tasks:
- name: Set group name based on IP address
set_fact:
group_name: "{{ hostvars[inventory_hostname].ansible_default_ipv4.address }}"
when: inventory_hostname in groups['web_servers']
- name: Add host to group
add_host:
groups: "{{ group_name }}"
hostname: "{{ inventory_hostname }}"
when: group_name is defined
在这个示例中,我们使用了set_fact
模块来设置一个名为group_name
的变量,该变量的值是根据主机的IP地址动态生成的。然后,我们使用add_host
模块将主机添加到相应的组中。
运行这个剧本时,主机192.168.1.100
将被添加到web_servers
和app_servers
组中,而主机192.168.1.101
将被添加到database_servers
组中。
请注意,这只是一个示例,你可以根据自己的需求进行调整和扩展。