返回
ZStack实践汇|ZStack云平台应用Linux系统User Data教程
2021-02-25 09:08

前言


目前大部分公有云、私有云都在使用Cloud-init,已经成为虚拟机元数据管理和OS系统配置初始化的事实标准。最早Cloud-init由Ubuntu的母公司 Canonical 开发,主要思想是当用户首次创建虚拟机时,将前台设置的主机名,密码或者秘钥等存入metadata server(即存放元数据的服务器)。在云平台环境下当Cloud-init随虚拟机启动而运行时,能够获取修改信息并修改主机配置,完成系统的环境初始化。


Cloud-init简介


Cloud-init是专为云环境中虚拟机的初始化而开发的工具,它从各种数据源读取相关数据并据此对虚拟机进行配置,向一台数据服务器获取元数据(meta data)和用户数据(user data),前者是指VM的必要信息,如主机名、网络地址等;后者是系统或用户需要的数据和文件,如用户组信息、启动脚本等。当Cloud-init获取这些信息后,开始使用一些模块对数据进行处理,如新建用户、启动脚本等。常见的配置包括:设定虚拟机的hostname、hosts文件、设定用户名密码、调整文件系统的大小(注意不是调整分区的大小)等。


Cloud-init在ZStack云平台中的实现



Linux系统 User Data镜像封装


一、安装Cloud-init服务——下载并上传Cloud-init的rpm软件包到云主机中


1、在ZStack平台中使用User Data功能,需提前确保Linux云主机镜像已安装Cloud-init,且Cloud-init推荐版本为:0.7.9、17.1。以Cloud-init 0.7.9版本为例,可使用该链接下载相关软件包,如图1所示:

01.png

图1 下载完成

http://repo.telcobridges.com/centos/7/os/x86_64/Packages/cloud-init-0.7.9-24.el7.centos.x86_64.rpm


2、使用 Xshell 的 FTP 工具或者SecureCRT的SecureFX、WinSCP等工具上传Cloud-init的rpm 包到Linux云主机当中,例如/root目录下,再使用ls命令查看是否上传成功,如图2所示:

02.png

图2 ls命令查看


二、安装并启动Cloud-init服务


1、YUM源基于RPM包管理,能够从指定的服务器自动下载RPM包安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。所以需执行以下命令来安装Cloud-init服务:


# yum localinstall cloud-init-0.7.9-24.el7.centos.x86_64.rpm -y


2、Cloud-init服务安装完成过后,需手动启动cloud-init服务;Cloud-init服务启动过后默认会设置开机自启,所以无需再设置开机自启cloud-init服务;执行完过后,需查看cloud-init服务是否处于active状态,如图3所示:

03.png

图3 查看cloud-init服务状态


三、修改云主机网卡配置文件


制作云主机镜像之前需要将云主机网卡配置文件/etc/sysconfig/network-scripts/ifcfg-***中的MAC地址以及UUID注释掉,避免使用该镜像创建云主机时产生冲突,网卡配置文件则保留参数配置,如图4所示:

04.png

图4 网卡配置文件


User Data云主机镜像封装


云主机Cloud-init服务安装并启动完成且网卡配置文件MAC地址及UUID注释掉过后,就可以进行云主机镜像封装。在ZStack私有云主菜单,点击云资源池 > 云主机按钮 > 选中云主机 > 点击云主机操作 > 创建云主机镜像,如图5、图6、图7所示:


05.jpg

图5 点击创建云主机镜像


06.png

图6 创建云主机镜像


07.png

图7 创建云主机镜像成功


User Data功能场景


场景一:Linux系统—自动安装Apache服务


一、创建Linux系统User Data云主机


1、在ZStack私有云主菜单,点击云资源池 > 云主机按钮,进入云主机界面;点击创建云主机按钮,在弹出的创建云主机页面,可参考以下示例输入相应内容,这里所使用的镜像是之前Linux系统已安装cloud-init服务的镜像,三层网络选择私有网络,如图8所示:


08.png

图8 创建Linux系统User Data云主机


2、本次测试是YUM本地源安装Apache服务,需要在创建云主机时加载ISO,在弹出的创建云主机页面中,点击高级选项,选择加载ISO,本次使用CentOS-7-x86_64-DVD-2003.iso作为YUM安装的本地源,如图9所示:


09.webp.jpg

图9 选择ISO


3、编写User Data功能参数利用本地YUM源安装Apache服务,需在User Data编写方框中编写才生效。

使用本地YUM源安装Apache服务配置参数如下所示,仅供参考。

#cloud-config

bootcmd:

- mkdir /etc/yum.repos.d/blk

- mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/blk

- touch /etc/yum.repos.d/centos.repo

- echo -e "[cloud]\nname=cloud\nbaseurl=file:///mnt\ngpgcheck=0\nenabled=1" >> /etc/yum.repos.d/centos.repo

mounts:

- [ /dev/sr0, /mnt, iso9660, "defaults" ]

mount_default_fields: [/dev/sr0, /mnt, 'iso9660', 'defaults', '0', '0']

runcmd:

- [ sh, -c, systemctl stop firewalld ]

- [ sh, -c, yum clean all && yum makecache ]

 - [ sh, -c, yum install httpd -y ]

 - [ sh, -c, systemctl enable httpd ]

 - [ sh, -c, systemctl start httpd ]

 - echo hello,world!!  >> /var/www/html/index.html

 - [ sh, -c, systemctl restart httpd ]


4、在User Data编写框内编写完使用本地YUM源安装Apache服务配置参数,点击确定开始创建云主机,如图10所示:


010.webp.jpg

图10 确定创建Linux系统User Data云主机


二、验证


1、打开当前云主机的控制台,可以登录云主机系统,使用root用户登录到云主机系统当中,查看云主机IP地址,如图11所示:


011.png

图11 查看云主机IP地址


2、使用Google Chrome或者Firefox浏览器输入当前云主机IP地址,验证Apache服务是否安装成功,并显示所写网页内容,如图12所示:


012.png

图12 验证Apache服务



场景二:Linux系统—自动格式化挂载磁盘


一、创建Linux系统User Data云主机


1、在ZStack私有云主菜单,点击云资源池 > 云主机按钮,进入云主机界面,点击创建云主机按钮,在弹出的创建云主机页面,可参考以下示例输入相应内容,这里所使用的镜像是之前Linux系统已安装cloud-init服务的镜像,三层网络选择私有网络,如图13所示:


013.webp.jpg

图13 创建Linux系统User Data云主机


2、本次测试是自动格式化挂载磁盘,需要在创建云主机时加载数据云盘,在弹出的创建云主机页面中,点击高级选项,选择数据云盘规格,本次使用40G的云盘作为数据盘进行格式化挂载,如图14所示:


014.png

图14 选择数据云盘规格



3、编写User Data功能参数自动格式化挂载磁盘,需在User Data编写方框中编写才生效。

自动格式化挂载磁盘配置参数如下所示,仅供参考。

注意:如果创建云主机时数据云盘开启了VirtioSCSI,则在Linux系统内磁盘盘符为sda..sdd等;如果未开启VirtioSCSI,则在Linux系统内磁盘盘符为vda..vdd等,本次测试数据云盘开启了VirtioSCSI。

#cloud-config

bootcmd:

 - mkdir /mnt/disk

 - mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 -d agcount=16 /dev/sda

 - echo -e "ls -l /dev/disk/by-uuid/ |grep sda |awk '{print\$9}' > /root/diskuuid\nmount /dev/disk/by-uuid/\`cat /root/diskuuid\` /mnt/disk" >> /root/mount.sh

runcmd:

 - [ sh, -c, bash /root/mount.sh ]

 - echo hello,world!! >> /mnt/disk/hello.txt

 - rm -rf /root/diskuuid

 - rm -rf /root/mount.sh


4、在User Data编写框内编写完自动格式化挂载磁盘配置参数,点击确定开始创建云主机,如图15所示:


015.webp.jpg

图15 编写完User Data参数配置


二、验证


1、打开当前云主机的控制台,可以登录云主机系统,使用root用户登录到云主机系统当中,查看数据云盘系统是否已经加载,如图16所示:


016.png

图16 查看数据云盘


2、查看数据云盘是否已经挂载到对应目录下,本次测试在挂载目录下创建了hello.txt文件并写入了内容,证明该数据云盘是否可用,验证有数据表示测试成功,如图17所示:


017.png

图17 验证


User Data注意说明


注意事项:需严格注意缩进,否则Userdata将无法生效。

 导入User Data前,需确保Userdata网络服务、DHCP网络服务均可正常使用;

● 默认情况下,扁平网络/云路由网络/VPC网络环境的Userdata网络服务、DHCP网络服务均启用;

● 若通过User Data方式设置主机名和root密码,请勿在SSH登录方式中再次设置主机名和root密码,避免冲突;

● 通过User Data设置root密码后,创建出的云主机详情页User Data中会展示明文密码,注意保护密码安全;

● Linux云主机导入User Data说明:

1、需提前确保Linux云主机镜像已安装cloud-init,且cloud-init推荐版本为:0.7.9、17.1、19.4、19.4以后版本

2、若使用已安装cloud-init的云主机镜像创建Linux云主机,必须导入User Data,否则cloud-init任务会持续等待直到超时

● Windows云主机导入User Data说明:

1、需提前确保Windows云主机镜像已安装Cloudbase-Init,且Cloudbase-Init版本无限制,Cloudbase-Init的具体安装方法可参考Cloudbase官方文档

2、若使用已安装Cloudbase-Init的云主机镜像并创建Windows云主机,必须导入User Data,否则Cloudbase-Init任务会持续等待直到超时

 使用User Data时,一个二层网络仅支持配置一个三层网络。


如需查看完整版教程,请点击该链接进行下载:

http://cdn.zstack.io/tools/ISO-forSH/ZStack%E4%BA%91%E5%B9%B3%E5%8F%B0%E5%BA%94%E7%94%A8%20User%20Data%E6%95%99%E7%A8%8B.docx


升级提醒

若您选择升级至4.0.0及之后版本,请注意以下功能调整:

1. 云路由器全面升级为VPC路由器,云路由网络全面升级为VPC网络,不再单独设云路由器页面。升级全程无感知,相关业务不受任何影响。

2. 企业管理账号体系取代用户组与用户,不再单独设用户/用户组页面,不可再使用用户/用户组账号登录云平台。升级前,请先将“用户组与用户”纳管的账号数据妥善迁移至“企业管理”纳管,再执行升级操作。注意:对于admin创建并具备admin权限的用户账号同步取消,如有需要,可使用企业管理账号体系中的平台管理员实现相同功能。

3. 调整AD/LDAP与账户的对接管理方式,统一由企业管理纳管,不再单独设AD/LDAP页面。升级前,请先将“账户”对接纳管的AD/LDAP账号数据妥善迁移至“企业管理”纳管,再执行升级操作。

如对上述升级提醒有任何疑问或需要升级帮助,请联系ZStack官方技术支持

下载ZStack企业版

您已填写过基本信息?点击这里

姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

下载链接将会通过邮件形式发送至您的邮箱,请谨慎填写。

下载ZStack企业版

还未填写过基本信息?点击这里

邮箱或手机号码格式错误
验证手机号
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
登录观看培训视频
仅对注册用户开放,请 登录 或 填写资料 观看培训视频
填写资料

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io
ZStack认证培训咨询
姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

商务咨询:

400-962-2212 转 1

商务联系:

channel@zstack.io
申请ZStack多机版
姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io
立即咨询
姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io
培训认证合作伙伴申请
姓名应该不少于2个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
邮箱格式错误
城市名称不应该少于2个字符
公司名称不应该少于4个字符
职位名称不应该少于2个字符

商务咨询:

400-962-2212 转 1

商务联系:

channel@zstack.io
ZStack&工信人才联合证书申请
已获得ZStack原厂证书
未获得ZStack原厂证书
请填写您的基本信息
姓名应该不少于2个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
邮箱格式错误
城市名称不应该少于2个字符
公司/学校名称不应该少于4个字符
证书类型
ZCCT
ZCCE
ZCCA
ZCPC-ISP
申请ZStack&工信人才联合证书须支付工本费,是否可以接受

商务咨询:

400-962-2212 转 1

商务联系:

channel@zstack.io

下载链接已发送至您的邮箱。

如未收到,请查看您的垃圾邮件、订阅邮件、广告邮件。 当您收到电子邮件后,请点击 URL 链接,以完成下载。

下载链接已发送至您的邮箱。

如未收到,请查看您的垃圾邮件、订阅邮件、广告邮件。
或点击下方URL链接 (IE内核浏览器请右键另存为), 完成下载:

感谢您使用 ZStack 产品和服务。

成功提交申请。

我们将安排工作人员尽快与您取得联系。

感谢您使用 ZStack 产品和服务。

信息提交成功。

我们将安排工作人员尽快与您取得联系,请保持电话畅通。

感谢您使用 ZStack 产品和服务。

产品咨询

扫码立即线上沟通

联系我们

产品咨询
400-962-2212 转 1
售后咨询
400-962-2212 转 2

联系我们

回到顶部

产品试用申请
请选择您要试用的产品
ZStack Cloud 企业版
ZStack Cloud 混合云版
ZStack Cloud 基础版
ZStack Cloud 标准版
请填写您的基本信息
姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io

成功提交申请。

我们将安排工作人员尽快与您取得联系。

感谢您使用 ZStack 产品和服务。