Ambari 集成LDAP技术方案

Ambari 集成LDAP技术方案

一、集成准备
1、TCL安装部署
wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz

tar -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.gz

tar -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 --showduplicates
 yum install -y expect[-5.45-14.el7_1].x86_64
 
 # 也可以先下载rpm包,然后安装
 yum list expect
 yum install --downloadonly --downloaddir ./  expect[-5.45-14.el7_1].x86_64
 yum 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>cn
                                                         2>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 <<EOF

set timeout 2

spawn expect -i

send "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 eof

EOF
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.sh

echo "=======================>(ambari ldap user sync)Start creating log file:"
log_date=`date +%Y-%m-%d`"_ladp_integrated_synchronization.log"
touch  ${LOG_HOME}/$log_date


echo "=======================>(ambari ldap user sync)Log file creation completed!"
echo "=======================>(ambari ldap user sync)Enable ambari integrated Ldap user synchronization program!" >> ${LOG_HOME}/$log_date

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

bash ./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、同步日志及内容(大功告成)

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值