云计算&虚拟化-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"]

运维小路

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

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

相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式