CloudBase-init简介
cloudbase-init 是 Windows 和其他系统的云初始化程序,可以设置主机名、创建用户、设置静态ip、设置密码等。对应的linux初始化程序是cloudinit,都是开源的Python项目。官方文档:http://cloudbase-init.readthedocs.io/en/latest/index.html
cloudbase-init主要包括两部分services和plugins。Service主要为plugins提供数据来源,来源包括指定的云服务(openstack、ec2等)、本地配置文件(iso文件、物理磁盘)等。plugins即为执行相关操作的插件,像初始化ip、创建用户等。
实现功能
首先, 下载你所需要的安装包, 新版本为0.9.11,之后安装并在配置文件中填入最适合你的选项. 基于当前 cloudbase-init 安装包的安装方式, 他将会在 C:\Program Files or C:\Program Files (x86) as Cloudbase Solutions\Cloudbase-Init目录中. 其中目录结构如下所示:
- bin - 可执行文件和其他二进制文件.
- conf - 配置文件
- log - cloudbase-init相关日志.
- LocalScripts - 用户提供的脚本
安装完成之后, cloudbase-init 作为一个使用服务和通过插件去执行的两个步骤的服务, 通过这种方式去支持所有的配置. 根据平台不同的插件可能需要重启.
配置文件解析:
[DEFAULT] # 创建什么用户以及用户属于什么组. username=Admin #一般都是改为Administrator groups=Administrators inject_user_password=true # 从元数据中获取密码 (非随机). # 那个设备是可能的配置驱动 (元数据). config_drive_raw_hhd=true config_drive_cdrom=true # 与ubuntu中功能相同的tar命令默认路径. bsdtar_path=C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Init\bin\bsdtar.exe # 日志等级. verbose=true debug=true # 日志存放路径. logdir=C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Init\log\ logfile=cloudbase-init-unattend.log default_log_levels=comtypes=INFO,suds=INFO,iso8601=WARN logging_serial_port_settings= # 启用最大传输单元和时间同步服务. mtu_use_dhcp_config=true ntp_use_dhcp_config=true # 存放用户用于执行的脚本的路径. local_scripts_path=C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Init\LocalScripts\ # 服务将会检测以下驱动直到某个能够成功获取元数据. metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService, #可以开启ConfigDrive和httpservice(Openstack) cloudbaseinit.metadata.services.httpservice.HttpService, cloudbaseinit.metadata.services.ec2service.EC2Service, cloudbaseinit.metadata.services.maasservice.MaaSHttpService # 需要执行的插件. plugins=cloudbaseinit.plugins.common.mtu.MTUPlugin, cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin, cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin, cloudbaseinit.plugins.windows.userdata.UserDataPlugin, cloudbaseinit.plugins.windows.setuserpassword.SetUserPasswordPlugin, cloudbaseinit.plugins.windows.localscripts.LocalScriptsPlugin # 其他配置. allow_reboot=false # allow the service to reboot the system stop_service_on_exit=false
cloudbase-init-unattend.conf配置文件与默认的类似以及它用户系统准备阶段. 他被用于最小化用户交互以及要求有MTU和修改主机名的插件的这种场景, 让镜像准备好进行进一步的初始化.