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

在CTyunOS系统上用ansible部署网元数据面

2023-10-30 07:24:48
213
0
一、CTyunOS部署目标系统准备
 
  1. 系统环境介绍:
系统环境:CTyunOS虚拟机
系统版本:CTyunOS2.0.1
VMware创建CTyunOS虚拟机介绍:
与VMware创建CentOS等虚拟机类似,需要注意的是内核版本选择为“其他Linux 4.x 或更高版本内核 64位,其他配置根据需求安装即可:
 
  1. 网卡配置
1)网卡激活:
CTyunOS空系统网卡尚未激活,通过以下步骤激活(以我安装虚拟机时创建的NAT模式网卡ens33为例):
  • vi /etc/sysconfig/network-scripts/ifcfg-ens33将ONBOOT=yes
 
  • 重启网卡:ifdown ens33, ifup ens33
  • 现在ip addr查看ens33已经获取到IP地址了
 
2)添加网卡;
 根据dpos运行需求添加网卡
CTyunOS采用 nmcli命令配置网卡:
  • 先通过VMware给虚拟机添加一张网卡,此时添加的网卡尚未激活(如:ens36);
  • 添加网卡连接:
nmcli connection add con-name <网络接口名称> type <接口类型> ifname <网卡名称>
如:nmcli connection add type ethernet con-name ens36 ifname ens36
  • 查看连接状态:nmcli connection show
 
  • 启用网卡:
nmcli connection up ens36
 
  1. yum源配置:
1)ctyunos yum源配置:
vi /etc/yum.repos.d/ctyunos.repo
[everything]
name=everything
baseurl=xxx
enabled=1
gpgcheck=0
 
2)dpos rpm安装包本地yum源配置(如果需要部署多台目标机,则需要在每一台目标机上配置dpos rpm安装包本地yum源)
注意:真实部署环境不需要按以下方法在目标机上配置yum源,由ansible-playbook ./playbooks/system_init.yml --tags=repo_careat来部署目标机yum源,其他目标机系统初始化操作均可通过ansible-playbook ./playbooks/system_init.yml指定相应tags来初始化。
  • 将dpos rpm安装包放到部署目标机本地目录;
  • 安装createrepo:yum install -y createrepo;
  • 添加dpos rpm本地yum配置文件:
在/etc/yum.repos.d/目录下添加 .repo后缀yum源配置文件,命名最好不要为redhat.repo,并将yum源路径指向存放dpos rpm安装包的路径:
 
  • 创建yum源:createrepo 指定安装包路径,执行成功后会在安装包路径生成repodata目录及相关文件
 
  1. 关闭防火墙:
  • systemctl disable firewalld
  • firewall-cmd --reload
 
  1. 关闭selinux(防止创建的文件没有权限执行, 如果只是采用setenforce 0临时关闭selinux,系统重启后sleinux将自动打开,届时dpos将不能正常恢复运行):
  • vi /etc/selinux/config 将SELINUX值修改为disabled并保存
 
  • reboot:重启系统生效
 
  1. 基础工具安装(可选):
  • yum install vim -y
  • yum install net-tools.x86_64 -y (ifconfig)
  • yum install lrzsz  -y
 
三、ansible部署环境准备
  1. ansibe部署环境安装:
        1) CentOS上安装方法:
        2)CTyunOS2.0上安装方法:
  • 首先,配置ansible的yum源文件,vi /etc/yum.repos.d/ansible.repo,在里面添加如下内容保存,然后执行yum makecache更新yum源( 由于OpenEuler官方无ansible,这里使用清华大学yum源镜像 )
[ansible]
name=ansible
baseurl=xxx
gpgcheck=0
  • 安装ansible:yum install ansible -y,
  • ansible安装成功后,执行ansible --version查看ansible版本
  • 如果出现以下这种情况,需手动对缺失的module进行安装:yum install python-jinja2
 
 
  • 至此,在CTyunOS上安装ansible成功
  1. vnet-deploy自动化部署环境搭建:
  • vnet-deploy自动化部署代码(切换到dpos-newbranch分支)
  • 配置ANSIBLE_CONFIG环境变量:export ANSIBLE_CONFIG=xxx/ansible/ansible.cfg(绝对路径下vnet-deploy代码中ansible目录下的ansible.cfg)
 
  1. dpos安装包yum源配置及httpd服务器搭建:
  • 将dpos rpm安装包放到/tmp目录( 注意:一定要将dpos rpm安装包放到/tmp/目录下,否则下一步将执行不成功);
  • 进入vnet-deploy/ansible目录,执行sh ./script/repo.sh:执行该脚本会创建dpos rpm包本地yum源,并搭建httpd服务器,供部署时部署目标机下载。
三、 部署网元数据面
(一)、单网元单主机部署
    在单台CTyunOS目标主机上部署,这里以部署igw网元为例, agw及sgw的部署流程与原理与igw相同。
  1.  vnet-deploy自动化部署工具配置文件修改:
  • 在ansible/hosts中添加需要部署的网元及目标host,ssh账户密码填写部署目标机登录用户名及密码,注意:由于CTyunOS的是python3-dnf,这里ansible_python_interpreter指向/usr/bin/python3
 
  • 根据部署目标机接口情况及部署需求在ansible/host_vars目录下,以目标机host ip命名创建对应的接口配置文件,其中net_type:1代表WAN口,0代表LAN口
 
  1. 对目标机进行部署
进入vnet-deploy代码ansible目录下。
 
1).  对目标机进行系统初始化(目前只初始化了大页内存):
ansible-playbook ./playbooks/system_init.yml
执行结果:
 
 
执行解析:
  • 执行该命令时会根据ansible/playbooks/system_init.yml中的hosts变量在ansible/hosts文件中找到对应目标主机组和目标主机用于建立ssh连接;
 
 
  • 然后根据roles变量找到角色目录下(ansible/roles)的tasks(system_init)并执行ansible/roles/system_init/tasks/main.yml
 
  • 根据import_tasks执行对应task(hugepage_mem.yml)
  • hugepage_mem.yml中, 如果ansible从目标机获取到的系统版本在ansible/group_vars/all/config.yml全局配置支持的系统版本中,则会通过notify通知执行handlers(ansible/roles/system_init/handlers/main.yml
 
 
  • ansible/roles/system_init/handlers/main.ym加载目标机中/etc/sysctl.conf并执行shell命令sysctl -p初始化目标机大页内存:
 
 
 
2). 安装并运行dpos:
ansible-playbook ./playbooks/dpos.yml --tags=install
执行结果:
 
 
 
执行解析:
  • 同样,根据ansible/playbooks/dpos.yml中hosts变量在ansible/hosts文件中找到对应目标主机组和目标主机用于建立ssh连接;
 
  • 然后根据roles变量找到角色目录下(ansible/roles)的tasks(dpos)并执行ansible/roles/dpos/tasks/main.yml
 
  • 由于命令指定了tags=install,则会依次执行带有tags为install的task:install.yml,config.yml,init.yml,check.yml
  • 首先,执行install.yml,从yum源下载并安装dpos安装包:
 
  • 执行config.yml:
        (1)  获取目标机接口pciid;
        (2)  根据接口配置(ansible/host_vars目录下的接口配置文件)初始化目标机dpos.conf配置文件;
        (3)  初始化dpos重启配置文件init_param;
        (4)  添加开机重启dpos任务。
 
  • 执行init.yml:
        (1)  拷贝dpos环境初始化文件到目目标机;
        (2)  初始化目标机dpdk环境(安装igb_uio及rte_kni驱动);
        (3) 初始化dpdk接口, 完成后通过notify通知ansible/roles/dpos/handlers/main.yml执行restart-dpos-service启动目标机dpos。
 
 
  • check目标机的配置及dpos运行状态的task尚未开发。
3). 卸载dpos
ansible-playbook ./playbooks/dpos.yml --tags=uninstall
执行结果:
 
 
执行解析:
  • 与install过程类似,先根据hosts与目标机建立连接,后根据roles执行ansible/roles/dpos/tasks/main.yml
 
  • 由于命令指定了tags=uninstall,则会执行带有tags为unintsall的task:unintsall.yml
        (1)  备份目标机dpdk-devbind.py脚本;
        (2)  删除目标机vnet-dpos目录下dpos安装包安装的文件;
        (3)  创建目标机/home/vnet-dpos/script目录并赋予相应权限;
        (4)  拷贝init_env.sh及dpdk-devbind-remote.py脚本到目标机/home/vnet-dpos/script目录;
        (5)  卸载igb_uio及rte_kni驱动并解绑dpdk接口;
        (6)  删除 /home/vnet-dpos/script/下的文件;
        (7)  删除开机重启dpos的任务。
 
 
4). 更新安装dpos
目前暂不支持直接更新安装,需要先卸载后再安装
ansible-playbook ./playbooks/dpos.yml --tags=uninstall
ansible-playbook ./playbooks/dpos.yml --tags=install
 
(二)、 多AZ多网元部署
    在多AZ的多个网元的多台主机上部署dpos,部署流程和原理与单主机相同,只需要在相关配置文件里将多AZ下的各网元配置添加上后,即可利用ansible一键部署dpos。
    这里以部署agw、sgw、igw为例,假如在AZ1下有一台agw和一台sgw,AZ2、AZ3下分别有一台sgw、igw,利用ansible对他们进行一键部署。
 
 
                                                            
  1. vnet-deploy自动化部署工具配置文件修改:
        1)hosts文件:
  • 首先,同样先修改ansible/hosts文件,这里以上面所有网元的ssh账号密码及python解释器一致为例,修改hosts文件里全局变量里的相关变量。
 
  • 在kube_worker变量下添加子变量包含kube_networkelement_agw(agw)、kube_networkelement_sgw(sgw)、kube_networkelement_sgw(igw)
 
  • 因为只有AZ1下有一台agw网元,故在kube_networkelement_agw变量下添加子变量kube_networkelement_agw_az1变量,并且在kube_networkelement_agw_az1变量下添加这台agw的host ip:
 
  • AZ1与AZ2下分别有一台sgw,故在kube_networkelement_sgw变量下添加子变量kube_networkelement_sgw_az1和kube_networkelement_sgw_az2,并且在kube_networkelement_sgw_az1和kube_networkelement_sgw_az2下添加两台sgw的host ip:
 
 
  • 只有AZ3下有一台igw,故在kube_networkelement_igw变量下添加子变量kube_networkelement_igw_az3,并且在kube_networkelement_igw_az3下添加该igw的host ip:
 
2) 网元接口配置文件:
  • 根据各部署网元目标机接口情况及部署需求在ansible/host_vars目录下,以目标机host ip命名创建对应的接口配置文件。这里以agw接口配置文件192.168.83.145.yml为例,其中net_type:1代表WAN口,0代表LAN口
 
 
  1. 对多AZ下各网元目标机进行部署
进入vnet-deploy代码ansible目录下。
1).  对各网元目标机进行系统初始化(目前只初始化了大页内存):
ansible-playbook ./playbooks/system_init.yml
 
 
2). 在各网元目标机上安装并运行dpos:
ansible-playbook ./playbooks/dpos.yml --tags=install
 
 
3). 卸载各网元目标机上的dpos
ansible-playbook ./playbooks/dpos.yml --tags=uninstall
 
 
4). 更新安装dpos
目前暂不支持直接更新安装,需要先卸载后再安装
ansible-playbook ./playbooks/dpos.yml --tags=uninstall
ansible-playbook ./playbooks/dpos.yml --tags=install
 
0条评论
作者已关闭评论
l****n
2文章数
0粉丝数
l****n
2 文章 | 0 粉丝
l****n
2文章数
0粉丝数
l****n
2 文章 | 0 粉丝
原创

在CTyunOS系统上用ansible部署网元数据面

2023-10-30 07:24:48
213
0
一、CTyunOS部署目标系统准备
 
  1. 系统环境介绍:
系统环境:CTyunOS虚拟机
系统版本:CTyunOS2.0.1
VMware创建CTyunOS虚拟机介绍:
与VMware创建CentOS等虚拟机类似,需要注意的是内核版本选择为“其他Linux 4.x 或更高版本内核 64位,其他配置根据需求安装即可:
 
  1. 网卡配置
1)网卡激活:
CTyunOS空系统网卡尚未激活,通过以下步骤激活(以我安装虚拟机时创建的NAT模式网卡ens33为例):
  • vi /etc/sysconfig/network-scripts/ifcfg-ens33将ONBOOT=yes
 
  • 重启网卡:ifdown ens33, ifup ens33
  • 现在ip addr查看ens33已经获取到IP地址了
 
2)添加网卡;
 根据dpos运行需求添加网卡
CTyunOS采用 nmcli命令配置网卡:
  • 先通过VMware给虚拟机添加一张网卡,此时添加的网卡尚未激活(如:ens36);
  • 添加网卡连接:
nmcli connection add con-name <网络接口名称> type <接口类型> ifname <网卡名称>
如:nmcli connection add type ethernet con-name ens36 ifname ens36
  • 查看连接状态:nmcli connection show
 
  • 启用网卡:
nmcli connection up ens36
 
  1. yum源配置:
1)ctyunos yum源配置:
vi /etc/yum.repos.d/ctyunos.repo
[everything]
name=everything
baseurl=xxx
enabled=1
gpgcheck=0
 
2)dpos rpm安装包本地yum源配置(如果需要部署多台目标机,则需要在每一台目标机上配置dpos rpm安装包本地yum源)
注意:真实部署环境不需要按以下方法在目标机上配置yum源,由ansible-playbook ./playbooks/system_init.yml --tags=repo_careat来部署目标机yum源,其他目标机系统初始化操作均可通过ansible-playbook ./playbooks/system_init.yml指定相应tags来初始化。
  • 将dpos rpm安装包放到部署目标机本地目录;
  • 安装createrepo:yum install -y createrepo;
  • 添加dpos rpm本地yum配置文件:
在/etc/yum.repos.d/目录下添加 .repo后缀yum源配置文件,命名最好不要为redhat.repo,并将yum源路径指向存放dpos rpm安装包的路径:
 
  • 创建yum源:createrepo 指定安装包路径,执行成功后会在安装包路径生成repodata目录及相关文件
 
  1. 关闭防火墙:
  • systemctl disable firewalld
  • firewall-cmd --reload
 
  1. 关闭selinux(防止创建的文件没有权限执行, 如果只是采用setenforce 0临时关闭selinux,系统重启后sleinux将自动打开,届时dpos将不能正常恢复运行):
  • vi /etc/selinux/config 将SELINUX值修改为disabled并保存
 
  • reboot:重启系统生效
 
  1. 基础工具安装(可选):
  • yum install vim -y
  • yum install net-tools.x86_64 -y (ifconfig)
  • yum install lrzsz  -y
 
三、ansible部署环境准备
  1. ansibe部署环境安装:
        1) CentOS上安装方法:
        2)CTyunOS2.0上安装方法:
  • 首先,配置ansible的yum源文件,vi /etc/yum.repos.d/ansible.repo,在里面添加如下内容保存,然后执行yum makecache更新yum源( 由于OpenEuler官方无ansible,这里使用清华大学yum源镜像 )
[ansible]
name=ansible
baseurl=xxx
gpgcheck=0
  • 安装ansible:yum install ansible -y,
  • ansible安装成功后,执行ansible --version查看ansible版本
  • 如果出现以下这种情况,需手动对缺失的module进行安装:yum install python-jinja2
 
 
  • 至此,在CTyunOS上安装ansible成功
  1. vnet-deploy自动化部署环境搭建:
  • vnet-deploy自动化部署代码(切换到dpos-newbranch分支)
  • 配置ANSIBLE_CONFIG环境变量:export ANSIBLE_CONFIG=xxx/ansible/ansible.cfg(绝对路径下vnet-deploy代码中ansible目录下的ansible.cfg)
 
  1. dpos安装包yum源配置及httpd服务器搭建:
  • 将dpos rpm安装包放到/tmp目录( 注意:一定要将dpos rpm安装包放到/tmp/目录下,否则下一步将执行不成功);
  • 进入vnet-deploy/ansible目录,执行sh ./script/repo.sh:执行该脚本会创建dpos rpm包本地yum源,并搭建httpd服务器,供部署时部署目标机下载。
三、 部署网元数据面
(一)、单网元单主机部署
    在单台CTyunOS目标主机上部署,这里以部署igw网元为例, agw及sgw的部署流程与原理与igw相同。
  1.  vnet-deploy自动化部署工具配置文件修改:
  • 在ansible/hosts中添加需要部署的网元及目标host,ssh账户密码填写部署目标机登录用户名及密码,注意:由于CTyunOS的是python3-dnf,这里ansible_python_interpreter指向/usr/bin/python3
 
  • 根据部署目标机接口情况及部署需求在ansible/host_vars目录下,以目标机host ip命名创建对应的接口配置文件,其中net_type:1代表WAN口,0代表LAN口
 
  1. 对目标机进行部署
进入vnet-deploy代码ansible目录下。
 
1).  对目标机进行系统初始化(目前只初始化了大页内存):
ansible-playbook ./playbooks/system_init.yml
执行结果:
 
 
执行解析:
  • 执行该命令时会根据ansible/playbooks/system_init.yml中的hosts变量在ansible/hosts文件中找到对应目标主机组和目标主机用于建立ssh连接;
 
 
  • 然后根据roles变量找到角色目录下(ansible/roles)的tasks(system_init)并执行ansible/roles/system_init/tasks/main.yml
 
  • 根据import_tasks执行对应task(hugepage_mem.yml)
  • hugepage_mem.yml中, 如果ansible从目标机获取到的系统版本在ansible/group_vars/all/config.yml全局配置支持的系统版本中,则会通过notify通知执行handlers(ansible/roles/system_init/handlers/main.yml
 
 
  • ansible/roles/system_init/handlers/main.ym加载目标机中/etc/sysctl.conf并执行shell命令sysctl -p初始化目标机大页内存:
 
 
 
2). 安装并运行dpos:
ansible-playbook ./playbooks/dpos.yml --tags=install
执行结果:
 
 
 
执行解析:
  • 同样,根据ansible/playbooks/dpos.yml中hosts变量在ansible/hosts文件中找到对应目标主机组和目标主机用于建立ssh连接;
 
  • 然后根据roles变量找到角色目录下(ansible/roles)的tasks(dpos)并执行ansible/roles/dpos/tasks/main.yml
 
  • 由于命令指定了tags=install,则会依次执行带有tags为install的task:install.yml,config.yml,init.yml,check.yml
  • 首先,执行install.yml,从yum源下载并安装dpos安装包:
 
  • 执行config.yml:
        (1)  获取目标机接口pciid;
        (2)  根据接口配置(ansible/host_vars目录下的接口配置文件)初始化目标机dpos.conf配置文件;
        (3)  初始化dpos重启配置文件init_param;
        (4)  添加开机重启dpos任务。
 
  • 执行init.yml:
        (1)  拷贝dpos环境初始化文件到目目标机;
        (2)  初始化目标机dpdk环境(安装igb_uio及rte_kni驱动);
        (3) 初始化dpdk接口, 完成后通过notify通知ansible/roles/dpos/handlers/main.yml执行restart-dpos-service启动目标机dpos。
 
 
  • check目标机的配置及dpos运行状态的task尚未开发。
3). 卸载dpos
ansible-playbook ./playbooks/dpos.yml --tags=uninstall
执行结果:
 
 
执行解析:
  • 与install过程类似,先根据hosts与目标机建立连接,后根据roles执行ansible/roles/dpos/tasks/main.yml
 
  • 由于命令指定了tags=uninstall,则会执行带有tags为unintsall的task:unintsall.yml
        (1)  备份目标机dpdk-devbind.py脚本;
        (2)  删除目标机vnet-dpos目录下dpos安装包安装的文件;
        (3)  创建目标机/home/vnet-dpos/script目录并赋予相应权限;
        (4)  拷贝init_env.sh及dpdk-devbind-remote.py脚本到目标机/home/vnet-dpos/script目录;
        (5)  卸载igb_uio及rte_kni驱动并解绑dpdk接口;
        (6)  删除 /home/vnet-dpos/script/下的文件;
        (7)  删除开机重启dpos的任务。
 
 
4). 更新安装dpos
目前暂不支持直接更新安装,需要先卸载后再安装
ansible-playbook ./playbooks/dpos.yml --tags=uninstall
ansible-playbook ./playbooks/dpos.yml --tags=install
 
(二)、 多AZ多网元部署
    在多AZ的多个网元的多台主机上部署dpos,部署流程和原理与单主机相同,只需要在相关配置文件里将多AZ下的各网元配置添加上后,即可利用ansible一键部署dpos。
    这里以部署agw、sgw、igw为例,假如在AZ1下有一台agw和一台sgw,AZ2、AZ3下分别有一台sgw、igw,利用ansible对他们进行一键部署。
 
 
                                                            
  1. vnet-deploy自动化部署工具配置文件修改:
        1)hosts文件:
  • 首先,同样先修改ansible/hosts文件,这里以上面所有网元的ssh账号密码及python解释器一致为例,修改hosts文件里全局变量里的相关变量。
 
  • 在kube_worker变量下添加子变量包含kube_networkelement_agw(agw)、kube_networkelement_sgw(sgw)、kube_networkelement_sgw(igw)
 
  • 因为只有AZ1下有一台agw网元,故在kube_networkelement_agw变量下添加子变量kube_networkelement_agw_az1变量,并且在kube_networkelement_agw_az1变量下添加这台agw的host ip:
 
  • AZ1与AZ2下分别有一台sgw,故在kube_networkelement_sgw变量下添加子变量kube_networkelement_sgw_az1和kube_networkelement_sgw_az2,并且在kube_networkelement_sgw_az1和kube_networkelement_sgw_az2下添加两台sgw的host ip:
 
 
  • 只有AZ3下有一台igw,故在kube_networkelement_igw变量下添加子变量kube_networkelement_igw_az3,并且在kube_networkelement_igw_az3下添加该igw的host ip:
 
2) 网元接口配置文件:
  • 根据各部署网元目标机接口情况及部署需求在ansible/host_vars目录下,以目标机host ip命名创建对应的接口配置文件。这里以agw接口配置文件192.168.83.145.yml为例,其中net_type:1代表WAN口,0代表LAN口
 
 
  1. 对多AZ下各网元目标机进行部署
进入vnet-deploy代码ansible目录下。
1).  对各网元目标机进行系统初始化(目前只初始化了大页内存):
ansible-playbook ./playbooks/system_init.yml
 
 
2). 在各网元目标机上安装并运行dpos:
ansible-playbook ./playbooks/dpos.yml --tags=install
 
 
3). 卸载各网元目标机上的dpos
ansible-playbook ./playbooks/dpos.yml --tags=uninstall
 
 
4). 更新安装dpos
目前暂不支持直接更新安装,需要先卸载后再安装
ansible-playbook ./playbooks/dpos.yml --tags=uninstall
ansible-playbook ./playbooks/dpos.yml --tags=install
 
文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0