背景

由于工作需要,博主经常会到各大企业的自建机房中私有化部署公司的软件产品。

在某些企业自建机房中,有时给到全新的机器,没有基础环境,甚至有的还无法互联网,而且因为近几年CentOS的停止更新,服务器也会出现Ubuntu或一些国产系统。架构除了x86还有arm,基础组件安装配置工作繁琐。

为了简化各基础组件、通用配置的安装适配。我编写了一个开源项目Gitee auto-install使用ansible将常用功能封装成模块,还额外支持了command命令,通过命令行的方式离线安装配置常用的模块,例如yum源、防火墙、Docker、中间件等工具。目前项目支持的模块,其他的还在持续更新中:

Status

Module

Description

Link

CentOS x86 Support

CentOS ARM Support

Ubuntu x86 Support

Ubuntu ARM Support

change-hosts

修改hosts文件

README

config-repo

配置包管理工具源

README

 

 

disable-selinux

禁用SELinux模块

README

  

distribute-file

分发文件到远程主机

README

download-file

从远程主机获取文件

README

firewall-whitelist

防火墙白名单互信

README

 

install-apisix

安装Apisix

README

    

install-chrony

安装chrony

README

 

 

install-common-tools

安装其他常见模块

README

install-docker

安装Docker

README

 

install-firewalld

安装防火墙firewalld

README

 

install-harbor

安装harbor

README

    

install-httpd

安装httpd

README

  

install-jdk8

安装jdk8

README

  
 

install-grafana

安装Grafana

README

    
 

install-prometheus

安装prometheus

README

    

install-mydumper

安装MyDumper数据备份工具

README

   
 

install-mysql5.7

安装MySQL5.7数据库

README

    
 

install-nacos

安装Nacos

README

    
 

install-nextcloud

安装NextCloud

README

    
 

install-nfs

安装文件服务

README

    

install-nginx

安装Nginx

README

 

install-redis

安装Reids数据库

README

    

install-repo-manager

安装自建包管理工具源

README

 

 
 

optimize-connect-num

优化连接数

README

    

sync-time

修改时区并与时间服务器校准时间

README

  
 

update-kernel

升级内核

README

    

由于工程实施要求不多,只需要完成特定任务即可,所以挑战一下只带一款便携的主机出差完成这些工作。

选材

大学时买的树莓派3B,小巧可爱,深得我心。可以看到也就鼠标大小。出差随身携带相当方便。由于是许多年前的产品,它的配置有些落后,百兆网口、USB2.0,虽然仍然可以满足需求,但是由于服务部署时会用到网口传输安装包,所以想升级一下设备,可以让我更早的“收工”。

最近因产量问题,树莓派成了理财产品,现在树莓派3代竟然还能卖到七年前的价。转眼看一下国产派,也是百花齐放。最后看了一下搭载华为昇腾芯片的OrangePi AIpro,算力较强后续还可以用来跑一下YOLO和大模型,接口较多后面闲置了用来做一个家庭nas也不错。

 

  • CPU与AI算力:4核64位处理器+AI处理器,集成图形处理器,支持8TOPS AI算力
  • 内存和存储:拥有8GB/16GB LPDDR4X,32MB SPI FLASH,eMMC5.1 HS400可以外接32GB/64GB/128GB/256GB eMMC模块,支持SATA/NVMe SSD 2280的M.2插槽、TF插槽。
  • 网络和蓝牙:Wi-Fi 5双频2.4G和5G,10/100/1000Mbps以太网,BT4.2/BLE
  • 丰富的接口:包括两个HDMI输出支持双4K高清输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB(串口打印调试功能)、两个MIPI摄像头、一个MIPI屏等,预留电池接口
  • 操作系统支持:OrangePi AIpro支持Ubuntu、openEuler操作系统
  • 应用场景:可广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业
  • 配套开发工具:提供 MindStudio 全流程开发工具链,以及一键镜像烧录工具和模型适配工具,方便开发者快速上手和使用。

这是和树莓派3B的大小对比

官方的金属外壳B格非常高,外壳质感是相当的好,这到公司必然是最靓的仔,B格拉满。


 

OrangePi AIpro环境配置

系统烧录可以参考官方文档。官方目前支持两种操作系统,Ubuntu与OpenEuler这里选择的是Ubuntu系统。

自动化项目使用了Python与ansible,我们首先准备基础环境,用apt来安装即可。

# 安装Python与ansible,sshpass
sudo apt install python3 ansible sshpass

安装完成可以查看一下工具版本。

>$ python3 --version
Python 3.9.2

>$ ansible --version
ansible [core 2.15.12]
  config file = None
  configured module search path = ['/home/HwHiAiUser/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/miniconda3/lib/python3.9/site-packages/ansible
  ansible collection location = /home/HwHiAiUser/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/miniconda3/bin/ansible
  python version = 3.9.2 | packaged by conda-forge | (default, Feb 21 2021, 05:02:26) [GCC 9.3.0] (/usr/local/miniconda3/bin/python3)
  jinja version = 3.1.3
  libyaml = True

然后我们下载自动化项目的代码

# 安装git与lfs插件
sudo apt install -y git git-lfs

本地安装好git和git-lfs之后,将自动化项目克隆下载下来。网速快的一会儿就下载完成了。如果缺少离线包可以使用 git lfs pull 来拉取

 

下载完成后可以cd到项目目录中。该项目目录下提供一个命令行工具command.py。我们输入help来查看一下如何使用。

 

可以看到项目支持许多的模块,这样OrangePi AIpro的环境就算准备完毕了。

演练测试

演练环境准备

首先我们模拟自建机房的环境,在本地准备两台虚拟机,一台CentOS一台Ubuntu,虚拟机系统可以选择最小化mini安装。网络模式可以选择桥接,方便远程。也可以将路由器的入网网线拔掉模拟没有互联网的情况,保证OrangePi AIpro与虚拟机在同一个子网内即可。

 

安装好后登录虚拟机输入ip addr命令查看分配的IP,我这里是

  • Ubuntu
    • 192.168.6.193
    • ehl/ehl1234
  • CentOS
    • 192.168.6.183
    • root/ehl1234

试炼

到达现场后,首先给OrangePi AIpro接电,接上网线,开机。关于只带主机怎么操作这件事。我有以下几种方案

  • WiFi:也可以利用wlan与eth双网卡,wlan连接手机,eth连接网线,使用网线与其他服务器连接,可以利用手机终端工具ssh远程盒子。
  • 串口:安卓手机有串口调试工具,OrangePi AIpro支持串口调试,手机可以用otg线来连接。
  • 串口:网上有蓝牙转串口调试工具。在用手机对接。
  • 屏:使用MIPI屏或者HDMI便携屏
  • 借:机房一般有显示器键盘,接上就能用。
  • 借:因为要给客户部署后演示效果,客户也会提供要演示的机器。

能连上OrangePi AIpro的终端就简单多了,我们到AutomateSphere项目工程目录下,有一个inventory.yml文件,这个文件是我们要管理的服务器资产清单,在这个文件中维护服务器的IP、账号、密码。根据我们准备的环境,我们可以随便创建一个测试分组名为 test-group-server,下面有两台主机,分别命名为 test-server-centos 与 test-server-ubuntu,并将详细信息维护进去。配置如下:

test-group-server:
  hosts:
    test-server-centos:
      ansible_host: 192.168.6.183
      ansible_password: "ehl1234"

    test-server-ubuntu:
      ansible_host: 192.168.6.193
      ansible_user: ehl
      ansible_password: "ehl1234"
      ansible_sudo_pass: "ehl1234"

我们可以使用ansible命令来查看与其他服务器的网络是否联通。返回SUCCESS说明网络都是可以联通的。

 

可以验证一下机器中是没有相关环境的。docker用docker --version命令可以查看是否安装了,jdk可以用 java -version,下图这个结果说明都没有安装过。


 

jdk安装

我们利用command来查看如何使用Java安装模块。

 

命令后面可以跟着资产清单中的组名或机器名,我们给测试组的两台机器都安装上jdk8,输入这条命令python command.py install-jdk8 test-group-server 等待即可。

 

可以看到整个过程,我来依次解读一下。

  • 其中Gathering Facts是在收集每台机器的基本信息,操作系统与系统架构。为后续选择安装包做准备。
  • 然后create java dir是在创建存放Java工具的目录。
  • copy jdk.tar.gz to remote server 是在将jdk工具包拷贝到远程主机上。
  • 紧接着 unarchive jdk.tar.gz to /opt/java on remote server 将远程主机上的压缩包文件解压到目录中。
  • change java Runtime Environment 即创建Java_home 等环境变量。
  • restart shell 即重新加载环境变量,令命令生效。

我们可以分别登录两台测试主机,可以验证jdk已经安装好啦。

 

docker安装

还是一样的,可以通过项目提供的command的help来查看install-docker模块该如何使用。python command.py install-docker --help

 

可以看到我们可以通过--DOCKER_DATA_ROOT_DIR来指定Docker存储目录,可以选择将镜像存放到一个较大的磁盘路径中。这里我们先默认,只演示安装过程。

我们演示一下只安装到centos机器,该如何操作。命令后面选择资产清单中的机器名即可,输入这条命令python command.py install-jdk8 test-server-centos 等待即可。

 

可以看到,使用docker --version命令验证,只有CentOS机器安装好了Docker模块。

其他模块规划

其他模块安装同理,一条命令即可完成安装操作。具体内部项目如何部署安装暂不给大家演示啦。也是类似操作,大同小异。此项目开源部分计划支持大部分常见的模块,目前还在更新中,有兴趣的小伙伴也可以关注一下。

该项目的用户接口用的是命令行的方式,实现较为简单,其实还是利用命令来调用ansible。核心模块其实已经实现好了,如果后面能将工具继续集成化,使用前端框架来搭建web服务的方式,将会再降低项目部署门槛。其他技支同事可以带着这个小东西,如果能达到插上点点屏幕就能将应用一键部署,将会大大节省公司人力成本。

总结

OrangePi AIpro使用下来风扇比较静音,也没有发热发烫的情况,这个重量揣到口袋也是相当无感,这硬件性能再加上亲民的价格真的爱了。装上金属外壳质感相当棒,把工作用到的部署工具装进去,即使在街上溜达也随时都能到客户现场完成工作呢! ( 手动狗头doge...

这块板子当做随身主机确实是屈才了,还有许多可玩的场景,官方也提供了许多入门资料。

 

例如系统内置了Jupyter lib可以验证样例。在《用户手册》中有详细说明,大家也可以方便的体验机器学习的魅力,没准会因此选择入门ML。

  • 运行目标检测样例
  • 运行文字识别样例
  • 运行目标分类样例
  • 运行图像曝光增强样例
  • 运行卡通图像生成样例
  • 运行蛋白质分类评估样例
  • 运行细胞图像分割样例
  • 运行人像分割与背景替换样例
  • 运行语音识别样例

昇腾论坛上有教程导航大家可以去寻找自己喜欢的专题,在bilibili还有官方up上传的教学视频,降低学习门槛。

Logo

昇腾万里,让智能无所不及

更多推荐