个人笔记Openstack中的常用命令

一、块存储(Cinder)

1.列出所有卷(ID、名称、状态、大小和挂载目录)

openstack volume list

2.新建卷(size的单位为GB)

openstack volume create --size <size> <name>

3.删除卷

openstack volume delete <id>

4.将卷连接到instance

openstack server add volume <instance_id> <volume_id>


二、认证(Keystone)
1.列出所有用户

openstack user list


2.列出认证服务目录

openstack catalog list


三、镜像(Glance)
1.列出可以访问的镜像

openstack image list

2.删除指定镜像

openstack image delete <image_id>

3.查看指定镜像的详细信息

openstack image show <image_id>

4.更新镜像

openstack image set <image_id>


四、计算(nova)
1列出实例

openstack server list

2.创建规格

openstack flavor create --ram <ram_size_MB> --disk <disk_size_GB> --vcpus <vcpu_num> <flavor_name>

3.列出所有规格

openstack flavor list

4.创建并启动云主机

openstack server create --image <image_id> --flavor <flavor_id> <server_name>

5.显示实例的详细信息

openstack server show <server_name>

6.查看云主机的控制台日志

openstack server show <server_name>

7.设置云主机的元数据

nova meta <server_id> set <meta_key>=<meta_value>

8.创建云主机快照

openstack image create <server_id> <snapshot_name>

9.查看云主机快照

openstack image show <snapshot_name>

10.暂停云主机

openstack server pause <server_id>

11.取消暂停

openstack server unpause <server_id>

12.挂起云主机

openstack server suspend <server_id>

13.取消挂起

openstack server resume <server_id>

14.关闭云主机

openstack server stop <server_id>

15.开启云主机

openstack server start <server_id>

16.恢复云主机

openstack server rescue <server_id> --rescue_image_ref <rescue_image>

17.调整云主机大小

openstack server resize <server_id> <flavor_name>

18.重建云主机

openstack server rebuild <server_id> <image_id>

19.重启云主机

openstack server reboot <server_id>

20.将用户数据文件注入云主机

openstack server create --user-data <datafile_name> --image <iamge_id> --flavor <flavor_name> <server_name>


五、网络(Neutron)
1.创建网络

openstack network create <network_name>


2.创建子网

openstack network create --subnet-pool <subnet> --network <network_name> <subnet_name>
Opnestack三大核心

1.计算服务(compute) 服务名 Nova #用于为用户管理虚拟机实例 提供虚拟服务 负责虚拟机创建 开机关机等操作 (计算资源分配资源 cpu,mem)

2.网络服务(networking) 服务名 Neutron #为云平台提供网络虚拟化 为用户提供网络接口 (cloud连接的网络) 服务名 Designate #DNS服务

3.存储(storage) 分为 1.文件存储 服务名 Manila 
                     2.块存储 Block Storage 服务名 Cinder #管理块设备,列入创建卷,删除卷等 
                       (系统盘) 
                     3.对象存储 Object Storage 服务名 Swift #允许使用进行文件粗出及检索

4.身份认证服务 (ldentity) 服务名 keystone #为openstack替他服务提供身份验证,服务注册等功能 (各组件互相通信的身份认证与协调)

5.镜像服务 (image service) 服务名 Glance #为云平台提供镜像服务器,上传镜像 ,删除镜像等 (镜像服务)

6.UI界面 (Dashboard) 服务名 Horizon #为openstack 提供管理门户,例如启动云主机,创建网络,访问控制等 (提供图形操作界面)

7.测量 (metering ) 服务名 Ceilometer #内部发生的资源进行统计,然后计费和监控提供数据支撑等

8.编排部署 (orchestration) 服务名 Heat # 为云平台提供软件运行环境自动化部署

9.数据库 (database server) 服务名Trove # 提供可扩展和可靠的关系型数据库或非关系型数据库引擎

一、Neutron服务运维

1.什么Neutron?

Neutron 是 Openstack 的虚拟网络服务。

 Neutron 的设计目标是实现“网络即服务(Networking as a Service)”。为了达到这一目标,在设计上遵循了基于 SDN 实现网络虚拟化的原则,在实现上充分利用了 Linux 系统上的各种网络相关的技术。

2.Neutron功能

 Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙等。Neutron 提供了一个灵活的框架,通过配置,无论是开源还是商业软件都可以被用来实现这些功能。

3.Neutron基本架构

openstack其他服务和组件的设计思路一样,Neutron也采用分布式架构,由多个组件(服务)共同对外提供网络服务,Neutron架构非常灵活,层次多,一方面是为了支持各种现有或者将来会出现的先进网络技术,另一方面支持分布式部署,获得足够的拓展性。示意图如下:

 neutron server:对外提供 OpenStack 网络API,接收请求,并调用Plugin处理请求。

queue:Neutron Server,Plugin 和 Agent 之间通过 Messaging Queue 通信和调用。

neutron plugin:处理 Neutron Server 发来的请求,维护 OpenStack 逻辑网络的状态, 并调用 Agent 处理请求。

neutron agent:处理 Plugin请求,负责在 network provider 上真正实现各种网络功能。

neutron provider:提供网络服务的虚拟或物理网络设备,例如 Linux Bridge,Open vSwitch或者其他支持 Neutron 的物理交换机。

neutron database:存放 OpenStack 的网络状态信息,包括 Network, Subnet, Port, Router等。

4.Neutron运维命令

4.1思维导图

 4.2案例实施

1.使用Neutron相关命令查询网络服务列表中的“binary”一列

  1. [root@controller ~]# neutron agent-list -c binary

  2. +---------------------------+

  3. | binary |

  4. +---------------------------+

  5. | neutron-openvswitch-agent |

  6. | neutron-dhcp-agent |

  7. | neutron-l3-agent |

  8. | neutron-metadata-agent |

  9. | neutron-lbaas-agent |

  10. +---------------------------+

//如果一开始查报错,建议重启一下服务
[root@controller ~]# systemctl restart neutron-server.service

2.查询网络详细信息

  1. [root@xiandian ~]# neutron net-list //列出当前租户所有的网络

  2. +--------------------------------------+------------+---------+

  3. | id | name | subnets |

  4. +--------------------------------------+------------+---------+

  5. | bd923693-d9b1-4094-bd5b-22a038c44827 | sharednet1 | |

  6. +--------------------------------------+------------+---------+

  7. [root@xiandian ~]# neutron net-show bd923693-d9b1-4094-bd5b-22a038c44827

  8. +---------------------------+--------------------------------------+

  9. | Field | Value |

  10. +---------------------------+--------------------------------------+

  11. | admin_state_up | True |

  12. | availability_zone_hints | |

  13. | availability_zones | |

  14. | created_at | 2017-02-23T04:58:17 |

  15. | description | |

  16. | id | bd923693-d9b1-4094-bd5b-22a038c44827 |

  17. | ipv4_address_scope | |

  18. | ipv6_address_scope | |

  19. | mtu | 1500 |

  20. | name | sharednet1 |

  21. | port_security_enabled | True |

  22. | provider:network_type | flat |

  23. | provider:physical_network | physnet1 |

  24. | provider:segmentation_id | |

  25. | router:external | False |

  26. | shared | True |

  27. | status | ACTIVE |

  28. | subnets | |

  29. | tags | |

  30. | tenant_id | 20b1ab08ea644670addb52f6d2f2ed61 |

  31. | updated_at | 2017-02-23T04:58:17 |

  32. +---------------------------+--------------------------------------+

 3.查询Neutron相关命令查询网络服务DHCP agent的详细信息

 
  1. [root@controller ~]# neutron agent-list

  2. +--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+

  3. | id | agent_type | host | availability_zone | alive | admin_state_up | binary |

  4. +--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+

  5. | 1ccc8d2d-b40a-4406-b15b-ab4b2b8e8398 | Open vSwitch agent | controller | | :-) | True | neutron-openvswitch-agent |

  6. | 245ae2f9-6220-4c00-a36d-542a746a3f9e | DHCP agent | controller | nova | :-) | True | neutron-dhcp-agent |

  7. | 26f38d05-3553-46f6-8740-847f97741f89 | L3 agent | controller | nova | :-) | True | neutron-l3-agent |

  8. | 5bd0c9e2-a2ef-4890-a4ac-a4cb6bccf71b | Metadata agent | controller | | :-) | True | neutron-metadata-agent |

  9. | f1d1fc34-6e9d-46b5-8370-0579f3b46b6f | Loadbalancer agent | controller | | :-) | True | neutron-lbaas-agent |

  10. +--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+

  11. [root@controller ~]# neutron agent-show 245ae2f9-6220-4c00-a36d-542a746a3f9e

  12. +---------------------+----------------------------------------------------------+

  13. | Field | Value |

  14. +---------------------+----------------------------------------------------------+

  15. | admin_state_up | True |

  16. | agent_type | DHCP agent |

  17. | alive | True |

  18. | availability_zone | nova |

  19. | binary | neutron-dhcp-agent |

  20. | configurations | { |

  21. | | "subnets": 0, |

  22. | | "dhcp_lease_duration": 86400, |

  23. | | "dhcp_driver": "neutron.agent.linux.dhcp.Dnsmasq", |

  24. | | "networks": 0, |

  25. | | "log_agent_heartbeats": false, |

  26. | | "ports": 0 |

  27. | | } |

  28. | created_at | 2019-12-03 17:43:37 |

  29. | description | |

  30. | heartbeat_timestamp | 2022-04-10 22:41:26 |

  31. | host | controller |

  32. | id | 245ae2f9-6220-4c00-a36d-542a746a3f9e |

  33. | started_at | 2022-04-10 22:38:56 |

  34. | topic | dhcp_agent |

  35. +---------------------+----------------------------------------------------------+


二、Cinder服务运维

1.什么是Cinder?

cinder 是提供块存储的服务。存储的分配和消耗是由块存储驱动器或者多后端配置的驱动器决定的。还有很多驱动程序可以用:NAS/SAN、NFS、CEPH等。一般运行在openstack的控制节点上。其驱动可以运行在控制节点、计算节点或者单独的存储节点上。

2.Cinder的作用

cinder的核心功能是对卷的管理,允许对卷、卷的类型、卷的快照、卷备份进行处理。它为后端不同的存储设备提供了统一的接口,不同的块设备服务厂商在 cinder 中实现其驱动支持以与 OpenStack 进行整合。

3.Cinder基本架构

  • Cinder-api用来接受api请求,并将其路由到cinder-volume执行
  • Cinder-Volume用来与块存储服务和 Cinder- Scheduler进程进行直接交互。它也可以与这些进程通过一个消息队列进行交互。 Cinder-Volume服务响应送到块存储服务的读写请求来维持状态,它也可以和多种存储提供者在驱动架构下进行交互。)
  • Cinder- Scheduler守护进程会选择最优存储节点来创建卷,其工作机制与Nova- Scheduler类似。当需要创建卷时,Cinder- Scheduler根据存储节点的资源使用情况选择一个最合适的节点来创建卷。
  • Cinder- Backup服务提供任何种类备份卷到一个备份存储提供者。就像 Cinder- Volume服务,它与多种存储提供者在驱动架构下进行交互。
  • 消息队列
  • 消息队列作用是在块存储的进程之间路由信息。 Cinder各个子服务通过消息队列实现进程间通信和相互协作。

4.Cinder基础命令

4.1思维导图

 4.2案例实施

1.创建云硬盘

创建一个2 GB的云硬盘extend-demo,并且查看云硬盘信息。

  1. [root@controller ~]# cinder create --name cinder-volume-demo 2

  2. [root@controller ~]# cinder list

2.创建云硬盘类型

创建了一个名为“lvm”的卷类型。通过cinder命令查看现有的卷类型。

  1. [root@controller ~]# cinder type-create lvm

  2. [root@controller ~]# cinder type-list

3.创建带标识云硬盘

创建一块带“lvm”标识名为type_test_demo的云硬盘,最后使用命令查看所创建的云硬盘。

 
  1. [root@controller ~]# cinder create --name type_test_demo --volume-type lvm 1

  2. [root@controller ~]# cinder show type_test_demo

4.删除指定的Cinder卷

[root@controller ~]# cinder delete cinder-volume-demo

三:glance项目
1.1:glance是什么?有什么作用?
Glance(OpenStack Image Service)是一个提供发现,注册,和下载镜像的服务。Glance 提供了虚拟机镜像的集中存储。通过 Glance 的 RESTful API,可以查询镜像元数据、下载镜像。虚拟机的镜像可以很方便的存储在各种地方,从简单的文件系统到对象存储系统(比如 OpenStack Swift)。

在 Glance 里镜像被当做模板来存储,用于启动新实例。Glance 还可以从正在运行的实例建立快照用于备份虚拟机的状态。

Glance 具体功能如下:

提供 RESTful API 让用户能够查询和获取镜像的元数据和镜像本身;
支持多种方式存储镜像,包括普通的文件系统、Swift、Ceph 等;
对实例执行快照创建新的镜像。
Clance 在整个 OpenStack 架构中的位置如下图:

二:架构
在 Newton 之前的版本中,Glance 支持两种 RESTful API V1和V2,两者区别为:
V1只提供了基本的镜像和用户操作功能:
镜像创建、删除、下载、列表、详细信息查询、更新,以及镜像租户成员的创建、删除和列表。

V2除了支持V1的所有功能外,主要是增加了如下功能

镜像 location 的添加、删除和修改等操作;
metadata namespace 操作;
镜像 tag 操作。
V1 和V2对镜像后端存储的支持是相同的。
V1版本的实现,具有 glance-api 和 glance-registry 两个 WSGI 服务,二者都提供 RESTful API,但需要强调的一点是,glance-registry 提供的 RESTful API 是给 glance-api 使用的,并不开放给外部用户。


glance-api
glance-api 是系统后台运行的服务进程。 对外提供 RESTful API,响应镜像查询、获取和存储作用。glance-api 不会真正处理请求。 如果是与镜像 metadata(元数据)相关的操作,glance-api 会把请求转发给glance-registry;如果是与镜像自身存取相关的操作,glance-api 会把请求转发给该 image 的存储后端。

glance-registry
Glance的DB模块存储的是镜像的元数据,可以选用Mysql、MariaDB、SQLite等数据库。元数据是指镜像相关的一些信息(如id,size, status,location,checksum,min_disk,min_ram,owner等)真正的镜像数据保存在实际所使用的后端存储里(如Swift,S3,Filesystem等)。默认绑定的端口是9191。镜像的元数据通过glance-registry存放在数据库中。镜像本身(chunk数据)是通过glance存储在驱动存放到各种存储后端中的。

store adapter‘
严格来说Image Store不属于Glance的组件,这里把它单独分出来只是为了方便理解,它只是一个接口层,提供镜像存储和查询的接口。具体的实现则需要外部存储(Swift,S3)的支持。
存储后端Glance自身并不存储镜像,它将镜像存放在后端存储系统中。镜像本身的数据通glance_store存放在各种后端,并可从中获取。支持本地存储、对象存储、RBD块设备、Sheepdog分布式存储、Cinder块存储】VMware数据存储。

2.1:glance有哪些常见的镜像格式

格式描述
RAW(常用)出色的原始文件格式,方便转换成其他格式
QCOW2(常用)占用的磁盘空间可以动态按需增长
VHD格式微软公司的磁盘格式,如果在openstack上使用Hyper-V类型的虚拟化,就需要上传VHD格式的镜像文件
VMDK格式VMware公司的磁盘格式(virtualbox和QEM也支持VMDK格式)
VDI格式oracle公司的virtualbox虚拟软件使用的格式
ISO格式一种存档数据文件在光盘上的格式
AKI,ARI,AMI格式Amazon公司的AWS所使用的镜像格式


2.2:glance的常用管理命令有哪些

命令作用
openstack image list查看已有镜像列表
openstack image show 镜像名查看镜像的详细信息
openstack image create --file 镜像文件名 --disk-format qcow2 --container-format bare --public centos7 生产一个qcow2格式的镜像,名字为centos7创建镜像
glance image-create --name “centos7” --file centos.img --disk-format raw --container-format bare --progress创建镜像并查看百分比进度
openstack image delete 镜像名删除镜像
openstack image create --file 镜像 --disk-format qcow2 --container-format bare --public 镜像名修改镜像格式(例如raw修改为qcow2)
qemu-img convert -f raw -O qcow2 centos7.img centos7.qcow2修改镜像格式(例如将裸格式镜像文件centos7.img转为qcow2格式)


2.3:镜像访问权限

命令作用
public公共的可以被所有的项目使用
private私有的只有被镜像所有者所在的项目使用
shared共享的一个非共有的镜像,可以共享给其他项目,通过项目成员(member-*)操作来实现的
projected(受保护的)这种镜像不能被删除


2.4:glance的工作流程
glance是一个C/S架构,给外部提供服务,用户通过REST API获取glance所有服务。

 

镜像上传服务

  • 用户在命令行或horizon申请上传镜像,API收到请求,并通过调度器进行解析,获取版本信息。
  • Glance-registryAPI获取一个registry client,调用glance-registry的add_image函数。此时镜像状态为queued,标识该镜像ID被保留,但是镜像还未上传,Glance-registry服务执行client的add_image函数,像glance数据库插入一条记录
  • Glance-api调用glance-registry的update_image_metadata函数,更新数据库中的状态为saveing,表示镜像正在被上传,Glance-api端存储接口提供的add函数上传镜像文件。
  • Glance-api调用glance-registry的update_image_metadata函数,更新数据库中该镜像的状态为active并发通知。active标识镜像在Glance中完全可用


调度器

  • 首先是对客户端的安全认证流程:openstack的操作都需要经过keystone进行身份认证,并授权,glance也不例外,授权成功再去请求glance服务,glance服务接收到外部请求后,会去keystone进行认证,此请求是否已授权,认证通过后,才会将请求传到后端处理。
  • glance domain controller是API和后端功能模块的中间件,相当于调度器,作用是将外部服务分发到下面的各个功能层去处理。
  • 在调度时,遵循调度算法,首先有一个预选,排除不符合要求的节点,再进行优选,通过打分机制,对都能够处理此功能的节点进行打分,考虑它们当前的负荷,处理能力和速度,选出最优的一个。
  • 对于一些有污点的节点,调度器是直接跳过他们的,如果其余可用节点负担都太大,无法处理外部请求,会有一个容忍机制,由运维人员控制,让调度器接受污点,对污点再进行优选。

2.5:glance服务部署
创建数据库实例和数据库用户
 

[root@ct ~]# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE glance;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit
  • 创建用户、修改配置文件
    创建OpenStack的Glance用户
    #创建用户前,需要首先执行管理员环境变量脚本(此处已经在~/.bashrc 中定义过了)
    [root@ct ~]# openstack user create --domain default --password GLANCE_PASS glance			###创建glance用户
    root@ct ~]# openstack role add --project service --user glance admin
    #将glance用户添加到service项目中,并且针对这个项目拥有admin权限;注册glance的API,需要对service项目有admin权限
    
    [root@ct ~]# openstack service create --name glance --description "OpenStack Image" image		
    #创建一个service服务,service名称为glance,类型为image;创建完成后可以通过 openstack service list 查看
    

 

  • 创建镜像服务 API 端点,OpenStack使用三种API端点代表三种服务:admin、internal、public
[root@ct ~]# openstack endpoint create --region RegionOne image public http://ct:9292
[root@ct ~]# openstack endpoint create --region RegionOne image internal http://ct:9292
[root@ct ~]# openstack endpoint create --region RegionOne image admin http://ct:9292
  • 安装 openstack-glance 软件包。
[root@ct ~]# yum -y install openstack-glance 
  • 修改glance配置文件,glance有两个配置文件:
/etc/glance/glance-api.conf 
/etc/glance/glance-registry.conf
  • 修改glance-api.conf配置文件
[root@ct ~]# cp -a /etc/glance/glance-api.conf{,.bak}
[root@ct ~]# grep -Ev '^$|#' /etc/glance/glance-api.conf.bak > /etc/glance/glance-api.conf

openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken www_authenticate_uri http://ct:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://ct:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name Default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name Default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password GLANCE_PASS
openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http
openstack-config --set /etc/glance/glance-api.conf glance_store default_store file
openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/
  • 修改glance-registry.conf 配置文件
cp -a /etc/glance/glance-registry.conf{,.bak}
grep -Ev '^$|#' /etc/glance/glance-registry.conf.bak > /etc/glance/glance-registry.conf

#修改配置文件参数
openstack-config --set /etc/glance/glance-registry.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken www_authenticate_uri http://ct:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://ct:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_name Default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_name Default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password GLANCE_PASS
openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
openstack-config --set /etc/glance/glance-registry.conf glance_store stores file,http
openstack-config --set /etc/glance/glance-registry.conf glance_store default_store file
openstack-config --set /etc/glance/glance-registry.conf glance_store filesystem_store_datadir /var/lib/glance/images/
  • 初始化glance数据库,生成相关表结构;(不管有多少个controler,只需要初始化一次即可)
su -s /bin/sh -c "glance-manage db_sync" glance
  • 开启glance服务(此处开启之后会生成存放镜像的目录/var/lib/glance/image)
[root@ct ~]# systemctl enable openstack-glance-api.service
[root@ct ~]# systemctl start openstack-glance-api.service
  • 查看端口(也可以使用lsof -i:9292 )
[root@ct ~]# netstat -natp | grep 9292
tcp        0      0 0.0.0.0:9292            0.0.0.0:*               LISTEN      33846/python2       
  • 赋予openstack-glance-api.service服务对存储设备的可写权限(-h:值对符号连接/软链接的文件修改)
    [root@ct ~]# chown -hR glance:glance /var/lib/glance/
    

  • 镜像导入
    先上传cirros镜像到控制节点的/root,然后导入glance,最后查看是否创建成功
    [root@ct ~]# openstack image create --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public cirros
    

  • 查看镜像的两种方式
    [root@ct ~]# glance image-list
    +--------------------------------------+--------+
    | ID                                   | Name   |
    +--------------------------------------+--------+
    | 238703c7-8128-4284-aed8-65c1f683a700 | cirros |
    +--------------------------------------+--------+
    
    [root@ct ~]# openstack image list
    +--------------------------------------+--------+--------+
    | ID                                   | Name   | Status |
    +--------------------------------------+--------+--------+
    | 238703c7-8128-4284-aed8-65c1f683a700 | cirros | active |
    +--------------------------------------+--------+--------+
    

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值