1. 程式人生 > >ansible創建vmware虛擬機

ansible創建vmware虛擬機

e1000e cer 精簡 tasks leg 示例 break cal virt

環境:vmware 虛擬化
需求:業務部門一次提幾十臺甚至幾百臺虛擬機需求

之前不管這一塊,由於人員減少,臨時需求也要搞搞了

使用ansible vmware_guest 創建虛擬機,避免手動一臺一臺創建的純手工 工作
廢話不多說,上代碼

---
- hosts: localhost   ## 在本機執行
  gather_facts: No
  connection: local  ## 本地連接
  vars_files:
    - myvars.yml
    - vcenter.yml
  tasks:
  - name: Create a virtual machine on given ESXi hostname
    vmware_guest:
      hostname: "{{hostname}}"
      username: "{{username}}"
      password: "{{password}}"
      validate_certs: no
      folder: /
      datacenter: "{{datacenter}}"
      name: "{{item.name}}"
      state: poweredoff
      guest_id: centos64Guest
      esxi_hostname: "{{item.esxi_hostname}}"
      disk:
      - size_gb: "{{ item.d1_size_gb}}"
        type: eagerzeroedthick    ##厚置備    thin 精簡置備
        datastore: "{{item.datastore}}"  ##存儲
      - size_gb: "{{ item.d2_size_gb}}"
        #type: eagerzeroedthick
        type: thin
        datastore: "{{item.datastore}}"
      hardware:
        hotadd_cpu: true
        hotremove_cpu: true
        hotadd_memory: true
        memory_mb: "{{item.memory_mb}}"
        num_cpus: "{{item.num_cpus}}"
        scsi: lsilogic  ##linux用lsilogic,win用lsilogicsas,  默認使用paravirtual  這是VMware自己的準虛擬
      networks:
      - name: vlan10  ##網絡名
        device_type: vmxnet3  ## win使用e1000e
    with_items:
      - "{{myvms}}"
    delegate_to: localhost
    register: deploy_vm

vcenter.yml 存放vcenter驗證信息
myvars.yml 是需要創建的虛擬機信息
myvars.yml 示例如下


---
datacenter: zm-A10  
myvms:
 - { name: 10.20.15.99_test1, esxi_hostname: 10.20.10.26, datastore: 10-26-localradi10, d1_size_gb: 50, d2_size_gb: 30, memory_mb: 8196, num_cpus: 4 }
 - { name: 10.20.15.105_test2, esxi_hostname: 10.20.10.23, datastore: 10_23-localraid10, d1_size_gb: 50, d2_size_gb: 40, memory_mb: 8196, num_cpus: 4 }

myvars.yml 可以直接用Python腳本生成

import re

outfile2 = open(‘myvars.yml‘, ‘w‘)
file_head = ‘‘‘ 
---
datacenter: zm-A10
myvms:
‘‘‘
outfile2.write(file_head)
with open(‘vm_list‘, ‘r‘) as f:
    while 1:
        line = f.readline()
        if not line:
            break
        linetest = re.split(r‘[;,\s]+‘, line)
        host2text = ‘‘‘ - { name: %s_%s, esxi_hostname: %s, datastore: %s, d1_size_gb: %s, d2_size_gb: %s, memory_mb: %s, num_cpus: %s }‘‘‘ % (linetest[0], linetest[1], linetest[2], linetest[3], linetest[6], linetest[7], linetest[5], linetest[4])
        print >> outfile2, host2text

ansible創建vmware虛擬機