制作windows puppet openstack镜像

由于电信需要远程部署软件,拟使用puppet进行远程服务管理

前提

  1. windows系统已经安装
  2. windows已经安装virtio driver
  3. 远程桌面开启,最好关闭防火墙

设置MTU

在没有安装cloudinit情况下需要手动配置mtu大小为1454,否则无法上网。

设置hosts文件

把一些常用的host放到C:/windows/system32/driver/etc/host,尤其是master的,务必设置!!

设置时间同步

agent需要和master保持时间同步,因此需要设置windows更新时间服务器为master

安装win32-dir

需要安装win32-dir 版本大于0.43, 安装方法为管理员start command prompt with puppet, run:

gem install win32-dir

修改puppet facter下的timezone

timezone默认输出中文,会出现编码错误,设置setcode 为英文字符,最好是世界时区标准格式

安装clouinit

下载地址:官网

关机

在这前清空puppet ssl目录,位于C:/programdata,并根据实际情况可以设置puppet.conf 。为了减少磁盘文件大小,最好运行下磁盘
清理,并删除掉一些无用文件。

格式转化

把格式转化,一方面为了合并base image,另一方面也可以起到重新整理磁盘文件,减少文件大小,run:

qemu-img convert -O qcow2 origin.qcow2 new.qcow2

上传镜像

把镜像上传到glance下,记得设置os_type = windows,否则会出现RTC时间问题

启动主机

启动云主机,记得设置os_type = windows, 原因同上!

总结问题

windows puppet只能安装agent,安装过程,在这里.
安装过程比较简单,但在运行agent时会遇到几个问题。

1. Error: Could not run: ”\xB2" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to UTF-16LE

这是win32-dir库bug,需要升级,使用管理员身份运行start command prompt with puppet,然后运行:

gem install win32-dir
gem list

确保运行gem list后win32-dir版本大于0.4.3。

2. could not intern from pson XXXX

这是由于编码问题造成的,master在获取facter变量时不能有中文(或者保证传输的编码和master一致),运行facter后发现timezone
输出中文。简单的解决办法是,修改facter的timezone,位于

安装路径:C:\Program Files\Puppet Labs\Puppet\facter\lib\facter.

根据实际情况修改setcode值,我是直接硬编码为"UTC+8",或者可以参照世界时区标准记法。

certificate verify failed: [CRL is not yet valid for /CN controller

这是由于agent和master clock不同步造成的,openstack中创建windows云主机时需要指os_type为windows,才能社会之RTC为localtime,否则时间会不准。

posted @ 2016-03-23 12:12  int32bit  阅读(673)  评论(0编辑  收藏  举报