Ansible:部署VM(Linux)的行动手册



我创建了这个剧本来从模板部署新的VM。现在,如果我尝试部署一个新的Linux虚拟机,它可以正常工作,但主机名不会自定义它从模板中保留了相同的主机名,我不知道为什么??

这是我的战术手册(这只是一个测试(:

- name: Clone multiple VMs
hosts: localhost 
gather_facts: false
vars_files: 
multiple_vms.yml
tasks: 
- name: Clone multiple Ubuntu VMS from Template
local_action:
module: vmware_guest
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: no      
folder: "{{ folder }}"
template: "{{ vmtemplate }}"
name: "{{ item }}"
cluster: "{{ vcenter_cluster }}"
datacenter: "{{ vcenter_datacenter }}"
state: poweredon
networks:
- name: "{{ network }}"
type: "{{ network_dhcp_or_static }}"
hardware:
memory_mb: {{ number_memory }}
num_cpus: {{ number_cpu }}
customization:
hostname: "{{ servers }}"
domain : "mydomaine.test"
#customization_spec: "{{ customization_spec }}"
with_items: "{{ servers }}"

其中vars multiple_vms.yml:

servers:
- ubuntu_test01
- ubuntu_test02
....

因此,我需要我的新VMS从服务器列表中获取主机名(ubunt_test01.mydomaine.test…etc(

感谢的帮助

使用vmware_guest和自定义选项

首先,尝试hostname: "{{ item }}"

第二,不要做循环的事情。进行适当的盘点,然后:

- name: Clone multiple VMs
hosts: all
gather_facts: false
vars_files: 
multiple_vms.yml
tasks: 
- name: Clone multiple Ubuntu VMS from Template
vmware_guest:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: no      
folder: "{{ folder }}"
template: "{{ vmtemplate }}"
name: "{{ ansible_hostname }}"
cluster: "{{ vcenter_cluster }}"
datacenter: "{{ vcenter_datacenter }}"
state: poweredon
networks:
- name: "{{ network }}"
type: "{{ network_dhcp_or_static }}"
hardware:
memory_mb: {{ number_memory }}
num_cpus: {{ number_cpu }}
customization:
hostname: "{{ ansible_hostname }}"
domain : "mydomaine.test"
delegate_to: localhost

注意:local_action已弃用。使用delegate_to: localhost

最新更新