Init工具 本文主要介绍如何配置CloudInit工具 操作场景 CloudInit工具安装完成后,请参考本节操作配置CloudInit工具。 前提条件 已安装CloudInit工具。 已为云主机绑定弹性公网IP。 已登录云主机。 云主机的网卡属性为DHCP方式。 配置步骤说明 包含如下两步操作: 1.配置CloudInit工具。 具体操作请参考配置CloudInit工具。 2.检查CloudInit工具相关配置是否成功。 具体操作请参考检查CloudInit工具相关配置是否成功。 配置CloudInit工具 1.用户可以根据需要根据用户类型配置登录云主机的用户权限。使用root账户登录,需要开启root用户的ssh权限,并开启密码远程登录。 −若用户选择注入密码,则通过自己注入的密码进行远程SSH或noVNC登录。 −若用户选择注入密钥,则通过自己注入的密钥进行远程SSH登录。 2.设置开放root密码远程登录并开启root用户的ssh权限。 以CentOS 6.7系列操作系统为例,在“/etc/cloud/cloud.cfg”设置“disableroot”值为“0”表示不禁用(部分OS的CloudInit配置使用“true”表示禁用,“false”表示不禁用),设置“sshpwauth”为“1”启用密码远程登录,“lockpasswd”设置为“False”表示不锁住用户密码。 users: name: root lockpasswd: False disableroot: 0 sshpwauth: 1 3.在配置文件“/etc/cloud/cloud.cfg”中禁用CloudInit接管网络。 当CloudInit版本等于或高于0.7.9版本时,在配置文件“/etc/cloud/cloud.cfg”中增加如下内容,禁用CloudInit接管网络。 说明: 增加的内容需严格按照yaml格式进行配置。 图 禁用CloudInit接管网络 4.配置agent访问OpenStack数据源。 在“/etc/cloud/cloud.cfg”最后一行添加如下内容,配置agent访问OpenStack数据源。 datasourcelist: [ OpenStack ] datasource: OpenStack: metadataurls: [' maxwait: 120 timeout: 5 applynetworkconfig: false 说明: maxwait和timeout可由用户自定义是否需要配置,上述回显信息中maxwait和timeout的取值仅供参考。 当操作系统版本低于Debian8、CentOS 5时,不支持配置agent访问OpenStack数据源。 CentOS、EulerOS操作系统云主机必须要禁用默认的zeroconf路由,以便精确访问OpenStack数据源。 echo "NOZEROCONFyes" >> /etc/sysconfig/network applynetworkconfig: false为可选项,对于使用CloudInit 18.3及以上版本的用户,需添加此配置项。 5.在配置文件“/etc/cloud/cloud.cfg”中补充如下内容。 manageetchosts: localhost 防止启动云主机时,系统长时间卡在“Waiting for cloudResetPwdAgent”状态。 图 新增manageetchosts: localhost 6.执行vi /etc/ssh/sshdconfig命令,在vi编辑器中打开“/etc/ssh/sshdconfig”。 将“sshdconfig”中的“PasswordAuthentication”的值修改为“yes”。 说明: 如果是SUSE和openSUSE操作系统,需要同时配置“sshdconfig”文件中的以下两个参数为“yes”。 PasswordAuthentication ChallengeResponseAuthentication 7.修改配置文件“cloudinitmodules”。 将ssh从最后提前到第一位处理,提高云主机ssh登录速度。 开启机器名更新机制,请勿注释或删除“ updatehostname”语句。 cloudinitmodules: ssh migrator bootcmd writefiles growpart resizefs sethostname updatehostname updateetchosts rsyslog usersgroups 8.修改以下配置使得镜像创建的云主机主机名不带“.novalocal”后缀且主机名称中可以带点号。 a.执行如下命令,修改“init.py”文件。 vi /usr/lib/python./sitepackages/cloudinit/sources/init.py 不同OS安装的python版本有差异,请选择对应的路径。 按“i”进入编辑模式,根据关键字toks查询,修改内容如下信息所示。 if toks: toks str(toks).split('.') else:
来自: