通用技术 vSphere Networking 系统测试知识整理

bingbing · 2016年10月30日 · 最后由 恒温 回复于 2016年10月31日 · 1142 次阅读

vSphere Networking 系统测试知识整理,都是比较基础的内容。

1.基本知识
VC: 管理和控制 host 和各种网络等设备
Host: 提供 CPU,内存,硬盘空间等。
Data Store: 大体分为 Host 内置的存储和 shared data store
iSCSI
Windows 创建 iSCSI disk: iStorage Server
NAS:
Windows 配置 NFS 服务,再本地磁盘中新建文件夹右击属性选择 NFS
Linux 配置可以参考网上的教程

使用独立的存储设备原因:
1. 节约硬件开支
2.设备安全性,便于管理和迁移。当 Host 出现设备故障是,虚拟机等设备由于存放在独立 Data store 上,disk file 没有收到破坏,切换状态良好的 Host 即可重新使用。vSphere 如果开启 HA 等服务,出故障可自动 vMotion 到 Cluster 中的其他的 Host 上。

Network:
DVS: 分布式交换机
一般再 DVS 中新建不同的 port group,在 host 上新增 vmk,vmk 连接这些 port group。
不同种操作流量走的 vmk 不同。
例如:
vmotion --- vmk5 在 VC 中做 vMotion 的操作是,再 Exsi 中输入 esxtop, h 是查看帮助文档, n 查看网络,再网络流量监控中查看,流量是不是走的 vmk5
VSS: 标准交换机

Host Profile:
Host 配置文件,可以从已配置好的 Host 中抓取,但有些参数抓取不到。 可以用已存在的 Profile attach 到新加入的 host 中,快速进行批量配置。

由于内容较多,基础的只是先放一放, 下面从自动化项目开始归纳。

工具选择: Python+ Perforce+vSphere Web API(Python)

VCIP/****,项目过去半年多了,名字有些遗忘了, 获取 VC 中 ManagedObject , 主要注意层级关系, 比如想要获取 vm 中的某一网卡,从 DC-Cluster-Host-VM-network

项目中主要用到的技术和脚本编写方式

1.结构很简单,编写公用使用的 library, 编写规范要求方法功能相对单一,能再不同 case 中重复调用,必须又很高的可复用性。
比如:编写 host 的函数库, 从 case 出来,需要用开启 SSH,开关重启,寻找匹配 vMotion 条件的其他 Host 等,单独编写成方法,再以后编写的测试脚本中使用
编写 Host Profile 的 library 时,由于配置内容相对较多,层级较深,根据功能点分割出来,更改密码,更改 StatelessCashing 等都单独作为方法。
编写 Network traffic rule 相关 library 时, 再 VC 中 rule 创建方式为 在 dvpg 中可以创建若干个 rule,再在 rule 中加入若干个 qualifier,最后再 qualifier 中加入 sub qualifier list. 编写时从最小组成单元开始, 编写创建单独的 sub qualifier(sq) 的方法,返回最小组成单位 sq,随后编写创建 qualifier 的方法,sq 会被作为参数使用,最后编写创建 rule 的方法,前面的返回值同样会被用来作为参数。这样编写完成后前面 2 个方法可以被随后编写的 UpdateRule 等方法所复用,增强代码的复用性,节约时间成本。

2.Case 脚本编写方法
主要使用的: optparse, argparse
脚本参数存放形式: yaml

argparse 的编写形式

  1. 添加可输入参数 parser = argparse.ArgumentParser() parser.add_argument('--sth', dest="sth'", required = True, ) 2.实现输入不同种组合的参数完成对应工作流 (1) 首先按 1 中方式添加一个可操作的参数 arg 在代码中加入可识别的参数值和方法的 mapping 关系 argMapping = { 'dosth' : do_sth
    } 随后脚本识别该参数获取对应的 value list,参数值可以用符号隔开,随后对 value list 遍历,按顺序调用方法完成不同种的操作方式。

Yaml
Yaml 主要用来存放创建各种 object 时需要的参数,再脚本中用 dict 的方式获取对应的值
Sample:
首先定义变量
define
vm:
vm_base: &vm_base vm_base_xx
vm_base_storage: &vm_base_storage nsbu_nas_xx
vm_network: &vm_network net-xxx-vm-xx
使用定义的变量
vm:
base: *vm_base
storage: *vm_base_storage
network: *vm_network

脚本中 yaml.load(file(g_opts.yamlFile)) 载入文件,g.yaml['vm']['base'] 等方式获取相关内容

共收到 1 条回复 时间 点赞

排版都没法看,做一下排版吧。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册