我正在尝试使用Ansible修改一组ESXI服务器上的DNS设置。我已经能够让我的攻略更改单个服务器上的设置,如下所示:
---
- hosts: localhost
tasks:
- name: Configure ESXi hostname and DNS servers
vmware_dns_config:
hostname: 'myesxiserver.domain.local'
username: 'username'
password: 'password'
dns_servers:
- x.x.x.x
- x.x.x.x
delegate_to: localhost我如何让它在多台服务器上工作?Ansible文档提供了以下示例:
---
- hosts: localhost
tasks:
- name: Configure ESXi hostname and DNS servers
vmware_dns_config:
hostname: '{{ esxi_hostname }}'
username: '{{ esxi_username }}'
password: '{{ esxi_password }}'
change_hostname_to: esx01
domainname: foo.org
dns_servers:
- 8.8.8.8
- 8.8.4.4
delegate_to: localhost我不清楚如何遍历主机列表并将正确的值传递到我的每台服务器的变量'{{ esxi_hostname }}‘中。我假设可以使用清单文件传递变量,但我还没有找到任何关于如何为ESXI服务器这样做的好例子。
发布于 2021-05-21 02:31:06
所以我把它弄好了。
---
- hosts: localhost
vars_files:
- vars.yml
- vars2.yml
tasks:
- name: Configure ESXi hostname and DNS servers
vmware_dns_config:
hostname: "{{ item }}"
username: 'myadmin'
password: "{{ Password }}"
validate_certs: no
change_hostname_to: "{{ item }}"
domainname: foo.org
dns_servers:
- x.x.x.x
- x.x.x.x
delegate_to: localhost
loop: "{{ esxihost }}"我必须使用vars_file传递主机名列表,并使用循环关键字对其进行迭代。我尝试将{{inventory_hostname}}变量与一个标准清单文件一起使用,但是因为在ESXi服务器上通常没有默认启用SSH,所以我会得到一个SSH连接错误。
https://stackoverflow.com/questions/67479694
复制相似问题