ambari-web前端二次开发

# 简介

Ambari能够搭建、管理Hadoop集群,这是一件很酷的事情,让集群管理变的easy,但是有可能也有自己的一些需求,如果我想基于Ambari做二次开发DIY,修改一下界面,增加一些功能,添加一个模块等等;

基于2.7.4版本,做二次开发;

# ambari-web二次开发

ambari-web可以单独编译,用来修改ambari UI页面。采用ember.js(版本:v1.0.pre)作为前端MVC框架和NodeJS相关工具,用handlebars.js作为页面渲染引擎,在CSS/HTML方面还用了Bootstrap(v2.1.1)框架。

Ambari-web目录结构:

目录或文件 描述
app/ 主要应用程序代码。包括Ember中的view、templates、controllers、models、routes
brunch-config.js brunch应用程序生成器的配置文件
package.json npm包管理配置文件
test/ 测试文件
vendor/ Javascript库和样式表适用第三方库。

# 1.准备工作

  • node安装:10.x版本;
  • brunch安装;
  • npm、brunch安装地址;

# 2.安装npm依赖包

package.json中,先移除测试用例相关库;

# 切换到ambari-web目录下
cd /opt/ambari/ambari-web
npm install
1
2
3

# 3.编译源码

    "start": "brunch watch --server",
    "replaceCfg": "sed -i '' 's#^App.apiPrefix.*#App.apiPrefix = \"/api/v1\"; #g' app/config.js",
    "build": "brunch build",
    "deploy": "build && bdp deploy",
1
2
3
4

临时用脚本构建部署: npm run deploy

全局构建打包:sh build.sh

# 4.替换文件,建立软连接

注意:在/usr/lib目录下的;

cd /usr/lib/ambari-server
# 备份web目录,也可将web目录改名
sudo cp -R web web-bak
# 建立软链接 使ambari-server可以访问到我们修改编译后的代码
sudo ln -s /home/iwdp/fe-deploy/ambari-web/dist/ web 
1
2
3
4
5

# 5.重启服务

sudo ambari-server restart
1

# 6.打开浏览器,输入ip:8080访问页面。

# 部署

总体思路:

  • 对ambari-web、ambari-admin进行单独编译,利用brunch watch功能,对文件源码进行实时监控编译。
  • ambari-web/public 里存放编译完成的文件,(这里的文件目录与部署ambari后 /usr/lib/ambari-server/web 里的相同)
  • 对/usr/lib/ambari-server/web 建立软链接到public,就能实现 开发-编译-web可视化 的功能。

# 脚本自动化

#!/bin/bash
###
# @Author: samy
# @email: yessz#foxmail.com
# @time: 2021-03-11 15:59:05
 # @modAuthor: samy
 # @modTime: 2021-03-12 18:55:37
# @desc: 构建部署脚本
# Copyright © 2015~2021 BDP FE
###
# 确保脚本抛出遇到的错误
# set -e

cd ${curDir}/ambari-web
if [[ "$OSTYPE" == "darwin"* ]]; then
    sed -i "" "s#^App.apiPrefix.*#App.apiPrefix = '/api/v1'; #g" ${curDir}/ambari-web/app/config.js
else
    sed -i "s#^App.apiPrefix.*#App.apiPrefix = '/api/v1'; #g" ${curDir}/ambari-web/app/config.js
fi

echo "==wdp-web==web项目==config中的apiPrefix===替换成功===="
npm i --registry=https://registry.npm.taobao.org
npm run build
echo "==wdp-web==web项目===构建成功===="
cp -R public/* ${curDir}/${distWebDir}/
echo "==wdp-web==web项目===拷贝成功===="

cd ${curDir}/ambari-admin/main/resources/ui/admin-web/
if [ -z "$isSkipBower" ]; then
    bower install # 这一步下载估计会很慢
else
   echo "====wdp-web项目===跳过==bower install==命令==="
fi
npm i --registry=https://registry.npm.taobao.org
npm run build
echo "==wdp-web==admin项目===构建成功===="
cp -R dist/* ${curDir}/${distAdmDir}/
echo "==wdp-web==admin项目===拷贝成功===="

cd -

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

# 相关链接

上次更新: 2022/04/15, 05:41:32
×