返回
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

其他(漏洞提交、投诉举报等)

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

同意 不同意

我已阅读并同意云轴科技 《法律声明》《隐私政策》用户管理规则及公约

业务咨询:

400-962-2212 转 1

商务联系:

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

同意 不同意

我已阅读并同意云轴科技 《法律声明》《隐私政策》用户管理规则及公约

业务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

其他(漏洞提交、投诉举报等)

400-962-2212 转 3
立即咨询
姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

同意 不同意

我已阅读并同意云轴科技 《法律声明》《隐私政策》用户管理规则及公约

业务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

其他(漏洞提交、投诉举报等)

400-962-2212 转 3
培训认证合作伙伴申请
姓名应该不少于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
其他业务(漏洞提交、投诉举报等)
400-962-2212 转 3

联系我们

回到顶部

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

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io

成功提交申请。

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

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