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
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
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
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
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