背景
由于工作需要,博主经常会到各大企业的自建机房中私有化部署公司的软件产品。
在某些企业自建机房中,有时给到全新的机器,没有基础环境,甚至有的还无法互联网,而且因为近几年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 = Noneconfigured 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/ansibleansible collection location = /home/HwHiAiUser/.ansible/collections:/usr/share/ansible/collectionsexecutable location = /usr/local/miniconda3/bin/ansiblepython 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.3libyaml = 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.183ansible_password: "ehl1234"test-server-ubuntu:ansible_host: 192.168.6.193ansible_user: ehlansible_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上传的教学视频,降低学习门槛。