使用Ansible管理ESXi清单 批量修改多台ESXi服务器DNS设置咨询
解决方案
步骤1:编写Ansible清单文件
将所有ESXi主机信息整理到清单文件,单独划分esxi_hosts组统一管理。如果所有ESXi的账号密码、DNS服务器配置一致,可以配置组变量减少重复配置,单台主机有特殊配置的单独定义即可。
# inventory.ini 示例 [esxi_hosts] esxi01 esxi_hostname=esxi01.domain.local esxi02 esxi_hostname=esxi02.domain.local esxi03 esxi_hostname=esxi03.domain.local # 组公共变量,所有组内主机通用 [esxi_hosts:vars] esxi_username=root esxi_password=你的ESXi登录密码 dns_servers=["192.168.1.10", "192.168.1.11"]
步骤2:编写适配多主机的Playbook
直接将Playbook的目标主机指定为esxi_hosts组,Ansible会自动遍历组内所有主机,自动将对应主机的变量注入到任务中,无需手动编写循环逻辑。
--- - hosts: esxi_hosts gather_facts: no tasks: - name: 配置ESXi服务器DNS设置 vmware_dns_config: hostname: '{{ esxi_hostname }}' username: '{{ esxi_username }}' password: '{{ esxi_password }}' dns_servers: '{{ dns_servers }}' # 需要同步修改主机名、域名可新增以下两个参数,不需要则删除 # change_hostname_to: '{{ inventory_hostname }}' # domainname: yourdomain.local delegate_to: localhost
执行命令
执行时指定对应清单文件即可批量完成配置:ansible-playbook -i inventory.ini esxi_dns_config.yml
注意事项
- 密码明文存储在清单中有安全风险,可使用
ansible-vault加密清单文件或敏感变量 - 执行前请确认控制节点已安装vmware模块依赖:
pip install pyvmomi - 正式执行前可加
--check参数做模拟运行,验证配置逻辑正确后再正式执行
内容的提问来源于stack exchange,提问作者ring0
相关产品推荐
相关产品推荐

