searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

基于KVM的方式搭建SONIC 社区自动化

2023-08-28 09:55:34
167
0

SONIC交换机作为软硬结合设备,在转发过程中是强依赖ASIC芯片的,因此在实际测试过程中,测试人员也都是先将软件系统安装更新在被测交换机设备上,再使用真实交换机搭建组网拓扑,来验证被测交换机的功能。这种方法显然非常适用于实际功能的验证,但在物理环境缺失的情况下,测试人员想提前进行自动化调试时,可以尝试用一种虚拟交换机的方法,节约环境资源,提前介入自动化开发调试。

拓扑及实现

对于使用基于 KVM 虚拟机构建自动化测试平台时,VM与vSONIC本质上都是同一服务器中运行的 KVM VM。以t0拓扑为例,用于连接服务器的 DUT 端口可以直接移动到 PTF docker 的网络命名空间,用于连接邻居虚拟机的 DUT 端口可以直接连接到相应的 OVS 网桥,被测的vSONIC通过PTF docker中启动exabgp进程建立ebgp邻居并进行路由交互。

环境搭建准备

测试平台主机要求

Ubuntu20.04 AMD64,部署T0拓扑,需要至少20GB内存

安装python与pip

sudo apt install python3 python3-pip openssh-server

下载sonic-mgmt并使用脚本初始化管理网络

在github官网下git clone sonic-mgmt代码

cd sonic-mgmt/ansible

sudo ./setup-management-network.sh

安装docker,配置docker组,允许以非root用户身份管理docker

sudo groupadd docker

sudo usermod -aG docker $USER

newgrp docker

下载VM image

社区推荐使用的是Arista的vEOS,镜像文件可以注册Arista官网后免费下载,社区推荐的版本如下,下载完成后将文件复制到测试平台~/veos-vm/images

Aboot-veos-serial-8.0.0.iso

vEOS-lab-4.20.15M.vmdk

下载SONIC-VS image

1.下载sonic-vs image

虚拟SONiC image作为被测的操作系统,可以在github主分支下载编译好的sonic-vs.img.gz文件,也可以自己开发编译产出。

2.解压image并将其复制到~/sonic-vm/images/  ~/veos-vm/images下

gzip -d sonic-vs.img.gz

mkdir -p ~/sonic-vm/images

cp sonic-vs.img ~/sonic-vm/images

mkdir -p ~/veos-vm/images

mv sonic-vs.img ~/veos-vm/images

设置sonic-mgmt docker

所有测试平台的配置步骤和测试都是从sonic-mgmt docker容器运行的。该容器包含用于SONiC测试的所有必需的软件包和工具,以使不同开发人员和实验室设置之间的测试行为保持一致。sonic-mgmt主要负责调配整个测试流程,包括启动协议VM、调用ptf等。

1、在sonic-mgmt存储库的根目录下运行setup-container.sh

cd sonic-mgmt

./setup-container.sh -n sonic-mgmt -d /data

2、进入sonic-mgmt docker,从这一步开始,除非另外说明,否则之后的每一步都在sonic-mgmt docker内运行

docker exec -it sonic-mgmt bash

3、在sonic-mgmt docker中设置主机公钥

修改/data/sonic-mgmt/ansible/veos_vtb,将内容替换为自己登录主机的用户名

STR-ACS-VSERV-01:      

ansible_host: 172.17.0.1      

ansible_user: use_own_value      

vm_host_user: foo

修改/data/sonic-mgmt/ansible/group_vars/vm_host/creds.yml文件

vm_host_user: foo

vm_host_password: foo123

vm_host_become_password: foo123

取消注释这两行:/data/sonic-mgmt/ansible/ansible.cfg

become_user='root'

become_ask_pass=False

4、在/data/sonic-mgmt/ansible路径下创建一个password.txt文件,内容可以随便写,检查不为空就行

5、在主机运行sudo visudo,添加以下命令到文件末尾,确保可以在容器内无需密码登录主机,在主机上无需密码可以运行sudo

主机名 ALL=(ALL) NOPASSWD:ALL

拓扑部署

社区自动化将拓扑部署写成了脚本,可以一键进行部署:

1、启动VM虚拟机,脚本部署完成后可以通过ansible ping模块验证虚机是否启动:

./testbed-cli.sh -m veos_vtb -n 4 start-vms server_1 password.txt

验证指令:ansible -m ping -i veos_vtb server_1 -u root -k 默认密码:123456

2、部署t0拓扑

./testbed-cli.sh -t vtestbed.yaml -m veos_vtb add-topo vms-kvm-t0 password.txt

3、启动sonic vs

./testbed-cli.sh -t vtestbed.yaml -m veos_vtb -k vsonic add-topo vms-kvm-t0 password.txt

4、初始化SONIC配置

./testbed-cli.sh -t vtestbed.yaml -m veos_vtb deploy-mg vms-kvm-t0 veos_vtb password.txt

 

至此,基于KVM的虚拟机testbed就搭建完成了,可以进行环境检查看能否通过用户名与密码登录被测交换机设备,检查接口状态与bgp邻居关系等,若环境无问题,就可以运行pytest执行自动化脚本用例了!

0条评论
0 / 1000
9xxxm
4文章数
0粉丝数
9xxxm
4 文章 | 0 粉丝
原创

基于KVM的方式搭建SONIC 社区自动化

2023-08-28 09:55:34
167
0

SONIC交换机作为软硬结合设备,在转发过程中是强依赖ASIC芯片的,因此在实际测试过程中,测试人员也都是先将软件系统安装更新在被测交换机设备上,再使用真实交换机搭建组网拓扑,来验证被测交换机的功能。这种方法显然非常适用于实际功能的验证,但在物理环境缺失的情况下,测试人员想提前进行自动化调试时,可以尝试用一种虚拟交换机的方法,节约环境资源,提前介入自动化开发调试。

拓扑及实现

对于使用基于 KVM 虚拟机构建自动化测试平台时,VM与vSONIC本质上都是同一服务器中运行的 KVM VM。以t0拓扑为例,用于连接服务器的 DUT 端口可以直接移动到 PTF docker 的网络命名空间,用于连接邻居虚拟机的 DUT 端口可以直接连接到相应的 OVS 网桥,被测的vSONIC通过PTF docker中启动exabgp进程建立ebgp邻居并进行路由交互。

环境搭建准备

测试平台主机要求

Ubuntu20.04 AMD64,部署T0拓扑,需要至少20GB内存

安装python与pip

sudo apt install python3 python3-pip openssh-server

下载sonic-mgmt并使用脚本初始化管理网络

在github官网下git clone sonic-mgmt代码

cd sonic-mgmt/ansible

sudo ./setup-management-network.sh

安装docker,配置docker组,允许以非root用户身份管理docker

sudo groupadd docker

sudo usermod -aG docker $USER

newgrp docker

下载VM image

社区推荐使用的是Arista的vEOS,镜像文件可以注册Arista官网后免费下载,社区推荐的版本如下,下载完成后将文件复制到测试平台~/veos-vm/images

Aboot-veos-serial-8.0.0.iso

vEOS-lab-4.20.15M.vmdk

下载SONIC-VS image

1.下载sonic-vs image

虚拟SONiC image作为被测的操作系统,可以在github主分支下载编译好的sonic-vs.img.gz文件,也可以自己开发编译产出。

2.解压image并将其复制到~/sonic-vm/images/  ~/veos-vm/images下

gzip -d sonic-vs.img.gz

mkdir -p ~/sonic-vm/images

cp sonic-vs.img ~/sonic-vm/images

mkdir -p ~/veos-vm/images

mv sonic-vs.img ~/veos-vm/images

设置sonic-mgmt docker

所有测试平台的配置步骤和测试都是从sonic-mgmt docker容器运行的。该容器包含用于SONiC测试的所有必需的软件包和工具,以使不同开发人员和实验室设置之间的测试行为保持一致。sonic-mgmt主要负责调配整个测试流程,包括启动协议VM、调用ptf等。

1、在sonic-mgmt存储库的根目录下运行setup-container.sh

cd sonic-mgmt

./setup-container.sh -n sonic-mgmt -d /data

2、进入sonic-mgmt docker,从这一步开始,除非另外说明,否则之后的每一步都在sonic-mgmt docker内运行

docker exec -it sonic-mgmt bash

3、在sonic-mgmt docker中设置主机公钥

修改/data/sonic-mgmt/ansible/veos_vtb,将内容替换为自己登录主机的用户名

STR-ACS-VSERV-01:      

ansible_host: 172.17.0.1      

ansible_user: use_own_value      

vm_host_user: foo

修改/data/sonic-mgmt/ansible/group_vars/vm_host/creds.yml文件

vm_host_user: foo

vm_host_password: foo123

vm_host_become_password: foo123

取消注释这两行:/data/sonic-mgmt/ansible/ansible.cfg

become_user='root'

become_ask_pass=False

4、在/data/sonic-mgmt/ansible路径下创建一个password.txt文件,内容可以随便写,检查不为空就行

5、在主机运行sudo visudo,添加以下命令到文件末尾,确保可以在容器内无需密码登录主机,在主机上无需密码可以运行sudo

主机名 ALL=(ALL) NOPASSWD:ALL

拓扑部署

社区自动化将拓扑部署写成了脚本,可以一键进行部署:

1、启动VM虚拟机,脚本部署完成后可以通过ansible ping模块验证虚机是否启动:

./testbed-cli.sh -m veos_vtb -n 4 start-vms server_1 password.txt

验证指令:ansible -m ping -i veos_vtb server_1 -u root -k 默认密码:123456

2、部署t0拓扑

./testbed-cli.sh -t vtestbed.yaml -m veos_vtb add-topo vms-kvm-t0 password.txt

3、启动sonic vs

./testbed-cli.sh -t vtestbed.yaml -m veos_vtb -k vsonic add-topo vms-kvm-t0 password.txt

4、初始化SONIC配置

./testbed-cli.sh -t vtestbed.yaml -m veos_vtb deploy-mg vms-kvm-t0 veos_vtb password.txt

 

至此,基于KVM的虚拟机testbed就搭建完成了,可以进行环境检查看能否通过用户名与密码登录被测交换机设备,检查接口状态与bgp邻居关系等,若环境无问题,就可以运行pytest执行自动化脚本用例了!

文章来自个人专栏
sonic
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0