前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ansible创建vmware虚拟机

ansible创建vmware虚拟机

作者头像
yaohong
发布2019-09-11 10:09:14
1.2K0
发布2019-09-11 10:09:14
举报
文章被收录于专栏:姚红专栏姚红专栏

环境:vmware 虚拟化 需求:如果业务部门一次提几十台甚至几百台虚拟机需求,一个个的手动创建肯定耗时

使用ansible vmware_guest 创建虚拟机,避免手动一台一台创建的纯手工 工作 废话不多说,上代码

代码语言:javascript
复制
---
- hosts: localhost   ## 在本机执行
  gather_facts: No
  connection: local  ## 本地连接
  vars_files:
    - myvars.yml
    - vcenter.yml
  tasks:
  - name: Create a virtual machine from a template
    vmware_guest:
      hostname: "{{hostname}}"
      username: "{{username}}"
      password: "{{password}}"
      validate_certs: no
      folder: /
      datacenter: "{{datacenter}}"
      name: "{{item.name}}"
      state: poweredon
      esxi_hostname: "{{item.esxi_hostname}}"
      template: "{{item.sys_ver}}"
      disk:
      - size_gb: 51
        type: eagerzeroedthick    ## eagerzeroedthick厚置备零延迟   thin 精简置备
        datastore: "{{item.datastore}}"  ##存储
      - size_gb: "{{ item.d2_size_gb}}"
        #type: eagerzeroedthick
        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: "{{item.vlan}}"  ##网络名
        device_type: vmxnet3  ## win使用e1000e
        ip: "{{item.ip}}"
        netmask: 255.255.255.0
        gateway: "{{item.gw}}"
      customization:
        hostname: "{{item.hostname}}"
        dns_servers:
        - "{{item.dns1}}"
        - "{{item.dns2}}"
    with_items:
      - "{{myvms}}"
    delegate_to: localhost
    register: deploy

vcenter.yml 存放vcenter验证信息 myvars.yml 是需要创建的虚拟机信息 myvars.yml 示例如下

代码语言:javascript
复制
 ---
datacenter: zm-A10
myvms:

  - name: x.x.x.x_xx
    esxi_hostname: x.x.x.x
    datastore: x
    d1_size_gb: 50
    d2_size_gb: 100
    memory_mb: 16384
    num_cpus: 8
    ip: 
    gw: 
    dns1: 
    dns2: 
    vlan: vlan14
    hostname: xxxx
    sys_ver: centos6_moban

  - name: xxx
    esxi_hostname: xx
    datastore: xx
    d1_size_gb: 50
    d2_size_gb: 100
    memory_mb: 8192
    num_cpus: 4
    ip: 
    gw: 
    dns1: 
    dns2: 
    vlan: vlan14
    hostname: x
    sys_ver: centos7_moban

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

代码语言:javascript
复制
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)
        if linetest[12] is not None and linetest[12] != '' and linetest[12] == 'centos6':
            sys_version = 'centos6_moban'
        elif linetest[12] is not None and linetest[12] != '' and linetest[12] == 'centos7':
            sys_version = 'centos7_moban'
        else:
            sys_version = 'win2012_moban'
        if linetest[5] is not None and linetest[5].isdigit():
            memory = int(linetest[5]) * 1024
        host2text = '''
  - name: {0}_{1}
    esxi_hostname: {2}
    datastore: {3}
    d1_size_gb: {4}
    d2_size_gb: {5}
    memory_mb: {6}
    num_cpus: {7}
    ip: {8}
    gw: {9}
    dns1: {10}
    dns2: {11}
    vlan: {12}
    hostname: {13}
    sys_ver: {14}'''.format(linetest[0], linetest[1], linetest[2], linetest[3], linetest[6], linetest[7], memory, linetest[4], linetest[0], linetest[8], linetest[9], linetest[10], linetest[11], linetest[1], sys_version)
        print >> outfile2, host2text
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档