云计算&虚拟化-kvm初始化cloud-init(二)

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。由于涉及到内容较多,这里的目录就只是以简单分类介绍和说明,不再针对单个小节进行目录列出,主要涉及的分类包括以下几个方面:

1.虚拟化介绍

2.kvm基本使用

3.kvm进阶使用(本小节属于)

4.kvm技术原理

5.vmware介绍&使用

6.小结

我们上一小节介绍了cloud-init能做什么;我们今天这一小节,将通过具体配置来理解这个cloud-init。

1.虚拟机安装cloud-init

csharp 复制代码
#找一个提前安装好系统的虚拟机
yum -y install cloud-init

这个软件安装以后,会在服务器里面生成多个服务,软件对应的配置文件位于/etc/cloud目录。

bash 复制代码
#配置开机启动#这里并不需要启动,因为我们这个是作为模板,下次创建虚拟机使用
systemctl enable cloud-init-local.service 
systemctl enable cloud-init.service
systemctl enable cloud-config.service
systemctl enable cloud-final.service

2.准备注入信息

yaml 复制代码
# 宿主机操作
[root@localhost ]#cat metadata.yaml
 instance-id: local01
local-hostname: mycloud-init-centos7

# 宿主机操作
[root@localhost ]#  cat user-data.yaml 
#cloud-config
users:
- default
- name: cloudinit
  groups: [sudo]
  sudo: ["ALL=(ALL) NOPASSWD:ALL"]
  shell: /bin/bash
  lock_passwd: false
  plain_text_passwd: centos
  chpasswd: { expire: false }
  ssh_pwauth: true

3.创建虚拟机

ini 复制代码
#直接在启动的时候注入cloud-init信息
virt-install \
  --name cloud-init7 \
  --ram 1024 \
  --vcpus 1 \
  --disk path=/mnt/cloud-init7.qcow2,size=20 \
  --os-variant centos7 \
  --network bridge=br0,model=virtio \
  --graphics vnc,listen=0.0.0.0 \
  --console pty,target_type=serial \
  --boot hd,menu=on \
  --cloud-init user-data=/mnt/user-data.yaml,meta-data=/mnt/metadata.yaml

从控制台日志可以看到cloud-init开始工作

csharp 复制代码
# cloud日志
[    2.505822] cloud-init[646]: Cloud-init v. 19.4 running 'init-local' at Thu, 07 Nov 2024 15:38:47 +0000. Up 2.49 seconds.

模板原始是静态ip,由于没有做网络配置,这里被cloud-init改成dhcp。

这里也对服务器的ssh信息进行配置,禁止了ssh的密码登录(因为默认配置文件就是这样)。

cloud-init继续工作

bash 复制代码
#读取到了我们的本地数据
ini 复制代码
#本地就是nocloud
[   33.812053] cloud-init[1251]: Cloud-init v. 19.4 finished at Thu, 07 Nov 2024 15:39:18 +0000. Datasource DataSourceNoCloud [seed=dmi,/dev/sr0][dsmode=local].  Up 33.80 seconds

4.主机名按照预期被修改

5.预设的账号cloudinit也自动创建

虽然这个演示基本达到了我们预设目的,但是还是有些问题的,**比如ip变成了dhcp,而且它还自动创建了一个centos的用户。**我们是否可以注入ip等信息,让它按照我们的注入信息进行配置。

另外一个问题是不支持账号登录,只能密钥登录,但是我们并没有传入公钥,导致无法ssh使用,这个问题要解决其实相对比较的简单。

makefile 复制代码
# 虚拟机里面修改,当然也可以通过配置文件注入。
vi /etc/cloud/cloud.cfg

#修改前
disable_root: 1
ssh_pwauth:   0

#修改后
disable_root: 0
ssh_pwauth:   1

#添加到文件末尾
datasource_list: ["NoCloud"]

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
孙克旭_2 小时前
PXE_Kickstart_无人值守自动化安装系统
linux·运维·自动化
皓月盈江3 小时前
Linux电脑本机使用小皮面板集成环境开发调试WEB项目
linux·php·web开发·phpstudy·小皮面板·集成环境·www.xp.cn
深井冰水3 小时前
mac M2能安装的虚拟机和linux系统系统
linux·macos
leoufung4 小时前
内核内存锁定机制与用户空间内存锁定的交互分析
linux·kernel
π大星星️4 小时前
HAProxy + Keepalived + Nginx 高可用负载均衡系统
运维·nginx·负载均衡
亚林瓜子5 小时前
AWS EC2源代码安装valkey命令行客户端
redis·云计算·aws·cli·valkey
IT专业服务商5 小时前
联想 SR550 服务器,配置 RAID 5教程!
运维·服务器·windows·microsoft·硬件架构
忧虑的乌龟蛋5 小时前
嵌入式Linux I2C驱动开发详解
linux·驱动开发·嵌入式·iic·i2c·读数据·写数据
I_Scholar6 小时前
OPENSSL-1.1.1的使用及注意事项
linux·ssl
Johny_Zhao6 小时前
K8S+nginx+MYSQL+TOMCAT高可用架构企业自建网站
linux·网络·mysql·nginx·网络安全·信息安全·tomcat·云计算·shell·yum源·系统运维·itsm