操作场景
为了保证使用私有镜像创建的新云服务器可以通过“用户数据注入”功能注入初始化 自定义信息(例如为云服务器设置登录密码),请在创建私有镜像前安装Cloud-Init工 具。
● 安装Cloud-Init工具时需要从官网下载并安装,因此,需要提前为云服务器绑定弹 性公网IP。
● 不安装Cloud-Init工具,将无法对云服务器进行自定义配置,只能使用镜像原有密 码登录云服务器。
● 使用公共镜像创建的云服务器,默认已经安装Cloud-Init,不需要执行安装及配置 操作。
● 用户导入镜像创建的云服务器,请按照指导安装及配置Cloud-Init。配置Cloud-Init操作请参考配置Cloud-Init工具章节。
前提条件
● 已为云服务器绑定弹性公网IP。
● 已登录云服务器。
● 云服务器的网卡属性为DHCP方式。
安装步骤说明
1. 请先检查是否已安装Cloud-Init工具。
具体操作请参考检查是否已经安装Cloud-Init工具。
2. 安装Cloud-Init工具。
Cloud-Init安装方式分为:采用官方提供的包源安装Cloud-Init工具(优先推 荐)、采用官方提供的Cloud-Init源码包通过pip方式安装Cloud-Init工具和采用 官方源码编译安装方法。
检查是否已经安装 Cloud-Init 工具
请先执行如下步骤检查是否已安装Cloud-Init工具。
在不同的操作系统下,查看是否已经安装Cloud-Init工具的方法不同,以CentOS 6系列 为例,执行以下命令查看是否安装Cloud-Init工具。
rpm -qa |grep cloud-init
回显类似如下,表示已经安装Cloud-Init工具,无需重复安装。
cloud-init-0.7.5-10.el6.centos.2.x86_64
如果已安装Cloud-Init工具,还需要执行以下操作:
● 请确认当前云服务器操作系统中的证书是否继续使用。如果不再使用该证书,请 删除证书。
– root用户对应目录下的文件(如“/$path/$to/$root/.ssh/
authorized_keys”),执行以下命令:
cd /root/.ssh
rm authorized_keys
– 非root用户对应目录下的证书文件(如“/$path/$to/$none-root/.ssh/
authorized_keys”),执行以下命令:
cd /home/centos/.ssh rm authorized_keys
● 执行以下命令,清除Cloud-Init工具产生的缓存,确保使用该私有镜像创建的云服 务器可以使用证书方式登录。
sudo rm -rf /var/lib/cloud/*
说明
设置完成后请勿重启云服务器,否则,需重新设置。
采用官方提供的包源安装 Cloud-Init 工具(优先推荐)
在不同操作系统的云服务器上安装Cloud-Init工具的方法不同,请在root用户下执行相
● SUSE操作系统
以SUSE Enterprise Linux Server 12为例,Cloud-Init工具的安装步骤如下。
a. 登录到创建Linux私有镜像所使用的云服务器。
b. 执行以下命令,安装SUSE 12的网络安装源。
zypper ar http://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/
Tools/SLE_12_SP3/Cloud:Tools.repo c. 执行以下命令,更新网络安装源。
zypper refresh
d. 执行以下命令,安装Cloud-Init。
zypper install cloud-init
e. 执行以下命令,设置Cloud-Init为开机自启动服务。
▪
SUSE 11:chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on
service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status
▪
SUSE 12以及openSUSE 12/13/42:systemctl enable init-local.service init.service cloud-config.service cloud-final.service
systemctl status init-local.service init.service cloud-config.service cloud-final.service
注意
对于SUSE和openSUSE操作系统,请执行以下步骤禁止动态修改云服务器名 称。
1. 执行以下命令,使用vi编辑器打开“dhcp”文件。
vi etc/sysconfig/network/dhcp
2. 将“dhcp”文件中的“DHCLIENT_SET_HOSTNAME”的值修改为
“no”。
● CentOS操作系统
CentOS操作系统的Cloud-Init网络安装地址如表5-1所示。请在提供的网络安装地 址下选择相应的epel-release安装包进行安装。
表5-1 Cloud-Init 网络安装地址 操作系统
类型
版本 网络安装地址
CentOS 6系列32位 https://archives.fedoraproject.org/pub/archive/
epel/6/i386/
6系列64位 https://archives.fedoraproject.org/pub/archive/
epel/6/x86_64/
7系列64位 https://archives.fedoraproject.org/pub/epel/7/
x86_64/
此处以CentOS 6.5 64位为例,执行以下命令安装Cloud-Init。
yum install https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/
epel-release-xx-xx.noarch.rpm yum install cloud-init
说明
xx-xx表示当前操作系统对应的epel版本号。
● Fedora操作系统
安装Cloud-Init前,请确认操作系统已经配置好对应的网络安装源地址,请查看
“/etc/yum.repo.d/fedora.repo”文件中是否已配置相关软件包安装源地址,如果 没有配置相关地址源,请参考相关Fedora官网信息配置软件包安装源。
执行以下命令,安装Cloud-Init。
yum install cloud-init
● Debian和Ubuntu操作系统
安装Cloud-Init前,请确认操作系统已经配置好对应的网络安装源地址,请查看
“/etc/apt/sources.list”文件中是否已配置相关软件包安装源地址,如果没有配 置相关地址源,请参考Debian或者Ubuntu官网信息配置软件包安装源。
执行以下命令,安装Cloud-Init。
apt-get update
apt-get install cloud-init
采用官方提供的 Cloud-Init 源码包通过 pip 方式安装 Cloud-Init 工具
以cloud-init-0.7.9版本为例,Cloud-Init工具的安装步骤如下。
1. 下载cloud-init-0.7.9.tar.gz源码包(推荐优先选用0.7.9版本),上传到云服务器指 定目录“/home/”下。
cloud-init-0.7.9.tar.gz源码包下载地址:
https://launchpad.net/cloud-init/trunk/0.7.9/+download/cloud-init-0.7.9.tar.gz
[global]
index-url = https://<$mirror>/simple/
trusted-host = <$mirror>
说明
编辑内容中<$mirror>部分可以选择公网PyPI源或教育网PyPI源进行替换。
● 公网PyPI源:https://pypi.python.org/
● 教育网PyPI源:https://pypi.tuna.tsinghua.edu.cn/
https://pypi.mirrors.ustc.edu.cn/
3. 执行以下命令,安装本地下载的Cloud-Init源码包,安装过程中根据需要选择--upgrade参数。
pip install [--upgrade] /home/cloud-init-0.7.9.tar.gz
4. 执行命令cloud-init -v,如回显如下类似信息表示安装Cloud-Init成功。
cloud-init 0.7.9
5. 设置Cloud-Init相关服务为开机自启动。
– 若操作系统是sysvinit自启动管理服务,则执行以下命令进行设置。
chkconfig --add cloud-init-local; chkconfig --add cloud-init; chkconfig --add cloud-config; chkconfig --add cloud-final
chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on
service init-local status; service init status; service cloud-config status; service cloud-final status
– 若操作系统是systemd自启动管理服务,则执行以下命令进行设置。
systemctl enable init-local.service init.service cloud-config.service cloud-final.service
systemctl status init-local.service init.service cloud-config.service cloud-final.service
注意
采用官方提供的Cloud-Init源码包通过pip方式进行安装时要注意以下两点。
1. Cloud-Init安装时需要添加syslog用户到adm组。存在syslog用户时直接添加syslog 用户到adm组。不存在syslog用户时(如CentOS和SUSE),执行下列命令创建 syslog用户,添加到adm组:
useradd syslog groupadd adm
usermod -g adm syslog
2. 在“/etc/cloud/cloud.cfg”中system_info部分的distro要根据具体操作系统发行版 本做相应修改(如根据具体操作系统发行版相应修改为:distro: ubuntu,distro:
sles,distro: debian,distro: fedora)。
采用官方源码编译安装方法
官方源码编译安装方法的Cloud-Init工具Github开源地址:https://github.com/
canonical/cloud-init/
1.
wget https://github.com/canonical/cloud-init/archive/refs/tags/0.7.6.zip mkdir /tmp/CLOUD-INIT
cp cloud-init-0.7.6.zip /tmp/CLOUD-INIT cd /tmp/CLOUD-INIT
2. 执行如下命令,解压Cloud-Init压缩包。
unzip cloud-init-0.7.6.zip
3. 执行如下命令进入cloud-init-0.7.6文件夹。
cd cloud-init-0.7.6
4. 按照操作系统类型,执行相应的命令安装Cloud-Init安装包。
– CentOS6.x/SUSE11.x:
python setup.py build
python setup.py install --init-system sysvinit – CentOS7.x/SUSE12.x:
python setup.py build
python setup.py install --init-system systemd 说明
Cloud-Init安装时需要添加syslog用户到adm组。存在syslog用户时直接添加syslog用户到 adm组。不存在syslog用户时(如CentOS和SUSE),执行下列命令创建syslog用户,添加 到adm组:
useradd syslog groupadd adm
usermod -g adm syslog
5. 设置Cloud-Init相关服务为开机自启动。
– 若操作系统是sysvinit自启动管理服务,则执行以下命令进行设置。
chkconfig --add cloud-init-local; chkconfig --add cloud-init; chkconfig --add cloud-config; chkconfig --add cloud-final
chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on
service init-local status; service init status; service cloud-config status; service cloud-final status
– 若操作系统是systemd自启动管理服务,则执行以下命令进行设置。
6. 执行如下命令检查Cloud-Init是否安装成功。
cloud-init -v
cloud-init init --local
回显如下类似信息所示表示安装Cloud-Init成功。
cloud-init 0.7.6