任务一 理解OpenStack镜像服务
1.1 •什么是镜像
1.2 •什么是镜像服务
1.3 •Glance架构
1.4 •查看Glance配置文件
stores=file,http,swift
default_store=file
policy.json是镜像服务的策略配置文件。
1.5 •验证Glance服务
[root@node-a etc]# systemctl status *glance*.service
1.6 •试用镜像服务的API
(1)请求一个admin项目作用域的令牌。
[root@node-a ~]# curl -i -H "Content-Type: application/json" -d ' \
{ "auth": {
"identity": {
…
},
"scope": {
…
}
}
}' "http://localhost:5000/v3/auth/tokens"
(2)导出环境变量OS_TOKEN,并将其值设置为上述操作获取的令牌ID。
(3)通过Images API v1获取当前镜像列表。
[root@node-a ~]# curl -s -H "X-Auth-Token: $OS_TOKEN" http://localhost:9292/v1/images
{"versions": [{"status": "CURRENT", "id": "v2.9", "links": [{"href": "http://localhost:9292/v2/", "rel": "self"}]}, {"status": "SUPPORTED", "id": "v2.7", "links": [{"href": "http://localhost:9292/v2/", "rel": "self"}]}, … "links": [{"href": "http://localhost:9292/v2/", "rel": "self"}]}, {"status": "SUPPORTED", "id": "v2.0", "links": [{"href": "http://localhost:9292/v2/", "rel": "self"}]}]}
任务二 管理OpenStack镜像
2.1 •虚拟机镜像的磁盘格式
2.2 •虚拟机镜像的容器格式
2.3 •镜像的状态
2.4 •镜像的访问权限
2.5 •镜像的元数据
2.6 •命令行的镜像管理方法
(1)查看镜像
openstack image list
openstack image show 镜像名称或ID
(2)创建镜像
openstack image create [选项] 镜像名称
(3)更改镜像
openstack image set [选项] 镜像名称
openstack image unset [选项] 镜像名称
(4)删除镜像
openstack image delete <镜像名称或ID>
(5)镜像与项目关联。
openstack image add project [--project-domain 项目所属域] 镜像名或ID 项目名或ID
openstack image remove project [--project-domain 项目所属域] 镜像名或ID 项目名或ID
2.7 ••查看镜像
[root@node-a ~]# source keystonerc_demo
[root@node-a ~(keystone_demo)]# openstack image list
+------------------------------------+-------+-----+
| ID | Name | Status |
+------------------------------------+-------+-----+
| 369d0e73-abb8-4a90-b835-6c627a0f47d1 | cirros | active |
| 37116975-33c9-4d3e-8551-0c83e4efe7ef | fedora | active |
[root@node-a ~(keystone_demo)]# openstack image show fedora
2.8 •创建镜像
[root@node-a ~]# source keystonerc_admin
[root@node-a ~(keystone_admin)]# openstack image create --disk-format qcow2 --container-format bare --public --file ~/Downloads/CentOS-7-x86_64-GenericCloud.qcow2 centos7
2.9 •管理镜像
[root@node-a ~(keystone_admin)]# openstack image set --property architecture= x86_64 --property hypervisor_type=qemu fedora
2.10•转换镜像格式
qemu-img convert [-f 源格式] [-O 目标格式] [-o 选项] 源文件路径 目标文件路径
[root@node-a ~]# qemu-img convert -f raw -O qcow2 ~/Downloads/cirros-0.5.1-x86_64-disk.img ~/Downloads/cirros-0.5.1-x86_64-disk.qcow2
任务三 基于预制镜像定制OpenStack镜像
3.1 •什么是cloud-init
3.2 •什么是实例快照
3.3•对实例进行定制
(1)登录实例。
[root@node-a ~]# ssh -i ~/.ssh/demo-key.pem centos@192.168.199.50
(2)切换到root用户。
[root@cenos7-vm ~]$ sudo su -
(3)执行passwd命令设置root用户的密码。
[root@cenos7-vm ~]# passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
(4)使用vi工具编辑/etc/ssh/sshd_config配置文件,将其中的PasswordAuthentication参数值设置为yes,然后保存该文件并退出编辑,重启SSH服务。
(5)查看CentOS的详细版本。
[root@cenos7-vm ~]# cat /etc/redhat-release
(6)安装图形界面。
yum groupinstall "Server with GUI"
(7)将时区修改为上海。
[root@cenos7-vm ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp: overwrite '/etc/localtime'? y
(8)将系统语言修改为中文。
[root@cenos7-vm ~]# localectl set-locale LANG=zh_CN.UTF8
(9)设置系统默认启动图形界面。
[root@cenos7-vm ~]# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
3.4 •定制cloud-init初始化行为
[root@cenos7-vm ~]# reboot
3.5•将实例快照转换成镜像
[root@node-a ~(keystone_demo)]# openstack image list
+----------------------------------+---------------+--------+
| ID | Name | Status |
+----------------------------------+---------------+--------+
| 885aeabf-3753-43c0-865f-85d08083a1f1 | centos7 | active |
| c9e65002-07fc-4ed8-92f5-8c0ced750332 | centos7-gui-snap | active |
| 369d0e73-abb8-4a90-b835-6c627a0f47d1 | cirros | active |
| 37116975-33c9-4d3e-8551-0c83e4efe7ef | fedora | active |
[root@node-a ~(keystone_demo)]# openstack image create centos7-gui --file /var/lib/ glance/images/c9e65002-07fc-4ed8-92f5-8c0ced750332 --disk-format qcow2 --container- format bare
任务四 使用自动化工具制作OpenStack镜像
4.1 •Diskimage-builder工具
(1)将最初启动虚拟机实例时安装操作系统完成后的镜像保存为基础镜像。
(2)将该基础镜像挂载到本地。
(3)chroot到根分区。
(4)根据不同的定制需要增加不同的模块。
(5)安装完成后保存为特定格式的镜像文件。
4.2 •其他自动化镜像生成工具
4.3 •安装Diskimage-builder
(1)安装epel扩展源。
yum -y install epel-release
(2)安装pip工具。
yum -y install python-pip
(3)安装支持环境。
yum -y install qemu-img kpartx
(4)升级pip工具。
pip install --upgrade "pip < 20.0”
(5)安装Diskimage-builder。
pip install "diskimage-builder==2.2.0"
4.4 •熟悉Diskimage-builder的用法
disk-image-create [选项]…[元素]…
disk-image-create ubuntu vm
export ELEMENTS_PATH=~/source/tripleo-image-elements/elements
disk-image-create -a amd64 -o fedora-amd64-heat-cfntools vm fedora heat-cfntools
4.5 •使用Diskimage-builder自动构建Ubuntu操作系统镜像
[root@localhost ~]# export DIB_DEV_USER_USERNAME=ubuntu #初始用户名
[root@localhost ~]# export DIB_DEV_USER_PASSWORD=ubuntu #初始用户密码
[root@localhost ~]# export DIB_DEV_USER_PWDLESS_SUDO=YES #为用户启用无密码sudo
[root@localhost ~]# export DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, OpenStack
#cloud-init的源是ConfigDrive和OpenStack
[root@localhost ~]# disk-image-create -a amd64 -t qcow2 -o ubuntu.qcow2 ubuntu vm cloud-init-datasources devuser
任务五 手动制作OpenStack镜像
5.1 •手动制作镜像
5.2 •KVM虚拟化工具
5.3 •KVM虚拟磁盘(镜像)文件格式
★★如果要使用虚拟机快照,则选择.qcow2格式。
5.4 •VirtIO驱动程序与Cloudbase-init
5.5 •部署KVM
grep -E 'svm|vmx' /proc/cpuinfo
yum install qemu-kvm libvirt virt-install virt-manager virt-viewer