由于电信需要远程部署软件,拟使用puppet进行远程服务管理
前提
- windows系统已经安装
- windows已经安装virtio driver
- 远程桌面开启,最好关闭防火墙
设置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 FilesPuppet LabsPuppetfacterlibfacter.
根据实际情况修改setcode值,我是直接硬编码为"UTC+8",或者可以参照世界时区标准记法。
certificate verify failed: [CRL is not yet valid for /CN controller
这是由于agent和master clock不同步造成的,openstack中创建windows云主机时需要指os_type为windows,才能社会之RTC为localtime,否则时间会不准。