鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

(可选)制作独立WAAS Booster RPM

由于某些部署环境不支持网络连接操作,无法安装WAAS Booster所需依赖,因此本节给出不依赖环境的独立RPM包制作过程。

  • 制作该RPM包的机器环境需能访问外部网络。
  • root用户可直接执行下述命令;普通用户执行本小节的操作时,需要在下述命令前加sudo提高权限。
  1. 安装软件运行必要依赖。
    1
    yum install -y python rpm-build cpio
    
  2. 下载Miniconda3安装脚本
  3. 按默认安装Miniconda3。
    sh Miniconda3-py310_25.1.1-2-Linux-aarch64.sh
  4. “/etc/profile”里配置安装好的Miniconda3的二进制路径。
    1. 打开文件。
      vim /etc/profile
    2. 在文件末尾添加如下内容。
      export PATH=$PATH:/root/miniconda3/bin/
    3. “Esc”键退出编辑模式,输入:wq!,按“Enter”键保存退出文件。
    4. 使文件生效。
      source /etc/profile
  5. 初始化创建好的conda环境。
    1
    conda init
    
  6. 退出当前SSH窗口,再重新连接SSH窗口,确保conda生效。

    如果重新进入SSH窗口显示为在base环境中,则需要使用conda deactivate退出base环境,如果不在则无需操作。

  7. 使用conda创建Python环境,例如环境命名为waasbooster_env。
    1. 添加conda-forge channel。
      conda config --add channels conda-forge
    2. 使用conda-forge创建python环境。
      conda create -n waasbooster_env python=3.9.9 -c conda-forge
  8. 查看waasbooster_env环境路径。
    1
    conda env list
    

    回显如下图所示:

  9. 执行命令进入指定虚拟环境。
    conda activate waasbooster_env
  10. 新增文件requirements.txt,添加如下内容。
    numpy==1.23.4 
    pandas==2.2.3 
    prophet==1.1.7 
  11. 执行命令行安装上述依赖。
    1
    pip3 install -r requirements.txt
    
  12. 创建并进入waasbooster rpm编译路径,例如此处路径为“/home/waasbooster_rpm_build”
    1. 创建路径。
      1
      mkdir /home/waasbooster_rpm_build
      
    2. 进入路径。
      1
      cd /home/waasbooster_rpm_build
      
  13. 拷贝conda环境文件到RPM编译路径。
    1
    cp -r /root/miniconda3/envs/waasbooster_env/ /home/waasbooster_rpm_build/
    
  14. 获取并解压WAAS软件安装包waas-waasbooster.zip。

    获取链接请参见操作系统和软件要求

    1
    unzip waas-waasbooster.zip
    
  15. 拷贝主程序文件夹waasbooster。
    1
    cp -r waas-waasbooster/src/waasbooster/ /home/waasbooster_rpm_build/
    
  16. 修改waasbooster.service文件。
    1. 打开waasbooster.service文件。
      vim /home/waasbooster_rpm_build/waasbooster/waasbooster.service
    2. “i”进入编辑模式,

      ExecStart=/usr/local/waasbooster/bin/python3 /usr/local/waasbooster/waas_booster.py

      修改为

      ExecStart=/usr/local/waasbooster/waasbooster_env/bin/python3 /usr/local/waasbooster/waas_booster.py
    3. “Esc”键退出编辑模式,输入:wq!,按“Enter”键保存退出文件。
  17. 新增文件,保存指定内容。

    root用户可直接执行下述命令;普通用户执行本小节的操作时,需要在下述命令前加sudo提高权限。

    1. 新增文件build.sh,添加如下内容。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      #!/bin/bash
      # ******************************************************************************** #
      # Copyright Huawei Technologies Co., Ltd. 2023-2024. All rights reserved.
      # File Name: build.sh
      # Description: 编译构建总调用脚本
      # Usage: sh build.sh clean --> 环境清理
      #        sh build.sh build_debug --> 部署调试环境(需要先安装server并配置WAAS_HOME环境变量)
      #        sh build.sh build_package --> 打包
      # ******************************************************************************** #
      CURRENT_DIR=$(dirname $(readlink -f "$0"))
      BUILD_DIR=${CURRENT_DIR}/build
      mkdir -p ${BUILD_DIR}
      mkdir -p ${CURRENT_DIR}/output
      function clean() {
          rm -rf ${BUILD_DIR}/rpmbuild/*
          rm -rf ${CURRENT_DIR}/build
          rm -rf ${CURRENT_DIR}/output
          rm -rf ${CURRENT_DIR}/debug
      }
      function build_booster_package() {
          clean
          cd ${CURRENT_DIR}/
          mkdir -p ${BUILD_DIR}/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
          rm -rf build/rpmbuild/BUILDROOT/*
          cp -rf waasbooster_env ${BUILD_DIR}/rpmbuild/SOURCES
          build_waas_booster
      }
      function build_waas_booster() {
          mkdir -p ${CURRENT_DIR}/output
          cp waas_booster.spec ${BUILD_DIR}/rpmbuild/SPECS/
          find waasbooster -name '__pycache__' | xargs rm -rf
          zip -r ${BUILD_DIR}/rpmbuild/SOURCES/waasbooster.zip \
              waasbooster/* \
              waasbooster_env/*
          rpmbuild --define "_topdir ${BUILD_DIR}/rpmbuild" -v -ba ${BUILD_DIR}/rpmbuild/SPECS/waas_booster.spec --undefine=py_auto_byte_compile
          cp ${BUILD_DIR}/rpmbuild/RPMS/aarch64/waasbooster-1.0.0-1.aarch64.rpm ./output/waasbooster-1.0.0-1.aarch64.rpm
      }
      main() {
          item=$1
          eval ${item}
      }
      main "$@"
      exit $?
      
    2. 新增文件waas_booster.spec,添加如下内容。
      %define projectdir /usr/local/waasbooster
      
      Name:     waasbooster
      Version:  1.0.0
      Release:  1%{?dist}
      Summary:    负载感知
      License:    FIXME
      BuildArch: %{_build_arch}
      Vendor:     Huawei
      
      Provides: waasbooster = 1.0.0
      
      %description
      WaaS Booster是一款在线版容器quota调优工具
      
      %prep
      unzip %{_sourcedir}/waasbooster.zip
      
      %build
      
      
      %install
      mkdir -p %{buildroot}/usr/lib/systemd/system/
      mkdir -p %{buildroot}/usr/bin/
      mkdir -p %{buildroot}/%{projectdir}
      cp %{_builddir}/waasbooster/* %{buildroot}/%{projectdir}
      
      install -m 444 waasbooster/waasbooster.service %{buildroot}/usr/lib/systemd/system/waasbooster.service
      cp -r %{_sourcedir}/waasbooster_env %{buildroot}/usr/local/waasbooster
      
      
      %files
      %dir %attr(644, waas, waas) %{projectdir}
      %defattr (0440, waas, waas)
      %{projectdir}/*
      %dir %attr(644, waas, waas) %{projectdir}
      %attr(644, root, root) /usr/lib/systemd/system/waasbooster.service
      %dir %attr(750, waas, waas) /usr/local/waasbooster/waasbooster_env
      %{projectdir}/waasbooster_env/*
      
      #=======以上是打包过程执行脚本========
      #=======以下是安装卸载时执行脚本========
      
      %pre -p /bin/sh
      getent group waas &> /dev/null || \
      groupadd -r waas &> /dev/null
      getent passwd waas &> /dev/null || \
      useradd -r -g waas -d /usr/local/waasbooster -s /sbin/nologin \
      -c 'Waas booster' waas &> /dev/null
      if [ $SUDO_USER ]; then
          usermod -a -G waas $SUDO_USER
      elif [ $USER ]; then
          usermod -a -G waas $USER
      else
          usermod -a -G waas `whoami`
      fi
      exit 0
      
      %post -p /bin/sh
      mkdir -p /var/waasbooster
      chown waas:waas /var/waasbooster
      chmod 750 /var/waasbooster
      mkdir -p /var/run/waasbooster_manager
      systemctl enable waasbooster.service
      chmod +x /usr/local/waasbooster/waasbooster_env/bin/python3
      exit 0
      
      %preun -p /bin/sh
      exit 0
      
      %postun -p /bin/sh
      rm -rf /usr/local/waasbooster
      rm -rf /var/waasbooster
      rm -rf /var/run/waasbooster_manager
      exit 0
      
  18. 编译RPM包。
    sh build.sh build_booster_package

    编译结果输出至编译路径的output文件夹下,此处为“/home/waasbooster_rpm_build/output/”

  19. 安装独立RPM包。
    • 无需安装WAAS Booster运行环境即可部署运行此安装包。
    • 安装此RPM包时请添加--nodeps命令,否则将无法安装运行。
    rpm -ivh --nodeps /home/waasbooster_rpm_build/output/waasbooster-1.0.0-1.aarch64.rpm
  20. (可选)卸载独立RPM包。
    rpm -e --nodeps waasbooster