我们现在迫不及待的想创建一个云主机来玩玩了,可是还不行,我们没有镜像。OpenStack 的 instance(实例,就是虚拟机/云主机) 是通过 Glance 镜像部署的,所以准备镜像是必须要做的工作。巧妇难为无米之炊嘛,先上传个镜像吧。
下载clould 镜像
最简单的方法是使用标准镜像。主流的Linux发行版都提供可以在 OpenStack 中直接使用的cloud镜像,下载地址:
CentOS6:http://cloud.centos.org/centos/6/images/
CentOS7:http://cloud.centos.org/centos/7/images/
Ubuntu14.04:http://cloud-images.ubuntu.com/trusty/current/
Ubuntu16.04:http://cloud-images.ubuntu.com/xenial/current/
1、执行环境变量
[root@qas-controller ~]# source admin-openrc.sh
2、查看openstack当前所有的镜像
[root@controller ~]# glance image-list
+--------------------------------------+-----------+
| ID | Name |
+--------------------------------------+-----------+
| 7eee97dc-c4f2-4cca-a77b-0ac558d4a365 | centos7.1 |
+--------------------------------------+-----------+
把镜像下载到服务器
注意openstack 下载名字中带有GenericCloud 的镜像,Azure是微软用的镜像。我们可以根据需要下载个最新的。关于镜像的详细介绍请参考
http://www.openstack.cn/?p=5784
# wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
3、修改centos官方提供openstack镜像密码
镜像root用户的初始密码是什么,查了半天差不到,只好先改它的密码了。
CentOS为各种不同的云环境提供cloud images,比如OpenStack,RHV,AZure,或KVM. 一般来说,是通过cloud-init工具来修改用户密码或SSH keys. 但是那似乎不太方便。 下面是一种方便的方法。
第一步,安装软件libguestfs-tools
[root@controller]# yum install libguestfs-tools
installed:
libguestfs-tools.noarch 1:1.36.3-6.el7_4.3
Dependency Installed:
hexedit.x86_64 0:1.2.13-5.el7 libconfig.x86_64 0:1.4.9-5.el7
libguestfs-tools-c.x86_64 1:1.36.3-6.el7_4.3 perl-Sys-Guestfs.x86_64 1:1.36.3-6.el7_4.3
perl-Sys-Virt.x86_64 0:3.2.0-1.el7 perl-libintl.x86_64 0:1.20-12.el7
设定一个固定密码,例如Test@0116,正确设置的结果如下
[root@controller ~]# virt-customize -a CentOS-7-x86_64-GenericCloud.qcow2 --root-password password:Test@0116
[ 0.0] Examining the guest ...
[ 3.8] Setting a random seed
[ 3.8] Setting passwords
[ 5.2] Finishing off
结果我的第一次报错了,如下:
virt-customize: error: libguestfs error: could not create appliance through
libvirt.
Try running qemu directly without libvirt using this environment variable:
export LIBGUESTFS_BACKEND=direct
Original error from libvirt: Cannot access storage file
'/root/CentOS-7-x86_64-GenericCloud.qcow2' (as uid:107, gid:107):
Permission denied [code=38 int1=13]
If reporting bugs, run virt-customize with debugging enabled and include
the complete output:
virt-customize -v -x [...]�[0m
对应方法如下,修改/etc/libvirt/qemu.conf,把user 和group的注释#去掉,
# user = "100" # A user named "100" or a user with uid=100
#
user = "root"
# The group for QEMU processes run by the system instance. It can be
# specified in a similar way to user.
group = "root"
然后重启libvirt,再改密码就没问题了。
[root@controller ~]# systemctl restart libvirtd
4、上传镜像
[root@qas-controller ~]# glance image-create --name "centos7.4" --file CentOS-7-x86_64-GenericCloud.qcow2 --disk-format qcow2 --container-format bare --visibility public --progress
[=============================>] 100%
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | b4548edf0bc476c50c083fb88717d92f |
| container_format | bare |
| created_at | 2018-01-16T03:25:12Z |
| disk_format | qcow2 |
| id | ab4e4940-b8c6-47fe-b7bb-3cd74a8a6c97 |
| min_disk | 0 |
| min_ram | 0 |
| name | centos7.4 |
| owner | ffaf3f6cd7a44f5fadad62e6dbc4356f |
| protected | False |
| size | 877985792 |
| status | active |
| tags | [] |
| updated_at | 2018-01-16T03:25:16Z |
| virtual_size | None |
| visibility | public |
+------------------+--------------------------------------+
[root@controller glance]# pwd
/data/glance
[root@controller glance]# ll
total 857408
-rw-r----- 1 glance glance 877985792 Jan 16 11:25 ab4e4940-b8c6-47fe-b7bb-3cd74a8a6c97
在页面上已经可以看到我们刚上传的镜像了。镜像文件保存在目录 /data/glance下面。这个目录的位置,我们可以通过配置文件来修改。
# vi /etc/glance/glance-api.conf
....
filesystem_store_datadir = /data/glance
.....
20161117200034427.png
5、 从控制台Dashboard上传 Glance镜像 另以ubuntu为例
登录 OpenStack,打开 “项目->Compute->镜像”菜单。
image
点击“创建镜像”按钮。
image在创建页面填写镜像相关信息,其中包括:
-
镜像名称为“Ubuntu 16.04”
-
“镜像源”选择“镜像文件”
-
点击“选择文件”定位Ubuntu 16.04的Cloud image文件xenial-server-cloudimg-amd64-disk1.img
-
“镜像格式”选择“QCOW2”
-
最小磁盘填写“20”,这相当于设置instance启动盘的最小容量
-
勾选“共有”选择框,这样所有Project都可以使用该镜像
点击“创建镜像”按钮,开始上传镜像。完成后,新的镜像将出现在镜像列表上。
image定制镜像
cloud 镜像是标准镜像,没有图像界面,是美国时区,而且只能通过密钥登录。可以根据需要对该镜像进行定制,其方法是:
-
通过 cloud 镜像部署出一个实例。
-
定制该实例。
-
创建该实例的快照,该快照将保存在Glance中。
-
以后通过该快照部署新的实例。
下面我们以CentOS标准镜像为例演示定制镜像的每个步骤,定制内容包括:添加图形界面,设置中国时区,设置ssh密码登录等。
网友评论