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

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

---
- 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 示例如下

 ---
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脚本生成

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

  

ansible创建vmware虚拟机的更多相关文章

  1. 从ghost映像.gho文件快速创建vmware虚拟机

    从ghost映像.gho文件快速创建vmware虚拟机 https://www.cnblogs.com/blog2018/p/8857146.html ghost文件.gho和vmware文件都是磁盘 ...

  2. vmrun 批量创建vmware虚拟机

    1 准备模板机 具体步骤如下: 1. 下载镜像安装系统 https://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/ 2. 安装完成配置好IP ,关闭 ...

  3. VMWare虚拟机安装创建虚拟机的使用教程

    VMWare虚拟机安装创建虚拟机的使用教程   在配置虚拟机之前需要安装它,VMWare软件的安装过程比较简单,在安装在之前应该先看下说明文档.下面以VMWare Workstation6.5虚拟机 ...

  4. 如何让VMware低版本运行VMware高版本创建的虚拟机

    如何让VMware低版本运行VMware高版本创建的虚拟机 问题描述: 本机安装的VMware Workstation是10版本,之前VMware Workstation 11版本创建的虚拟机,在运行 ...

  5. VMware 创建VMware9虚拟机及设置详细教程

    创建VMware9虚拟机及设置详细教程 by:授客 QQ:1033553122 1.点击Create a New Virtual Machine图标按钮,或者file->new virtual ...

  6. 使用VMWare虚拟机创建CentOS版本号的Linux学习环境(每一步都有截图与说明)

    学习Android开发.假设不学习Linux的基本使用,总感觉心里过意不去,由于毕竟Android还是搭载在Linux的基础之上的. 因此.学习一种Linux系统的基本操作.对我们以后的学习还是非常有 ...

  7. vmware创建centos虚拟机

    下载centos 安装之前你需要下载centos镜像:http://mirrors.aliyun.com/ 创建虚拟机 如果还没有安装vmware请参考:https://www.cnblogs.com ...

  8. 如何在VMware workstation上创建Linux虚拟机

    由于需要使用Linux虚拟机部署Hadoop集群,故在win10系统上安装了VMware workstation 14,现将介绍如何在VMware workstation上创建Linux虚拟机.下面以 ...

  9. VMware 虚拟机添加硬盘以及为新添加的硬盘创建Samba共享 (转)

    一.为VMware虚拟机添加硬盘 1. 首先在VMware虚拟机的VM->Setting子菜单中为虚拟机添加一块15G大小的SCSI类型的硬盘(注意:如果原来为IDE硬盘,SCSI类型的硬盘可能 ...

随机推荐

  1. ingress-nginx 添加https证书

    1.配了一个证书,发现报错: kubectl logs  ingress-nginx-controller-96fnv   -n ingress-nginx unexpected error vali ...

  2. Zephyr的Threads

    Threads介绍了一个线程的创建.调度以及删除过程.

  3. oracle pls-00382:表达式类型错误

    转载至:pls-00382:表达式类型错误 错误:pls-00382:表达式类型错误 如何产生: 我是在将一个动态sql付给一个nvarchar2变量是出现这个错误的,示例代码如下: declare ...

  4. C# DllImport 相对路径无法找到dll

    原文:C# DllImport 相对路径无法找到dll 如题,近期在开发过程中,需要调用C++的库,一般来说,使用下面的方法即可正常调用: [DllImport("hci_sys.dll&q ...

  5. 浅谈MySQL引擎(纯个人理解,如有错误请指正)

    MySQL有很多引擎,MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(BerkeleyDB).EXAMPLE.FEDERATED...等等 比较常用的就是InnoDB和MyI ...

  6. 2017NOIP游记

    记得去年这个时候,大概刚接触OI.没想到时间这么快,第一次2017NOIP之旅已经结束.初测成绩出来了,100+100+95+50=345,有浙江三十几名(@Cptraser 机房370大佬).总体感 ...

  7. 【php增删改查实例】第二十一节 - 用户修改功能

    19.1 添加用户修改的按钮 打开userManage.html,找到新增按钮的地方: 我们不难发现,编辑按钮就差不多应该在新建用户的右边. 那么,假如我现在是新人,对这个项目本身就不太熟悉,那么我得 ...

  8. linux 下隐藏进程的一种方法

    前言 本文所用到的工具在 https://github.com/gianlucaborello/libprocesshider 可以下载 思路就是利用 LD_PRELOAD 来实现系统函数的劫持 LD ...

  9. 如何使用chrome浏览器进行js调试找出元素绑定的点击事件

    大家有没有遇到这样的一个问题,我们在分析一些大型电子商务平台的Web前端脚本时,想找到一个元素绑定的点击事件,并不是那么容易,因为有些前端脚本封装的比较隐蔽,甚至有些加密脚本,用传统的查找元素ID.或 ...

  10. Linux内核分析——第四章 进程调度

    第四章 进程调度 4.1 多任务 1.多任务操作系统就是能同时并发的交互执行多个进程的操作系统. 2.多任务操作系统使多个进程处于堵塞或者睡眠状态,实际不被投入执行,这些任务尽管位于内存,但是并不处于 ...