glance命令的方式底层上传
说明
- 这个镜像上传其实就是把文件upload到py的接口,然后记录数据库。
- 有些版本这种方法上传会失败。如果失败了用下面openstack的方式上传。
- 底层上传是用
glance image-create
命令 - glance 可以使用以下参数:
ps:这些参数不是100%都需要的我们在上传镜像更加我们需求选择相对应的参数就好了。
--id <IMAGE_ID>
#镜像的ID--name <NAME>
#镜像的名称--store <STORE>
#储存的镜像上传到--disk-format <DISK_FORMAT>
#镜像的格式。可以接受的格式包含: ami,ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso.--container-format <CONTAINER_FORMAT>
#镜像容器的格式。可以接受的格式包含:ami,ari, aki, bare, and ovf.--owner <TENANT_ID>
# 拥有该镜像的租户--size <SIZE>
#镜像的大小(以bytes表示). 一般只与’–location’和’–copy_from’一起使用。--min-disk <DISK_GB>
#启动镜像所需的最小硬盘空间(用gigabytes表示).--min-ram <DISK_RAM>
#启动镜像所需的最小内存数量(用megabytes表示).--location <IMAGE_URL>
#镜像所在位置的URL。例如,如果镜像储存在swift中,
---file <FILE>
#在创建过程中将要被上传的本地文件(包括硬盘镜像)。另外,镜像也可以通过stdin传递给客户端。--checksum <CHECKSUM>
#被Glance使用的可用于认证的镜像数据的哈希值,在此请提供一个md5校验值。--copy-from <IMAGE_URL>
#用法和’–location’参数相似,但表明Glance服务器应该能立即从镜像所储存的地方拷贝数据并储存。--is-public [True|False]
#表示镜像是否能被公众访问。--is-protected [True|False]
#用于避免镜像被删除。--property <key=value>
#与镜像有关的任意的属性。可以使用很多次。--human-readable
#用对人友好的格式打印镜像的尺寸。--progress
#显示上传的进度条
1.镜像上传
- 登录控制节点任意一台服务器,将镜像上传到此节点 (建议所有镜像都存放统一路径,路径可以自定义,也可以新建一个文件用来存放镜像)
注:上传镜像用任意方式都行,crt或者其他工具!!! - 如下,我上传了好几个镜像到控制节点的root目录下
[root@node-1 ~]
centos-6.5-minimal.qcow2.tgz
centos7.2-x86_64.qcow2
Kylin-Desktop-V10-Release-Build1-20200704-x86_64-cloudinit.qcow2
rhel6.7-x86_64.qcow2
Windows-2008-Enterprise-R2-x64-sysprep.qcow2.tar.gz
[root@node-1 ~]
2.编写上传脚本
- 一个最简单的上传仅需要包含下面内容即可
glance image-create --name glance中看到的名字 --file 镜像路径 --disk-format 镜像格式 --container-format bare --visibility public --progress
- 不用编写为脚本也是可以的,直接执行脚本中的代码就好了~
[root@controller01 ~]
glance image-create --name $1 --file $2 --disk-format qcow2 --container-format bare --visibility public --progress
3.执行获得权限脚本
[root@controller01 ~]
4.执行上传脚本
- 执行前最好先执行下环境变量【理论不用,执行下没坏处】
- 格式:
bash upload.sh 在glance中看到镜像名字(自定义名字) 镜像真是的名字(最好用绝对路径)
例如:
[root@controller01 ~]
- 我的这种方式上传是报错的,可能是bug? 遇到这种问题 直接用下面openstack的方式。
也可以先看一下openstack-glance-api.service
服务是否正常。
[root@controller01 ~]
[root@controller01 ~]
usage: glance [--version] [-d] [-v] [--get-schema] [--no-ssl-compression] [-f]
[--os-image-url OS_IMAGE_URL]
[--os-image-api-version OS_IMAGE_API_VERSION]
[--profile HMAC_KEY] [--insecure] [--os-cacert <ca-certificate>]
[--os-cert <certificate>] [--os-key <key>] [--timeout <seconds>]
[--os-auth-url OS_AUTH_URL] [--os-domain-id OS_DOMAIN_ID]
[--os-domain-name OS_DOMAIN_NAME]
[--os-project-id OS_PROJECT_ID]
[--os-project-name OS_PROJECT_NAME]
[--os-project-domain-id OS_PROJECT_DOMAIN_ID]
[--os-project-domain-name OS_PROJECT_DOMAIN_NAME]
[--os-trust-id OS_TRUST_ID] [--os-user-id OS_USER_ID]
[--os-username OS_USERNAME]
[--os-user-domain-id OS_USER_DOMAIN_ID]
[--os-user-domain-name OS_USER_DOMAIN_NAME]
[--os-password OS_PASSWORD] [--key-file OS_KEY]
[--ca-file OS_CACERT] [--cert-file OS_CERT]
[--os-tenant-id OS_TENANT_ID] [--os-tenant-name OS_TENANT_NAME]
[--os-region-name OS_REGION_NAME]
[--os-auth-token OS_AUTH_TOKEN]
[--os-service-type OS_SERVICE_TYPE]
[--os-endpoint-type OS_ENDPOINT_TYPE]
<subcommand> ...
glance: error: unrecognized arguments: --file Kylin-Desktop-V10-Release-Build1-20200704-x86_64.qcow2
[root@controller01 ~]
[root@controller01 ~]
2.0.0
[root@controller01 ~]
5.检查镜像是否上传成功
[root@controller01 ~]
[root@controller01 ~]

openstack命令的方式底层上传
1.镜像上传
- 登录控制节点任意一台服务器,将镜像上传到此节点 (建议所有镜像都存放统一路径,路径可以自定义,也可以新建一个文件用来存放镜像)
注:上传镜像用任意方式都行,crt或者其他工具!!! - 如下,我上传了好几个镜像到控制节点的root目录下
[root@controller01 ~]
CentOS-7.4-heat-zabbix-lvm10-20180202.qcow2
CentOS-7.4-heat-zabbix-lvm10-20180202.qcow2.raw
Kylin-Desktop-V10-Release-Build1-20200704-x86_64.qcow2
win2k8r2-3.qcow2
win7.qcow2
win7.qcow2.raw
Windows-2008-Enterprise-R2-x64-sysprep.qcow2
Windows-2008-Enterprise-R2-x64-sysprep.qcow2.tar.gz
[root@controller01 ~]
2.执行上传
openstack image create 'xxxxName' --disk-format qcow2 --container-format bare --file /tmp/xxxx.img --public
- 如,我这上传一个qcow2的镜像
注:过程是看不到进度条的,耐心等待即可,上传成功后显示如下代码行

[root@controller01 ~]
[root@controller01 ~]
+------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| checksum | e2c0eec7df61ed34aa930a49d7bd360d |
| container_format | bare |
| created_at | 2022-06-23T03:01:29Z |
| disk_format | qcow2 |
| file | /v2/images/61f9b025-19c2-41ff-bb92-c416e4c6ce5d/file |
| id | 61f9b025-19c2-41ff-bb92-c416e4c6ce5d |
| min_disk | 0 |
| min_ram | 0 |
| name | KeLindesk |
| owner | ed270068500d4f22b3ccac210fac8c80 |
| properties | direct_url='rbd://f5bf95c8-94ee-4a95-8e18-1e7f4a1db07a/images/61f9b025-19c2-41ff-bb92-c416e4c6ce5d/snap', locations='[{u'url': u'rbd://f5bf95c8-94ee-4a95-8e18-1e7f4a1db07a/images/61f9b025-19c2-41ff- |
| | bb92-c416e4c6ce5d/snap', u'metadata': {}}]' |
| protected | False |
| schema | /v2/schemas/image |
| size | 8851030016 |
| status | active |
| tags | |
| updated_at | 2022-06-23T03:05:15Z |
| virtual_size | None |
| visibility | public |
+------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
[root@controller01 ~]
3.检查镜像是否上传成功
[root@controller01 ~]
| 61f9b025-19c2-41ff-bb92-c416e4c6ce5d | KeLindesk |
[root@controller01 ~]
[root@node-1 ~]
+--------------------------------------+--------------------------+-------------+------------------+-------------+--------+
| ID | Name | Disk Format | Container Format | Size | Status |
+--------------------------------------+--------------------------+-------------+------------------+-------------+--------+
...
| 3edb9730-8dd5-4805-968b-8ed59b0c62ae | KeLindesk | qcow2 | bare | 8851030016 | active |
...
+--------------------------------------+--------------------------+-------------+------------------+-------------+--------+
[root@node-1 ~]
dashboard上传镜像
- web界面,没啥好说的,登陆上去以后,找到镜像,上传就可以 了

- 需要注意的是,公有我们一般是勾选的,不然只能在上传的项目里面使用。
然后上传方式选择本地,并指定镜像文件就可以了【注意格式要和镜像保持一致】
