扔掉 MacBook,挑战带OrangePi出差!

news2024/11/17 20:17:39

  

背景

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

在某些企业自建机房中,有时给到全新的机器,没有基础环境,甚至有的还无法互联网,而且因为近几年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上传的教学视频,降低学习门槛。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1708319.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SCP收容物191~200

注 :此文接SCP收容物181~190,本文只供开玩笑 ,与steve_gqq_MC合作 --------------------------------------------------------------------------------------------------------------------------------- 目录 scp-191 scp-192 scp-193 scp-194 scp-195 …

SQL 语言:数据控制

文章目录 概述授权(GRANT)销权(REVOKE)总结 概述 SQL语言中的数据控制权限分配是数据库管理的重要组成部分,它涉及到如何合理地为用户分配对数据库资源的访问和使用权限。 权限类型:在SQL中,权限主要分为…

OS复习笔记ch7-1

存储的基本管理需求 重定位 重定位(Relocation):需要解决可执行文件中地址(指令和数据)和内存地址的对应。 一般有两种比较常见的重定位方式: 静态重定位(static relocation):当程序被装入内存时,一次性…

《我的阿勒泰》最经典的6句话

这是首部散文影视化改编的作品,剧集里的每一帧画面,都堪比电影大作。 阿勒泰壮丽广阔的风光,如同一幅幅动人的画卷展现在我们面前,让人沉醉其中。李文秀平淡朴实的生活,却溢出了蓬勃的生命力,直击心灵。只…

Yourpassword does not satisfy the current policyrequirements

mysql 新增数据库用户失败 解决方法: 修改校验密码策略等级 set global validate_password.policyLOW;

【算法】位运算算法——只出现一次的数字Ⅱ

题解:只出现一次的数字Ⅱ(位运算算法) 目录 1.题目2.题解:3.代码示例4.总结 1.题目 题目链接:LINK 要求:时间复杂度:O(N),空间复杂度:O(1) 2.题解: 3.代码示例 class Solution {…

搜维尔科技:拒绝毒品行为能力评估与训练系统应用案例

用户名称:山西医科大学 主要产品:虚拟现实复吸风险评估与干预系统 虚拟现实复吸风险评估与干预系统主要是为了解决物质使用障碍患者在临床治疗及康复回归正常生活出现的高复发现象⸺对毒品失控的渴求难以预测控制的问题。 整套系统由软件和硬件两部分…

Llama模型家族之使用 Supervised Fine-Tuning(SFT)微调预训练Llama 3 语言模型(十) 使用 LoRA 微调常见问题答疑

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (一) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (二) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (三) 基于 LlaMA…

C++的第一道门坎:类与对象(二)

一.类中生成的默认成员函数详解 0.类的6个默认成员函数 编译器会给类生成六个默认成员函数,在类中即使我们什么都不做,也会自动生成。 默认成员函数:用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。 下面我们逐…

蓝桥杯物联网竞赛_STM32L071_18_长短按键检测

长短按键的检测是国赛题里面遇到的,省赛没出过有两种实方法 定时器配置: 定时器的话要比delay准确,其中tim7定时器的准度最高 定时器预分配配置32 - 1,计数周期是10000 - 1这样做那么32MHZ/32也就是一秒钟记录10^6的数&#xf…

数组的定义、顺序存储及特殊矩阵的存储

目录 一、数组的定义 1.1概念 1.2抽象数据类型定义 二、数组的顺序存储 2.1一维数组元素的存储位置 2.2二维数组元素的存储位置 2.3三维数组元素的存储位置 三、特殊矩阵的压缩存储 3.1相关概念 3.2对称矩阵 3.3三角矩阵 3.4对角矩阵(带状矩阵&#xff0…

Java 数据类型:学习和区分Java的基本数据类型(如int、float、boolean等)和引用数据类型(如数组、类等)

Java数据类型 Java是一种强类型语言,所有变量在使用前都必须声明其类型。Java的数据类型分为基本数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。了解并区分这两类数据类型是学习Java编程的重…

PC网游、页游、手游、端游各类游戏收集整理大集合-90%以上游戏带视频架设教程

本游戏资源提供给大家学习及参考研究借鉴美工之用,请勿用于商业和非法用途,无任何技术支持! 干货列表

如何将RK R75键盘的右Alt键改为Ctrl键

打开注册表地址栏中输出 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout右键新建二进制值,名称设为ScanCode Map按下图输入数值

什么是知识中台?为什么企业需要知识中台?

如今市面上的企业数不胜数,企业的任何一个小细节都会产生很大的影响。近几年来一直很热门的知识中台备受企业关注。关于如何高效地管理、整合和运用知识,成为了每一家企业都在重点关注的问题。而知识中台,就是为了解决这一问题而诞生的一个全…

软件功能测试的类型和流程分享

在现代社会,软件已经成为人们生活中不可或缺的一部分,而在软件的开发过程中,功能测试是不可或缺的环节。软件功能测试指的是对软件系统的功能进行检查和验证,以确保软件在各种情况下能够正常运行,并且能够按照用户需求…

【设计模式】JAVA Design Patterns——Circuit Breaker(断路器模式)

🔍目的 以这样一种方式处理昂贵的远程服务调用,即单个服务/组件的故障不会导致整个应用程序宕机,我们可以尽快重新连接到服务 🔍解释 真实世界例子 想象一个 Web 应用程序,它同时具有用于获取数据的本地文件/图像和远程…

车载网络测试实操源码_使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文

系列文章目录 车载网络测试实操源码_使用CAPL脚本解析hex、S19、vbf文件 车载网络测试实操源码_使用CAPL脚本对CAN报文的Counter和CRC进行实时监控 车载网络测试实操源码_使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文 车载网络测试实操源码_使用CAPL脚本实现安全…

如何在Spring Boot中整合PageHelper实现分页功能

1.前言 在开发web应用程序时,经常会遇到需要对数据库中的数据进行分页查询的情况。为了简化分页查询的实现过程,我们可以利用PageHelper这个优秀的分页插件来实现分页功能。本文将介绍如何在Spring Boot项目中整合PageHelper,并演示如何使用它…

docker和containerd的区别

docker和containerd的区别 1、容器运行时 1.1 容器运行时概念 容器运行时(Container Runtime)是一种负责在操作系统层面创建和管理容器的软件工具或组件。它是容器化技术的核心组件之一,用于在容器内部运行应用程序,并提供隔离…