Ambari 集成LDAP技术方案

一、集成准备

1、TCL安装部署
wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gztar -zxf tcl8.4.11-src.tar.gz
cd tcl8.4.11/unix
./configure --prefix=/usr/tcl --enable-shared
make
make install
cp tclUnixPort.h ../generic/
2、Expect安装
wget https://sourceforge.net/projects/expect/files/Expect/5.45.4/expect5.45.4.tar.gz/download --no-check-certificate -O expect5.45.4.tar.gztar -zxf expect5.45.4.tar.gz
cd expect5.45.4
./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.11/generic
make
make install
ln -s /usr/tcl/bin/expect /usr/expect/bin/expect
ln -s /usr/tcl/bin/expect /usr/bin/expect说明:由于使用Ambari自带LDAP集成插件无法做到自动化LDAP用户同步与集成,无法及时同步LDAP最新用户信息,需要依靠Except shell交互式插件是实现,且Except依赖TCL环境,也需安装TCL环境
3、简易安装
 yum list expect --showduplicatesyum install -y expect[-5.45-14.el7_1].x86_64# 也可以先下载rpm包,然后安装yum list expectyum install --downloadonly --downloaddir ./  expect[-5.45-14.el7_1].x86_64yum install -y ./*.rpm
4、验证与使用
安装后,可以使用expect命令进行验证,出现except1.1的交互窗口说明安装成功

常见指令:
spawn:交互程序开始后面跟命令或者指定程序(在壳内启动这个进程)
expect:获取匹配信息匹配成功则执行expect后面的程序动作(检测由壳内进程发出的特定交互指令反馈字符串后向下执行)
send:用于向进程发送字符串(从壳外向壳内进程发送一条字符串,换行符为确认结束)
interact:允许用户交互
exp_continue:在expect中多次匹配就需要用到
send_user:用来打印输出 相当于shell中的echo
exit:退出expect脚本
eof:expect执行结束 退出
set:定义变量
puts:输出变量
set timeout:设置超时时间

二、Ldap服务构建

1、LDAP简介
LDAP是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)。简单理解可以把LDAP看作是一个树形结构的数据库,通常用于实现账号的统一管理。
2、LDAP常用名词
名词 含义
DN(distinguished name) 专用名称唯一标识,相当于数据库中的主键.通常有两种组织形式:基于cn,cn+ou+dc;基于uid,uid+ou+dc.
RDN(relative) 相对标识名称,通过RDN和父条目连在一起构成DN
CN(common name) 公共名称
OU(organizational unit) 组织对象,可以包括组织,具体的人等.容器条目,下面包含真正的用户条目
DC(domain component) 域名,例如amabri.com 表示就是"dc=ambari,dc=com"
uid(user id) 用户id,用来标识用户
c(country) 国家,一个两位的国家代码
SN(sur name) 姓氏
giveName() 名字
3、容器化部署ldap服务
# 创建data和conf目录给ldap容器挂载
mkdir -p /data/ldap/{data,conf}
#拉取ldap容器
docker pull osixia/openldap
#启动容器
#LDAP_ORGANISATTON 工作空间名称
#LDAP_ADMIN_PASSWORD admin用户的密码
#LDAP_TLS_VERIFY_CLIENT 不开启TLS
docker run -d -p 389:389 -p 636:636 \
--name 172.22.16.30 \
--env LDAP_TLS_VERIFY_CLIENT="never" \
--env LDAP_ORGANISATTON="admin" \
--env LDAP_DOMAIN="amabri.com" \
--env LDAP_ADMIN_PASSWORD="123456" \
-v /data/ldap/data:/var/lib/ldap \
-v /data/ldap/conf:/etc/ldap/slapd.d \
--detach osixia/openldap
4、安装phpLDAPadmin LDAP管理服务
#拉取镜像
docker pull osixia/phpldapadmin
# 运行镜像
docker run \
-d \
--privileged \
-p 808:80 \
--name phpldapadmin \
--env PHPLDAPADMIN_HTTPS=false \
--env PHPLDAPADMIN_LDAP_HOSTS=172.22.16.30 \
--detach osixia/phpldapadmin
5、检查安装是否成功

三、Ambari LDAP集成自带插件配置

1、运行ambari-server --ldap-setup命令进入Amabri LDAP配置界面配置LDAP信息
Using python  /usr/bin/python
Setting up LDAP properties...
Primary URL* {host:port} (172.22.16.30:389):         -->设置主域LDAP服务映射地址
Secondary URL {host:port} (172.22.16.30:389):        -->设置次域、备用域服务映射地址
Use SSL* [true/false] (false):                        -->设置SSL登录验证
User object class* (user):                            -->代表在LDAP用户对象中对用户分类的名字
User name attribute* (cn):                -->当载入用户名的时候使用的属性字段:1>cn2>sAMAccountName
Group object class* (groupOfNames):                   -->代表在LDAP用户组对象中使用的类的名称
Group name attribute* (cn):                           -->设置用户组名
Group member attribute* (member):                     -->定义用于包含LDAP中的组成员的属性名称
Distinguished name attribute* (dn):                   -->设置可以分辨属性
Base DN* (dc=ambari,dc=com):                        -->定义授权Ldap 账户的base dn条目路径
Referral method [follow/ignore] (follow):             -->推荐方法设置
Bind anonymously* [true/false] (false):               -->匿名绑定
Handling behavior for username collisions [convert/skip] for LDAP sync* (convert): --设置用户名相同冲突解决方式Manager DN* (cn=admin,dc=ambari,dc=com): --设置管理员(授权LDAP)账户DN条目路径
Enter Manager Password* :                             --配置管理员(授权LDAP)账户的DN条目密码
Password cannot be blank.
Enter Manager Password* :
备注:输入密码,保存后出现successfully,即配置完成,配置完成后需要重启ambari服务

友情提示:
1、配置错误导致同步失败,有可能会导致amabri 所有用户变成LDAP用户,包括admin账户,
变成LDAP账户后,管理员账户将无法登录,修复方法则是通过更改ambari 元数据中admin的
用户权限,修改后登录会出现闪卡的情况,需要等待闪卡结束,闪卡失败1000多次后,会出现
错乱界面,立即进入之后,快速创建一个管理员账户,即可解决当前问题2、建议再进行LDAP配置之前,备份amabri配置文件,以及额外创建一个管理员用户,同步失
败篡改管理员权限的问题,并不会影响修改手动创建的管理员账户,只会修改默认的管理员账户

四、自动化集成同步

1、自动化脚本及目录介绍

cron_sync_job.sh: 负责定时任务。设置及自动化同步过程的日志管理
ldap_sync.sh    : 负责解析users.txt文件中的用户,进行用户同步
sync_shell.sh   : 负责与ambari自动化交互,进行用户数据同步
init.sh         : 配置文件,包含日志目录,用户文件路径等等配置
log             : 日志目录,主要用于保存同步过程中的日志
install         : 安装目录,所依赖的插件均保存在这个目录下
package         : 主要存放依赖及插件的安装包
groups.txt      : 用于配置用户组LDAP用户同步文件
users.txt       : LDAP多用户同步配置文件
user.txt        : LDAP单用户同步配置文件
2、单个用户同步
1>进入init.sh配置文件,修改以下内容:
SYNC_USERS=./users.txt 为 SYNC_USERS=./user.txt

2>修改完成后,可以在user.txt单用户配置文件中配置要同步的用户

3>配置完成后再运行ldap_sync.sh脚本,进行LDAP用户同步

4>登录ambari用户管理界面查看用户同步情况

5>进入ambari元数据库查看LDAP用户同步情况

3、多用户同步
1>多用户的LDAP同步与单用户同步类似:
进入init.sh配置文件,修改以下内容:
SYNC_USERS=./user.txt 为 SYNC_USERS=./users.txt

2>修改配置文件后,进入users.txt,配置要同步的用户,每个用户占一行

3>用户配置完成后,再运行ldap_sync.sh脚本,进行LDAP用户同步

4>使用管理员账户登录ambari进行查看同步情况

5>进入ambari元数据库,查询users表,检查同步情况

五、自动化集成定制脚本介绍

友情提示:以下内容为自主开发功能,非Ambari LDAP插件所有,广大开发者可根据自身情况
使用与更改
1、自动化交互脚本
脚本作用:用于接收user.txt单用户文件中的用户与amabri 自带ldap插件交互
脚本名称:sync_shell.sh
脚本内容:
#Load initialization profile
source ./init.sh#Perform automatic interactive LDAP integration user synchronization/usr/bin/expect <<EOFset timeout 2spawn expect -isend "ambari-server sync-ldap --user=${LDAP_USERS}\r"expect "Enter Ambari Admin login:"send "wing\r"expect "Enter Ambari Admin password:"send "123456\r"expect "Ambari Server 'sync-ldap' completed successfully"#send "\003"expect eofEOF
2、用户文件解析脚本
脚本作用:用于接收users.txt多用户配置文件的用户传寄给交互脚本(sync_shell.sh)
脚本名称: ldap_sync.sh
脚本内容:
#!/bin/bash#Get basic variables
source ./init.sh#LDAP User Synchronization Core Method
function users_action(){param1=${1}
echo ${param1[*]} > ${LDAP_USERS}
echo ${LDAP_USERS}
bash ./sync_shell.sh
}#Ambari integrated ldap user file parsing method
function  for_in_file(){for  i  in  `cat $SYNC_USERS`
do
users_action $i
true > ./user.txt
done
}#Amabri integration, ldap user integration and synchronization
for_in_file
3、定时任务日志脚本
脚本作用:用户定时更新同步LDAP用户并生成详细同步日志
脚本名称:cron_sync_job.sh
脚本内容:
#Build ldap user synchronization log
#Switch to the synchronization directory
cd  /etc/ambari-server/ldap #Introducing initialization configuration variables
source ./init.shecho "=======================>(ambari ldap user sync)Start creating log file:"
log_date=`date +%Y-%m-%d`"_ladp_integrated_synchronization.log"
touch  ${LOG_HOME}/$log_dateecho "=======================>(ambari ldap user sync)Log file creation completed!"
echo "=======================>(ambari ldap user sync)Enable ambari integrated Ldap user synchronization program!" >> ${LOG_HOME}/$log_datestart_date=$(date +%Y%m%d' '%H:%M:%S)echo "=======================>(ambari ldap user sync)The start time of this ambari ldap user synchronization:${start_date}" >> ${LOG_HOME}/$log_datebash ./ldap_sync.sh >> ${LOG_HOME}/$log_date
end_date=$(date +%Y%m%d' '%H:%M:%S)#Statistics on synchronization time of ldap users
time_difference=$(($(date +%s -d "${end_date}")-$(date +%s -d "${start_date}")))echo "=======================>(ambari ldap user sync)The ambari ldap user synchronization is completed this time:${end_date}" >> ${LOG_HOME}/$log_date
echo "=======================>(ambari ldap user sync)The total time spent for this ambari ldap user synchronization:${time_difference}s" >> ${LOG_HOME}/$log_date
4、配置文件
脚本作用:配置常规变量让所有子脚本赋予
脚本名称:init.sh
脚本内容:
#!/bin/bash#Amabri Integration Ldap Initialization Configuration Variables
SYNC_USERS=./users.txt
LDAP_USERS=./user.txt
LOG_HOME=/etc/ambari-server/ldap/log
5、同步日志及内容(大功告成)

Ambari 集成LDAP技术方案相关推荐

  1. 可独立部署的CA系统技术方案

    源自:http://www.eetrust.com/products/wall_project15.htm CA系统技术方案 一:需求 1 :总体描述 •  系统名称 CA 证书安全认证系统 •  系 ...

  2. 面向集团客户云计算运营平台的运营开通技术方案及应用架构——之云计算运营平台方案(三)

    续:面向集团客户的云计算运营平台概述--之云计算运营平台方案(一) http://blog.csdn.net/xiaoyw71/article/details/17113347 续:面向集团客户云计算 ...

  3. 毫米波雷达分类和技术方案

    毫米波雷达分类和技术方案 一.什么是毫米波? 毫米波是一项可用于检测物体并提供物体的距离.速度和角度信息的传感技术.这是一项非接触式技术,工作频谱范围为 30GHz 至 300GHz.由于该技术使用较 ...

  4. vivo不小心把内部自研技术方案写进了“年终总结”,我看了直接好家伙

    杨净 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 自研专业影像芯片V1,可1秒内处理30张与普通手机像素相同的照片,搭载该芯片的品牌,在第三季度成为4000+以上高端市场份额TOP 3 ...

  5. 腾讯云快直播——超低延迟直播技术方案及应用

    正文字数:4361  阅读时长:7分钟 随着直播业务的发展,在线教育,连麦直播.赛事直播等高实时性直播场景的出现,用户对于直播流畅度.低延迟等性能的要求愈加严苛.腾讯云直播技术高级工程师陈华成 从5G ...

  6. 搭建视频网站的技术方案

    一.视频网站和普通网站的区别 搭建视频网站和搭建普通网站,在技术实现方案上有很大的差别,因此,当有人问我是否可以采用搭建普通网站的方法搭建视频网站时,我会明确的告诉他们不可以,否者就贻笑大方了. 视频 ...

  7. 室内定位技术方案---Wifi、RFID、bluetooth、Zigbee

    室内定位技术方案 一.室内定位系统原理 国内常规定位技术有Wifi定位.RFID定位.蓝牙定位.Zigbee定位等几种方式,这几种定位方式有什么不同,各有什么利弊,下面我们将详细分析这几种定位原理.优 ...

  8. ElasticSearch技术方案(二)——站内搜索

    文章目录 背景 ES实现站内搜索 ES实现站内搜索 流程图 站内搜索实现分析 SpringBoot整合SpringData ElasticSearch 1. 引入依赖: 2.配置application ...

  9. Java生鲜电商平台-技术方案与文档下载

    Java生鲜电商平台-技术方案与文档下载 说明:任何一个好的项目,都应该有好的文档与设计方案,包括需求文档,概要设计,详细设计,测试用例,验收报告等等,类似下面这个图: 有以下几个管理域: 1. 开发 ...

最新文章

  1. Centos 6.4下MySQL备份及还原详情介绍
  2. golang sql查询获取结果集个数
  3. Docker cgroups作用(十)
  4. java继承中构造方法_java之继承中构造方法总结(文字版)
  5. ArcGIS实验教程——实验十:矢量数据投影变换
  6. nginx ngx_http_proxy_module(反向代理)
  7. R-CNN,Fast R-CNN,Faster R-CNN原理及执行与训练的实例+实现自己的目标检测(转)
  8. play home tifa_144Hz OLED屏手机 努比亚Play喜提Android 11_手机通讯
  9. 《自己动手写操作系统 》第九章 一 简易硬盘驱动的实现
  10. Docker的镜像操作命令
  11. visio一分二的箭头_visio软件双箭头连接线怎么画?
  12. SIM900A 通过RS232串口进行短信的发送。
  13. Linux虚拟机快速搭建RabbitMQ(解压版)完整流程(简单明了、不亲测能写这么多)
  14. 一文带你彻底了解 Java 异步编程
  15. C++笔记-1-c与c++基础区别
  16. 计算机屏幕的显示分辨率与什么有关,事实:显示器屏幕尺寸和分辨率之间是什么关系?...
  17. EXCEL基本功能 --- 三种常用的查找与引用函数
  18. 立创商城的元件原理图怎么弄到ad_立创EDA元件封装导入AD软件教程
  19. photoshop旋转图片
  20. 补码原理——负数为什么要用补码表示

热门文章

  1. oracle数据库实现汇总报表的方法
  2. 策测解金:黄金突破箱体,别错过回调就是多
  3. 多线程模拟实现百米赛跑
  4. TS之自动编译和项目编译
  5. Oracle 常用字符函数
  6. plotly可视化绘制双坐标轴图
  7. MATLAB微分方程学习总结
  8. ASP.NET Identity 三(转载)
  9. Win10微软输入法自定义短语导入
  10. 写项目立项报告的总结