ZStack实践汇|ZStack云平台应用Linux系统User Data教程

前言

目前大部分公有云、私有云都在使用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所示:
图1 下载完成
图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所示:

在这里插入图片描述

图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所示:
在这里插入图片描述
图3 查看cloud-init服务状态

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

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

在这里插入图片描述
图4 网卡配置文件

User Data云主机镜像封装

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

在这里插入图片描述

图6 创建云主机镜像
在这里插入图片描述

图7 创建云主机镜像成功

User Data功能场景

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

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

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

在这里插入图片描述

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

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

图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所示:

在这里插入图片描述

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

二、验证

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

在这里插入图片描述

图11 查看云主机IP地址

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

在这里插入图片描述图12 验证Apache服务

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

图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所示:

在这里插入图片描述

图15 编写完User Data参数配置

二、验证

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

在这里插入图片描述

图16 查看数据云盘

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

在这里插入图片描述

图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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值