首页 > ovirt > ovirt-shell 使用

ovirt-shell 使用

Introduction

oVirt 项目的用户接口有 GUI 方式的, rest API 方式的, SDK 方式, 甚至也有 命令行方式的, 也就是本文要介绍的 ovirt-shell.

本文介绍在 OSX(这么牛逼)环境下, 从头建立一个数据中心, 集群, 存储域, 并且基于 此创建一个虚拟机并对其完成生命周期管理.

Install

从功能来讲, ovirt-shell 只是一个控制 oVirt 的命令行客户端, 它的实现是基于 python SDK 的, 所以几乎在所有 POSIX 平台都能很容易的安装(包管理器或者 pip 方式), 我的主要 开发平台是 OSX, 正是使用 pip 来安装 ovirt-shell 的.

使用发行版提供的包管理器

比如在 RPM 系的发行版中, 可以

# yum install -y ovirt-engine-cli

使用 python 的包管理工具

如果发行版的软件仓库中没有提供软件, 那么可以使用 python 的包管理器 pip 安装, 比如在我的 mac 上, 使用:

# pip install ovirt-shell

Usage

接下来演示从头使用 oVirt, 包括创建数据中心, 数据域, 虚拟机等等.

连接到 oVirt engine

首先需要连接到 oVirt engine, 使用下列的指令:

# wget http://192.168.3.252/ca.crt -O ~/ca.crt # 下载 engine 的 CA 证书
# ovirt-shell -c -A ~/ca.crt -l "https://192.168.3.252:443/api" -u admin@internal

上述命令中的参数解释:

-c: 自动连接到服务器, 不要使用交互模式
-A: 指定 oVirt engine 的 CA 证书, 下载地址为 http://[ovirt-engine-url]/ca.crt
-l: ovirt-enging 的 url, 格式为 http[s]://server[:port]/api
-u: 连接 ovirt-engine 的用户名

如果出现以下错误, 是由于证书中的 hostname 和 engine 的 hostname 不匹配, engine 的配置不一致导致的, 连接的时候用 “-I” 告诉 engine 不要验证证书的 hostname 即可.

The host name "192.168.3.252" contained in the URL doesn't match any of the names in the server certificate

之后, ovirt-shell 会提示用户输入密码, 然后就进入 ovirt-shell 的交互模式了, 可以使用 help 查看使用帮助, 任何命令都可以使用 TAB 补全.

创建一个完整的数据中心

我这里创建一个完整的 NFS 类型的数据中心

创建一个数据中心

先创建一个名为 test 空的 NFS 数据中心

[oVirt shell (connected)]# add datacenter --name test --comment "test" --description "test" --storage_type nfs --version-major 3 --version-minor 3
 
id                              : 67ef255f-29ff-4474-8008-085d8066bb04
name                            : test
description                     : test
comment                         : test
status-state                    : uninitialized
storage_type                    : nfs
supported_versions-version-major: 3
supported_versions-version-minor: 3
version-major                   : 3
version-minor                   : 3

上述命令中的参数解释:

--storage_type: 数据中心的类型.
--version-major: 和 --version-minor 一起确定数据中心的兼容版本.

创建一个集群

创建一个名为 test 的集群

[oVirt shell (connected)]# add cluster --data_center-name test --name test --comment "test" \
> --description "test" --cpu-id "Intel SandyBridge Family" --version-major 3 --version-minor 3 \
> --virt_service true --gluster_service false
 
id                                         : f57b9ecf-c99d-4285-8f88-8ce4b3348f4f
name                                       : test
description                                : test
ballooning_enabled                         : False
comment                                    : test
cpu-id                                     : Intel SandyBridge Family
data_center-id                             : 67ef255f-29ff-4474-8008-085d8066bb04
error_handling-on_error                    : migrate
gluster_service                            : False
memory_policy-overcommit-percent           : 200
memory_policy-transparent_hugepages-enabled: True
scheduling_policy-policy                   : none
threads_as_cores                           : False
trusted_service                            : False
tunnel_migration                           : False
version-major                              : 3
version-minor                              : 3
virt_service                               : True

上述命令中的参数解释:

--data_center-name: 对应的数据中心.
--cpu-id: 兼容的主机的 CPU 类型.
--version-minor: 和 --version-minor 对应集群的兼容版本.
--virt_service: 是否用来作为虚拟机集群.
--gluster_service: 是否作为 glusterfs 集群.

添加主机到数据中心

由于我的演示环境已经有很多主机注册到系统中了, 我使用一个空闲的.

[oVirt shell (connected)]# list hosts --query "status=maintenance"
 
id         : 34905bed-ebf5-45b6-a30e-65abe149ff24
name       : node-123

把它加入创建的集群中, 并激活之.

[oVirt shell (connected)]# update host node-123 --cluster-name test
 
[oVirt shell (connected)]# action host node-123 activate
host-id     : 34905bed-ebf5-45b6-a30e-65abe149ff24
status-state: complete

添加存储

创建一个 NFS 的存储域:

[oVirt shell (connected)]# add storagedomain --name test --storage-type nfs --storage_format v3 --type data --host-name node-123 --storage-address 192.168.3.157 --storage-path /home/ovirt/nfs-test

上述命令中的参数解释:

--storage-type: 存储类型.
--storage_format: NFS 存储的版本号.
--type: 存储域的类型, 这里作为数据存储域.
--host-name: 使用主机 node-123.
--storage-address: NFS 的地址
--storage-path: 挂载路径

然后把该存储域加入到数据中心中

[oVirt shell (connected)]# add storagedomain --name test --datacenter-identifier test

添加 ISO

添加一个 ISO 存储域加入到数据中心中

[oVirt shell (connected)]# add storagedomain --name iso --datacenter-identifier test

创建虚拟机

我们的 oVirt 环境已经准备好了, 可以开始使用该平台进行各种操作了. 下面我们创建虚拟机:

创建一个虚拟机

[oVirt shell (connected)]# add vm --name test --template-name Blank --cluster-name test \
> --os-type rhel_6x64 --memory 2147483648 --cpu-topology-cores 2

上述命令中的参数解释:

--template-name: 该虚拟机基于的模板, 如果模板为空, 则填 Blank
--cluster-name: 虚拟机处于的集群
--os-type: 虚拟机的操作系统类型, 有效值为:
           windows_2008x64, unassigned, other, other_linux, windows_2008r2, 
           ubuntu_12_04, windows_2008, windows_7x64, windows_2003x64, windows_8x64, 
           windows_7, rhel_6x64, ubuntu_12_10, rhel_6, rhel_5, rhel_4x64, rhel_4, 
           rhel_3, windows_8, windows_2008R2x64, windows_2012x64, windows_xp, rhel_3x64, 
           windows_2003, ubuntu_13_10, rhel_5x64, sles_11, ubuntu_13_04
--memory: 分配的内存, 以字节为单位
--cpu-topology-cores: 虚拟机的 CPU 核心数

给虚拟机新分配一个磁盘

[oVirt shell (connected)]# add disk --name test_disk --size 10737418240 --interface virtio \
> --format cow --bootable true --storagedomain-identifier test

上述命令中的参数解释:

--size: 磁盘大小, 以字节为单位.
--interface: 磁盘的接口类型, 可选的值为: ide, virtio_scsi, virtio
-- format: 磁盘镜像的类型, 可选的值为 cow, raw

将磁盘添加到虚拟机上, 并激活, 注意这里只能使用磁盘的 id 来操作.

[oVirt shell (connected)]# list disks --query "alias=test_disk" | grep id
id         : 4357a838-2a99-4a05-a0b9-be6ee6ec5eaa
 
[oVirt shell (connected)]# add disk --id 4357a838-2a99-4a05-a0b9-be6ee6ec5eaa --vm-identifier test
 
[oVirt shell (connected)]# action disk test_disk activate --vm-identifier test

给虚拟机新分配一个网卡

[oVirt shell (connected)]# add nic --vm-identifier test --name test --network-name ovirtmgmt \
> --interface virtio --linked true --plugged true

上述命令中的参数解释:

--network-name: 逻辑网络的名称.
--interface: 网卡接口类型, 可选的值为: e1000, virtio, rtl8139, rtl8139_virtio
--linked: 链接状态.
--plugin: 插入状态.

启动虚拟机

虚拟机已经准备就绪, 现在可以启动了, 由于我们的虚拟机没有操作系统, 我们需要设置虚拟机 的启动第一启动设备为 CDROM, 并用该 CDROM 给虚拟机安装一个操作系统.

先列出 ISO 域名里可用的的镜像.

[oVirt shell (connected)]# list files --storagedomain-identifier iso
id         : CentOS-6.5-x86_64-minimal.iso
name       : CentOS-6.5-x86_64-minimal.iso

给虚拟机增加一个 CDROM 设备.

[oVirt shell (connected)]# add cdrom --vm-identifier test --file-id CentOS-6.5-x86_64-minimal.iso

启动虚拟机, 以 CDROM 作为启动设备

# action vm test start --vm-stateless true --vm-os-boot "boot.dev=cdrom" --vm-display-type vnc

上述命令中的参数解释:

--vm-stateless: 以 stateless 模式启动虚拟机.
--vm-os-boot: 第一启动设备, 可选的值为 cdrom, hd, network.
--vm-display-type: 访问控制协议, 这里选择 vnc, 可选的有, spice, vnc

访问虚拟机

由于虚拟机的 vnc 和 spice 密码是按需生成的, 访问该虚拟机之前, 我们需要给 vnc 设置一个临时的密码

[oVirt shell (connected)]# action vm test ticket --ticket-value "abc123"

查看 vnc server 所在的地址和端口

[oVirt shell (connected)]# show vm test | grep display
display-address           : 192.168.3.123
display-allow_override    : False
display-monitors          : 1
display-port              : 5900
display-single_qxl_pci    : False
display-smartcard_enabled : False
display-type              : vnc

现在, 就可以用 vnc 客户端打开 192.168.3.123:5900 加上上面设置的临时密码来 访问该虚拟机了.

虚拟机的任务(TODO)

分类: ovirt 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.