文档章节

用ansible自动供应vmware虚拟机

回忆书签
 回忆书签
发布于 2017/06/08 20:50
字数 1417
阅读 119
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

用ansible自动供应vmware虚拟机

@(技术笔记本)[ansible, vmware, toWordPress]

1.1 简述

一直以来,打开邮箱被ticket糊一脸的事情时有发生。我一直在想,能不能以一种简单的方案(不花老板的钱)来供应(provisioning)虚拟机呢? 我不喜欢openstack,因为太重,太复杂,除了自服务其它那些编排功能暂时也用不上。我也不喜欢vmware的云套件,因为不想和vmware有太深的羁绊,以至于将来可能会失业什么的。 所以我一直在寻找一种简单粗暴的办法。

我尝试过用虚机模版,把各种东西都装好打一个大包,以后每次手动改一下配置。用了一阵时间就会发现,模版版本多到自己都晕了。 而且还要祈祷这些模版不用变(可能吗?),因为如果有一个配置要修改,虽然模版改好了, 但是你之前创建的那一堆虚机实例就只能加班慢慢手工操作了。

后来, 我听说了IAC的思路, 我很喜欢这个想法。用管理代码的方式来管理基础架构,一切代码化。利用IAC工具的特性(比如非常重要的幂等性)将虚机模版和配置解耦合。 所有配置都从模版中拿出来,放在代码中。如果有修改只需要修改相应的代码然后重新刷一遍已经生成的实例就行了。

puppet、 ansible 都是不错的工具, 但是我喜欢简单,因此在用了一年多puppet后还是倒向了ansible 现在我们所有的供应,配置,发布都在用ansible

此笔记说的是如何通过ansible 简单的通过虚拟机模版创建虚机实例。

1.2 版本和环境

版本需求

  • python 2.6以上
  • pyvmomi
  • ansible 2.3 以上
  • vsphere 6.0 (据说5.5以上都行)

pyvmomi 是vmware公司维护的, 将vmware api 直接做了python 绑定。

安装pyvmomi模块
pip install pyvmomi

ansible的版本要求较高,主要是我们需要让启动后的虚机实例自动配置上ip,主机名等。这些功能只在2.3以上版本提供。

1.3 VM 模版

模版名: rhel7.1-mini-vs6-ansible-normal_v2.1

我用的模版就是rhel7.1(centos 7.1) 的mini安装,最小安装什么都没有,然后安装开源vmware tools open-vm-tools 包信息如下

rpm -qi open-vm-tools
Name        : open-vm-tools
Version     : 10.0.5
Release     : 4.el7_3
Architecture: x86_64
Install Date: Fri 02 Jun 2017 05:33:32 PM CST
Group       : Applications/System
Size        : 1623590
License     : GPLv2
Signature   : RSA/SHA256, Thu 09 Feb 2017 02:49:53 PM CST, Key ID 199e2f91fd431d51
Source RPM  : open-vm-tools-10.0.5-4.el7_3.src.rpm
Build Date  : Sat 04 Feb 2017 12:26:30 AM CST
Build Host  : x86-030.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
URL         : http://open-vm-tools.sourceforge.net/
Summary     : Open Virtual Machine Tools for virtual machines hosted on VMware
Description :
The open-vm-tools project is an open source implementation of VMware Tools. It
is a suite of open source virtualization utilities and drivers to improve the
functionality, user experience and administration of VMware virtual machines.
This package contains only the core user-space programs and libraries of
open-vm-tools.

无需配置ip主机名等,这些配置都是随后自动改的, 注意要删掉sshd的所有key,按照金模版的标准做虚拟机模版(推荐,不是必须) 具体步骤随后转一片文章说明。

安装好后,就可以在vmware里面制作成模版了。

1.4 playbook

ansible模块说明: vmware_guest - Manages virtual machines in vcenter http://docs.ansible.com/ansible/vmware_guest_module.html

代码例子: vm_provisioning.yml

---
- hosts: localhost   ## 在本机执行,因为其实是在调用vcenter的api,因此不是以前登陆再配置的模式
  gather_facts: No
  connection: local  ## 本地连接

  tasks:
  - name: create the VM
    vmware_guest:
      hostname: vcenter的ip地址
      username: vcenter的用户名  #如果是用的windows域 那就写 xxx@xxxdomain.com
      password: vcenter的用户的密码
      validate_certs: no  #这里注意,跳过证书检验,但是这里我遇到坑,后面说。
      datacenter: DataCenter1 
      esxi_hostname: 某个esxi主机      #  esxi_hostname和cluster只能选一个
      #cluster: DataCenter-HA-V6.0    #  指定esxi机器或者不指定写集群名
      name: ansiblemade_3             #  虚拟机名,在Vcenter中看到的名字
      annotation: ansible auto created  # 注释
      state: poweredon                #  开机状态 有:
									  #		present  
									  #		absent   删除,小心使用
									  #		poweredon
									  #		poweredoff
									  #		restarted
									  #		suspended
									  #		shutdownguest
									  #		rebootguest

      guest_id: rhel7_64Guest         # 从以下地址选一个对应的,必须一致。
             # https://www.vmware.com/support/developer/converter-sdk/conv55_apireference/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html
      disk:                           # 磁盘列表,这里是一个列表,模版里面做了几块盘都要把配置写上
      - size_gb: 16
        type: thin
        datastore: store1
      - size_gb: 8
        type: thin
        datastore: store1
      #hardware:                    # 虚拟机配置,因为是基于模版创建,这里都pass了
      #  memory_mb: 512
      #   num_cpus: 1
      # scsi: paravirtual
      networks:                     # 对应的网络信息
      - name: VM Network 1
        ip: vm——guest的ip
        netmask: 255.255.255.0
        gateway: x.x.x.x
      customization:
        hostname: ansiblemade
        domain: xxx.com
        dns_servers:
        - 8.8.8.8
        - 8.8.4.4
      template: rhel7.1-mini-vs6-ansible-normal_v2.1  # 这个是上一步创建的虚机模版  
      wait_for_ip_address: yes   # 等待创建的机器ip出来后再继续
    delegate_to: localhost
    register: deploy

执行playbook:

ansible-playbook vm_provisioning.yml

如果顺利就会创建出一个虚拟机,然后就可以用ansible继续做配置。

但是。。。

1.5 坑

还是遇到一个坑。vcenter连接都是https的,使用的是自签发的证书。 然而这里validate_certs: no的配置并未生效

网上找了很多说法,有的说是python的,有的说是ansible的。

从一个叫Jonathan Frappier 的哥那里找到了最直接办法。 :P 直接修改pyvmomi的connect.py 不管要不要验证ssl证书, 都改成不验证。

简单,粗暴, 有效!

如下:

/usr/lib/python2.7/site-packages/pyVim/connect.py

try:
if sslContext is not None and sslContext.verify_mode == ssl.CERT_NONE:
sock = requests.get(url, verify=False)
else:
sock = requests.get(url, verify=False)  ## 修改这里,然后删掉connect.pyc就行了

记得备份哦。 修改以后,以上过程就都能跑通了。

记录到此。

本文转载自:jiangjiang.space/2017/06/08/用ansible自动供应vmware虚拟机/

回忆书签
粉丝 0
博文 23
码字总数 3350
作品 0
海淀
项目经理
私信 提问
Ansible 开发环境的搭建

通常我不喜欢写开发环境搭建类文章的,但是见到不少同学在 Ansible 的开发环境花了很多时间。所以,就想写这么一篇文章。希望能帮助到有需要的同学。 在介绍开发环境搭建之前,需要介绍 Ansi...

翟志军
11/06
0
0
7款DevOps云计算基础设施自动化工具

  【IT168 技术】DevOps的诞生极大的推动了云计算行业的快速发展。因为使用正确的工具,现在可以进行从配置、代码部署到服务器配置和自动化的所有工作。而选择的工具主要取决于现有的基础设...

it168网站
2017/04/01
0
0
Horizon 6.0 和 Virtual SAN:VMware 中的一组完美搭配

原文:http://www.punchingclouds.com/2014/04/09/horizon-6-0-virtual-san-match-made-vmware/ 在今天的特别网络广播活动中,VMware 正式宣布发布 VMware Horizon 6.0。此版本设计用于满足当...

SDS_Revolution
2014/06/27
0
0
ansible之介绍

一.ansible介绍常用的自动化运维工具Puppet —基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱SaltStack —基于 Python 开发,采用 C/S 架构,相对 puppet 更轻量...

演员的blog
2018/01/01
0
0
在VMware虚拟机软件中安装的Ubuntu虚拟机的窗口不能自动调整大小的解决办法

在 VMware虚拟机软件 中安装的 Ubuntu虚拟机 的窗口不能自动调整大小的解决办法:   配置虚拟机时,发现屏幕大小太小,一般解决思路是:需要安装vmware tools ,屏幕就会自适应 。 问题如下...

黑泽明军
2018/03/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里云视频云正式支持AV1编码格式 为视频编码服务降本提效

今天我们要说的 AV1 可不是我们平时说的 .AVI 文件格式,它是由AOM(Alliance for Open Media,开放媒体联盟)制定的一个开源、免版权费的视频编码格式,可以解决H.265昂贵的专利费用和复杂的...

一肥仔
16分钟前
8
0
软件缺陷静态分析 CodeSonar 5.2 新版发布

对于使用C和C++构建安全关键软件的开发团队而言,CodeSonar一直是首选的静态分析解决方案。在近期发行的版本中,CodeSonar通过使用开放标准来扩展其语言覆盖范围,并增加了对Java、C#、Obj...

旋极科技
17分钟前
5
0
数据迁移

1. insert into values 或 insert into select批量插入时,都满足事务的原子性与一致性,但要注意insert into select的加锁问题。 2. replace into与insert into on duplicate key update都可...

qiang123
24分钟前
6
0
Linux装Windows系统后还不会激活?3招教你搞定

     相信大家已经发现荣耀MagicBook科技尝鲜版有多“香”了,不但可以轻松的将Linux系统装回Windows系统,还足足省下了300大洋!但是装回系统就万事大吉了吗?NoNoNo,我们还需要去激活...

梅丽莎好
26分钟前
6
0
Tomcat8源码分析-请求处理过程

上一篇:Tomcat8源码分析-启动流程-start方法 此篇主要讲Tomcat8从接收请求到处理请求的时序图画出来,并用文字描述一下主要流程 时序图 说明 文字描述流程之前先提示如下两点: 1.Acceptor...

特拉仔
28分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部