云服务器cloud-init初始化工具的使用与配置_cloud-init

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文

#设置开机自启动
systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service


#### 2. 安装相应的包



ACPI服务是控制重启和关闭实例

yum -y install acpid
systemctl enable acpid

安装cloud-utils-growpart 允许分区调整

yum -y install cloud-utils-growpart

CentOS系统必须要禁用默认zeroconf路由,以便精确访问OpenStack数据源

echo “NOZEROCONF=yes” >> /etc/sysconfig/network

#配置GRUB_CMDLINE_LINUX内容
[root@centos7 ~]# vim /etc/default/grub
GRUB_CMDLINE_LINUX=“crashkernel=auto console=tty0 console=ttyS0,115200n8”
#保存更改
[root@centos7 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg


#### 3. 配置Cloud-Init工具


1. 用户可以根据需要根据用户类型配置登录云服务器的用户权限。使用root帐户登录,需要开启root用户的ssh权限,并开启密码远程登录。  
 o 若用户选择注入密码,则通过自己注入的密码进行远程SSH或noVNC登录。  
 o 若用户选择注入密钥,则通过自己注入的密钥进行远程SSH登录。


**配置ssh文件**



vim /etc/ssh/sshd_config
PasswordAuthentication yes


**在需要免密码登录的机器上执行下面命令,产生密钥对(controller节点上)**



ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ‘’
[root@controller ~]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCzU9H5oJxgPpWhtXPwETEpFx425UdirDrTBRt6K/kfx7T6AcnuxzIQ6T64TmGhi72FTz7KtfYUtoIzq7specBthD8X8DTA8C9A6nIEwuHgAh12i0OugmdMmzs8g1QvKxZknFOiX32dlWQBZqU1z9V0NmaMRAxvgvYK6YR5GrHFr5QfSr3rPCMOE1qmZ7QQwfxcEFcmwz1xK65LK1VZh1TPzj7DmW97Clr0F/a11a86ekw8uXsMeowSbdGH546y9FbJlopAPZyprS7kEcwUOaj9VcfF+1LxNjjeHuPsfoquYPElgd52GIC0HE+sW5f+9otbZt2GKZUFBeuehC7g05f root@controller


**编辑配置文件`/etc/cloud/cloud.cfg`**



> 
> 设置开放root密码远程登录并开启root用户的ssh权限。配置文件中的disable\_root字段为1表示为禁用,为0表示不禁用。设置disable\_root值为0,ssh\_pwauth为1,lock\_passwd设置为false,false表示不锁住用户密码。
> 
> 
> 



[root@centos7-2 ~]# cat /etc/cloud/cloud.cfg
users:

  • name: root
    ssh_authorized_keys:
    • ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCzU9H5oJxgPpWhtXPwETEpFx425UdirDrTBRt6K/kfx7T6AcnuxzIQ6T64TmGhi72FTz7KtfYUtoIzq7specBthD8X8DTA8C9A6nIEwuHgAh12i0OugmdMmzs8g1QvKxZknFOiX32dlWQBZqU1z9V0NmaMRAxvgvYK6YR5GrHFr5QfSr3rPCMOE1qmZ7QQwfxcEFcmwz1xK65LK1VZh1TPzj7DmW97Clr0F/a11a86ekw8uXsMeowSbdGH546y9FbJlopAPZyprS7kEcwUOaj9VcfF+1LxNjjeHuPsfoquYPElgd52GIC0HE+sW5f+9otbZt2GKZUFBeuehC7g05f root@controller

disable_root: 0
ssh_pwauth: 1

#datasource_list: [ ‘OpenStack’ ]
#datasource:

OpenStack:

metadata_urls: [“http://169.254.169.254”]

timeout: 5

max_wait: 60

preserve_hostname: flase
manage_etc_hosts: true

runcmd:

  • [ sh, -c, echo “=Welcome To OpenStack’=” >> /root/runcmd.log ]

cloud_init_modules:

  • ssh
  • migrator
  • bootcmd
  • write-files
  • growpart
  • resizefs
  • set_hostname
  • update_hostname
  • update_etc_hosts
  • rsyslog
  • users-groups

cloud_config_modules:

  • mounts
  • locale
  • set-passwords
  • yum-add-repo
  • package-update-upgrade-install
  • timezone
  • puppet
  • chef
  • salt-minion
  • mcollective
  • disable-ec2-metadata
  • runcmd
  • ntp-conf

cloud_final_modules:

  • rightscale_userdata
  • scripts-per-once
  • scripts-per-boot
  • scripts-per-instance
  • scripts-user
  • ssh-authkey-fingerprints
  • keys-to-console
  • phone-home
  • final-message
  • power-state-change

system_info:
distro: centos
paths:
cloud_dir: /var/lib/cloud/
templates_dir: /etc/cloud/templates/
ssh_svcname: sshd

vim:syntax=yaml

chpasswd:
list: |
root:XXXX@2019 #设置要修改的密码
expire: False


**用微秒生成随机密码的命令**



date +%N|sha512sum| head -c8


如果希望能够修改 instance 的 hostname(默认 instance 每次重启后 cloud-init 都会重新将 hostname 恢复成初始值),将`cloud_init_modules` 列表中下面两项删除或注释掉:



- set_hostname

- update_hostname


**(可选配置)在`/etc/cloud/cloud.cfg`文件中自定义网络配置**


在cloud.cfg文件增加该配置之后,cloud-init不会管理/etc/sysconfig/network-scripts/下网络配置,需要自行管理。



network:
config: disabled


**(可选配置)设置root用户密码**



chpasswd:
list: |
root:123456
expire: False


**修改以下配置使得镜像创建的云服务器主机名不带.novalocal后缀且主机名称中可以带点号。**  
 a. 执行如下命令,修改`__init__.py`文件



vim /usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py

if toks:
toks = str(toks).split(‘.’)
else :
toks = [“ip-%s” % lhost.replace(“.”, “-”)]
else :
toks = lhost.split(“.novalocal”)

if len(toks) > 1:
hostname = toks[0]
# domain = ‘.’.join(toks[1: ])
else :
hostname = toks[0]
if fqdn and domain != defdomain:
return “%s.%s” % (hostname, domain)
else :
return hostname



> 
> ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS1jYjcwMDgzNTE1NTkzMDIyLnBuZw?x-oss-process=image/format,png)
> 
> 
> 


**执行如下命令进入cloudinit/sources文件夹。**



cd /usr/lib/python2.7/site-packages/cloudinit/sources/
#执行如下命令,删除__init__.pyc文件和优化编译后的__init__.pyo文件
rm -rf init.pyc
rm -rf init.pyo
#执行如下命令,清理日志信息。
rm -rf /var/lib/cloud/*
rm -rf /var/log/cloud-init*


**执行以下命令编辑Cloud-Init日志输出路径配置文件,设置日志处理方式handlers**



#建议配置为cloudLogHandler。
vim /etc/cloud/cloud.cfg.d/05_logging.cfg

[logger_cloudinit]
level=DEBUG
qualname=cloudinit
handlers=cloudLogHandler
propagate=1



> 
> ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS03YWY2OTE1YmIyYmY5ODdlLnBuZw?x-oss-process=image/format,png)
> 
> 
> 


**检查Cloud-Init工具相关配置是否成功**


执行以下命令,无错误发生,说明Cloud-Init配置成功



[root@centos7 ~]# cloud-init init --local
Cloud-init v. 18.5 running ‘init-local’ at Wed, 27 May 2020 01:42:00 +0000. Up 1977.24 seconds.


**设置完成后关闭虚拟机,准备下一阶段生成镜像**



history -c
shutdown -h now


#### 4. 上传镜像到openstack


**如果对接ceph存储。可以把qcow2格式转换为raw格式的镜像再上传**  
 Ceph缺点是不支持从qcow2格式的镜像引导,所以需要转换raw格式的镜像



[root@kvm image]# ll -h /tmp/centos7.qcow2
-rw-r–r–. 1 root root 1.6G May 20 17:27 /tmp/centos7.qcow2

#将镜像从qcow2格式转换为raw格式;并下载到本地

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

[外链图片转存中…(img-iqhd5KSj-1713214500494)]

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
[外链图片转存中…(img-arNvzWeh-1713214500495)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值