CentOS Cloud Image

好风 发表于 2017-11-13T06:31:47.502899Z
引用地址:https://plus.ooclab.com/note/article/1391

为了方便云环境中使用 CentOS , 可以使用定制的 os image 。

CentOS Cloud Image 给 cloud-init 做为初始化配置方案。

本文以 CentOS-7-x86_64-GenericCloud.qcow2.xz 为示例(即 CentOS-7-x86_64-GenericCloud-1710.qcow2.xz )下载

简介

CentOS Cloud Image 默认用户名是 centos , root 和 centos 用户都没有设置密码,只能使用 ssh 密钥登录。因此我们至少要配置好登录,否则无法使用系统。

cloud-init 配置示例

目标:添加我们的 ssh public key 到默认用户 (centos) 的 ~/.ssh/authorized_keys 文件中,这样就可以通过 ssh 远程登录系统。

创建配置 iso

创建 user-data 文件,内容如下:

#cloud-config

# 系统初始化完成删除 cloud-init 包
runcmd:
  - [ yum, -y, remove, cloud-init ]

# 保存初始化日志
output:
  all: ">> /var/log/cloud-init.log"

# configure interaction with ssh server
ssh_svcname: ssh
ssh_deletekeys: True
ssh_genkeytypes: ['rsa', 'ecdsa']

# 配置默认用户(centos)的ssh公钥,可以一次指定多个
ssh_authorized_keys:
  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABwpxzOBJ6m...pga0cjv+jB myname1@myhost1
  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABwpxzOBJ6m...pga0cjv+jB myname1@myhost2

创建 meta-data 文件,内容如下:

local-hostname: node01

创建 iso :

genisoimage -output config.iso -volid cidata -joliet -rock user-data meta-data

创建虚拟机,执行系统初始化

方式有很多种,只需要保证:

  1. 挂载 config.iso 作为光驱
  2. 注意虚拟机启动过程中的信息,观察虚拟机IP即可

注意:

  1. 如果是 libvirtd + dnsmasq 环境动态获取网络配置,虚拟机IP也可以通过查看对应的文件 /var/lib/libvirt/dnsmasq/网卡名.status 知晓

测试

ssh -v centos@虚拟机IP

如果能顺利登录即可说明 cloud-init 初始化顺利

Tips

libvirt 环境查看虚拟机 IP

方法一:/var/lib/libvirt/dnsmasq/virbr0.status

使用默认 NAT 网络,可以通过上面文件查看

方法二:virsh qemu-agent-command

使用其他网络配置

virsh qemu-agent-command Domain名称 '{"execute":"guest-network-get-interfaces"}'

参考