# Ranger命令行安装
如果您希望使用命令行的方式部署Ranger,请按照本章节步骤安装。
## 前提
在开始前,请配置yum源,安装lava命令行管理工具,还应检查是否有所需的Python和Java环境。
首先用`root`用户登录到`ranger1`
```shell
ssh root@ranger1
```
从yum源所在机器`host1`获取repo文件
```shell
sudo scp root@host1:/etc/yum.repos.d/oushu.repo /etc/yum.repos.d/oushu.repo
```
追加yum源所在机器信息到/etc/hosts文件
安装lava命令行管理工具
```shell
sudo yum clean all
sudo yum makecache
sudo yum install lava
```
检查`Python2`环境,执行下述命令能看到Python的对应版本,期望版本为2.x,已验证版本为2.7.5
```shell
python
```
检查`Java`环境,执行下述命令能看到Java的对应版本,期望版本为1.7以上,已验证版本为1.8.0_332
```shell
java -version
```
Ranger Admin的安装需要依赖外部数据库做元数据存储,推荐使用Skylab平台本身的Postgres数据库,同时还需要对应的数据库驱动,可以通过yum安装`lavalib`获取Postgres数据库连接驱动,放到所需位置,如当前例子放在`/usr/share/java`目录下。
```shell
# 通过yum源安装lavalib
sudo yum install lavalib
# 将驱动放到所需目录
sudo mv /usr/local/oushu/lavalib/postgresql-42.2.8.jar /usr/share/java/postgresql-42.2.8.jar
```
###### Kerberos认证依赖(可选)
若开启Kerberos认证,Kerberos安装部署请参考:[Kerberos 安装](../kerberos/installation-kerberos.rst)。
Kerberos 服务地址假定为`kdc1`,登录到kdc1机器上
```shell
ssh kdc1
mkdir -p /etc/security/keytabs
```
创建Ranger Admin和Ranger UserSync相关服务主体,生成的密钥rangeradmin.keytab和rangerusersync.keytab。
> 注意:这里对应的hostname不管大小写,都需要用小写。
```shell
kadmin.local
addprinc -randkey HTTP/ranger1@OUSHU.COM
addprinc -randkey rangeradmin/ranger1@OUSHU.COM
addprinc -randkey rangerlookup/ranger1@OUSHU.COM
ktadd -norandkey -k /etc/security/keytabs/rangeradmin.keytab HTTP/ranger1@OUSHU.COM
ktadd -norandkey -k /etc/security/keytabs/rangeradmin.keytab rangeradmin/ranger1@OUSHU.COM
ktadd -norandkey -k /etc/security/keytabs/rangeradmin.keytab rangerlookup/ranger1@OUSHU.COM
addprinc -randkey rangerusersync/ranger1@OUSHU.COM
ktadd -norandkey -k /etc/security/keytabs/rangerusersync.keytab rangerusersync/ranger1@OUSHU.COM
exit
```
`ranger1`上需要一个开启kerberos功能的`core-site.xml`文件,我们创建在`/usr/local/oushu/conf/ranger`目录下
```shell
ssh root@ranger1
mkdir -p /usr/local/oushu/conf/ranger
touch /usr/local/oushu/conf/ranger/core-site.xml
```
`core-site.xml`文件内至少包含如下两项:
```xml
hadoop.security.auth_to_local
DEFAULT
hadoop.security.authentication
kerberos
```
## 安装
### Ranger Admin安装
```shell
# 使用yum源进行安装
sudo yum install -y ranger-admin-2.3.0-1.noarch
```
### Ranger UserSync安装
```shell
# 使用yum源进行安装
sudo yum install -y ranger-usersync-2.3.0-1.noarch
```
## 配置
### Ranger Admin配置
修改在`/usr/local/oushu/ranger-admin_2.3.0`目录下的`install.properties`文件初始化配置
```shell
sudo vi /usr/local/oushu/ranger-admin_2.3.0/install.properties
```
在`install.properties`文件末尾追加如下配置:
```shell
PYTHON_COMMAND_INVOKER=python2
DB_FLAVOR=POSTGRES
SQL_CONNECTOR_JAR=/usr/share/java/postgresql-42.2.8.jar
db_root_user=rangerUser
db_root_password=Ran5ger@DB
db_host=localhost:4432
db_name=ranger
db_user=rangerUser
db_password=Ran5ger@DB
audit_store=
policymgr_external_url=http://ranger1:6080
rangerAdmin_password=ranger1@China
rangerUsersync_password=ranger1@China
rangerTagsync_password=ranger1@China
keyadmin_password=ranger1@China
cred_keystore_filename=
```
| 配置名 | 配置描述 |
| ----------------------- | ---------------------------------------------------------------- |
| PYTHON_COMMAND_INVOKER | 指明使用的Python版本 |
| DB_FLAVOR | 指明使用数据库类型,可以是MYSQL\|ORACLE\|POSTGRES\|MSSQL\|SQLA,这里推荐使用POSTGRES |
| SQL_CONNECTOR_JAR | 数据库连接驱动所在位置 |
| db_root_user | 数据库root用户名,推荐按组件使用不同的数据库用户进行管理 |
| db_root_password | 数据库root用户密码 |
| db_host | 数据库主机、端口 |
| db_name | ranger连接的数据库,该库如果不存在需要自行创建 |
| db_user | 管理该数据库用户,推荐按组件使用不同的数据库用户进行管理 |
| db_password | 管理该数据库用户密码 |
| audit_store | 审计日志, 如果没有安装solr,对应的属性值为空即可 |
| policymgr_external_url | 策略管理配置,配置ip和端口,开启kerberos时不能使用localhost |
| rangerAdmin_password | Ranger Admin密码配置。默认为空,可以不配,不配时密码为admin |
| rangerUsersync_password | Ranger Usersync密码配置。默认为空,可以不配,对应的内部组件该属性也要为空 |
| rangerTagsync_password | Ranger Tagsync密码配置,此密码暂无实际作用 |
| keyadmin_password | Ranger KMS密码配置,此密码暂无实际作用 |
| cred_keystore_filename | Ranger Admin的密码库文件路径,可暂时为空 |
> 注意:rangerAdmin_password、rangerUsersync_password、rangerTagsync_password和keyadmin_password的值,
> 要么全部为空会全部使用对应的默认密码,要么应该全部自定义填写对应的密码,且密码大于8位字符包含大小写字母、数字和特殊字符,
> 否则自定义填写的密码并不会生效。
###### Kerberos配置(可选)
继续在`install.properties`文件末尾追加如下配置:
```shell
spnego_principal=HTTP/ranger1@OUSHU.COM
spnego_keytab=/etc/security/keytabs/rangeradmin.keytab
admin_principal=rangeradmin/ranger1@OUSHU.COM
admin_keytab=/etc/security/keytabs/rangeradmin.keytab
lookup_principal=rangerlookup/ranger1@OUSHU.COM
lookup_keytab=/etc/security/keytabs/rangeradmin.keytab
hadoop_conf=/usr/local/oushu/conf/ranger
```
| 配置名 | 配置描述 |
| ---------------- | --------------------------------------------- |
| spnego_principal | Ranger Admin对外提供HTTP服务的kerberos服务主体 |
| spnego_keytab | Ranger Admin对外提供HTTP服务的kerberos服务主体的密钥 |
| admin_principal | Ranger Admin作为Server端鉴权的kerberos服务主体 |
| admin_keytab | Ranger Admin作为Server端鉴权的kerberos服务主体的密钥 |
| lookup_principal | Ranger Admin作为Client端进行连接组件测试的kerberos服务主体 |
| lookup_keytab | Ranger Admin作为Client端进行连接组件测试的kerberos服务主体的密钥 |
| hadoop_conf | 开启kerberos功能的`core-site.xml`文件所在目录 |
### Ranger UserSync配置
修改在`/usr/local/oushu/ranger-usersync_2.3.0`目录下的`install.properties`文件初始化配置
```shell
sudo vi /usr/local/oushu/ranger-usersync_2.3.0/install.properties
```
在`install.properties`文件末尾追加如下配置:
###### 1)同步unix用户
```shell
POLICY_MGR_URL = http://ranger1:6080
SYNC_INTERVAL = 1
logdir=logs
SYNC_SOURCE = unix
unix_user=usersync
unix_group=usersync
rangerUsersync_password=ranger1@China
```
| 配置名 | 配置描述 |
| ----------------------- | --------------------------------------------------------------------------------------- |
| POLICY_MGR_URL | 配置Ranger Admin的访问地址,开启kerberos时不能使用localhost |
| SYNC_INTERVAL | 同步间隔时间,同步unix时最小间隔为1分钟 |
| logdir | 配置usersync的log路径 |
| SYNC_SOURCE | 同步源系统类型 |
| unix_user | usersync程序运行的用户 |
| unix_group | usersync程序运行的用户组 |
| rangerUsersync_password | Ranger Usersync用户的密码,此密码应与Ranger Admin中`install.properties`的`rangerUsersync_password`相同 |
###### 2)同步ldap用户
```shell
POLICY_MGR_URL = http://ranger1:6080
SYNC_INTERVAL = 1
logdir=logs
SYNC_SOURCE = ldap
SYNC_LDAP_URL=ldap://localhost:389
SYNC_LDAP_BIND_DN=cn=admin,dc=example,dc=com
SYNC_LDAP_BIND_PASSWORD=Ran5ger@LDAP
SYNC_LDAP_SEARCH_BASE=ou=People,dc=example,dc=com
rangerUsersync_password=ranger1@China
```
| 配置名 | 配置描述 |
| ----------------------- | --------------------------------------------------------------------------------------- |
| POLICY_MGR_URL | 配置Ranger Admin的访问地址,开启kerberos时不能使用localhost |
| SYNC_INTERVAL | 同步间隔时间,同步LDAP时最小间隔为1小时 |
| logdir | 配置usersync的log路径 |
| SYNC_SOURCE | 同步源系统类型 |
| SYNC_LDAP_URL | LDAP服务的地址 |
| SYNC_LDAP_BIND_DN | 连接LDAP进行用户和用户组查询的DN |
| SYNC_LDAP_BIND_PASSWORD | 用于连接LDAP的DN对应的密码 |
| SYNC_LDAP_SEARCH_BASE | LDAP中用户和用户组的搜索域 |
| rangerUsersync_password | Ranger Usersync用户的密码,此密码应与Ranger Admin中`install.properties`的`rangerUsersync_password`相同 |
###### Kerberos配置(可选)
继续在`install.properties`文件末尾追加如下配置:
```shell
usersync_principal=rangerusersync/ranger1@OUSHU.COM
usersync_keytab=/etc/security/keytabs/rangerusersync.keytab
hadoop_conf=/usr/local/oushu/conf/ranger
```
| 配置名 | 配置描述 |
| ------------------ | ---------------------------------- |
| usersync_principal | Ranger Usersync的kerberos服务主体 |
| usersync_keytab | Ranger Usersync的kerberos服务主体的密钥 |
| hadoop_conf | 开启kerberos功能的`core-site.xml`文件所在目录 |
## 启动
### Ranger Admin启动
##### 1.执行初始化操作
```shell
cd /usr/local/oushu/ranger-admin_2.3.0/
sudo su root -c "export JAVA_HOME=$(java -XshowSettings:properties -version 2>&1 | sed -nE 's|.*java.home = (.*)|\1|p');./setup.sh"
```
初始化结果如下则成功:
```shell
2022-11-03 15:07:37,458 [I] Checking connection passed.
2022-11-03 15:07:37,458 [I] RANGER_ADMIN_ENV_PATH : /usr/local/oushu/ranger-admin_2.3.0
2022-11-03 15:07:37,458 [I] env_file_path : /usr/local/oushu/ranger-admin_2.3.0/ranger-admin-env*.sh
Installation of Ranger PolicyManager Web Application is completed.
```
##### 2.修改配置文件
配置存储在`/usr/local/oushu/ranger-admin_2.3.0/conf`目录下的`ranger-admin-site.xml`文件
```shell
# 编辑
sudo vi /usr/local/oushu/ranger-admin_2.3.0/conf/ranger-admin-site.xml
```
如无特殊需求,初始化之后配置无需改动即可启动
##### 3.启动进程
```shell
sudo ranger-admin start
```
或者
```shell
sudo /usr/local/oushu/ranger-admin_2.3.0/ews/ranger-admin-services.sh start
```
运行结果如下则成功:
```shell
[root@ranger1 ranger-admin_2.3.0]$ sudo ranger-admin start
Starting Apache Ranger Admin Service
Apache Ranger Admin Service with pid 14240 has started.
```
### Ranger UserSync启动
##### 1.执行初始化操作
```shell
cd /usr/local/oushu/ranger-usersync_2.3.0/
sudo su root -c "export JAVA_HOME=$(java -XshowSettings:properties -version 2>&1 | sed -nE 's|.*java.home = (.*)|\1|p');./setup.sh"
```
##### 2.修改配置文件
配置存储在`/usr/local/oushu/ranger-usersync_2.3.0/conf`目录下的`ranger-ugsync-site.xml`文件
```shell
# 编辑
sudo vi /usr/local/oushu/ranger-usersync_2.3.0/conf/ranger-ugsync-site.xml
```
需要修改`ranger.usersync.enabled`为`true`才能使同步生效
```shell
ranger.usersync.enabled
true
```
##### 3.启动进程
```shell
sudo ranger-usersync start
```
或者
```shell
sudo /usr/local/oushu/ranger-usersync_2.3.0/ranger-usersync-services.sh start
```
运行结果如下则成功:
```shell
[root@ranger1 ranger-usersync_2.3.0]$ sudo ranger-usersync start
Starting Apache Ranger Usersync Service
Apache Ranger Usersync Service with pid 6026 has started.
```
## 检查状态
### Ranger Admin检查
1.登录机器ranger1,通过`Jps`查看进程,看到`EmbeddedServer`进程即为Ranger Admin在启动中
```shell
[root@ranger1 ~]$ sudo jps
14240 EmbeddedServer
28974 Jps
```
2.根据`install.properties`配置中`policymgr_external_url`访问Web UI界面,本例中访问地址为`http://192.168.1.11:6080`,
默认账号为`admin`,密码根据`install.properties`配置中`rangerAdmin_password`获得。

### 修改Ranger Admin初始密码
登录Ranger Admin之后,需要把admin用户的密码改成安全性较强的密码,要求包含有大小写字母、数字、特殊字符的8位以上的密码,比如Ad4min@Ranger。
进入ranger页面后,我们可以到Settings > Users/Groups/Roles > User 页面查看用户详情。

在用户详情中的`Change Password`标签,输入新密码与确认密码,点击确定即可。

### Ranger UserSync检查
1.登录机器ranger1,通过`Jps`查看进程,看到`UnixAuthenticationService`进程即为Ranger UserSync在启动中
```shell
[root@ranger1 ranger-usersync_2.3.0]$ sudo jps
14240 EmbeddedServer
7432 Jps
6026 UnixAuthenticationService
```
2.访问Web UI界面,本例中访问地址为`http://192.168.1.11:6080`,点击Audit可以在`Login Sessions`内看到`rangerusersync`的登录信息,在`User Sync`内看到`rangerusersync`用户的信息同步情况,如下图所示:


## 常用命令
### Ranger Admin命令
首先用`root`用户登录到`ranger1`
```shell
ssh root@ranger1
```
- 启动
```shell
sudo ranger-admin start
```
- 停止
```shell
sudo ranger-admin stop
```
- 重启
```shell
sudo ranger-admin restart
```
### Ranger UserSync命令
首先用`root`用户登录到`ranger1`
```shell
ssh root@ranger1
```
- 启动
```shell
sudo ranger-usersync start
```
- 停止
```shell
sudo ranger-usersync stop
```
- 重启
```shell
sudo ranger-usersync restart
```
## 注册到Skylab(可选)
需要将安装Ranger的机器通过机器管理添加到Skylab中,如果您尚未添加,请参考[注册机器](../start/install-lava.md)。
在`ranger1`节点修改`/usr/local/oushu/lava/conf`目录下的`server.json`文件,替换localhost为Skylab的服务器IP,具体Skylab的基础服务lava安装步骤请参考:[lava安装](../start/start-installation.rst)。
```json
{
"server": "localhost:1612",
"admin": "localhost:1652"
}
```
创建一个request文件,包含ranger cluster信息:
```shell
touch ~/ranger-register.json
```
编辑json文件内容如下:
```json
{
"data": {
"name": "rangerserver",
"group_roles": [
{
"role": "ranger.admin",
"cluster_name": "rangeradmin",
"group_name": "rangeradmin",
"machines": [
{
"id": 1,
"name": "ranger1",
"subnet": "lava",
"data_ip": "192.168.1.11",
"manage_ip": "192.168.1.11",
"assist_port": 1622,
"ssh_port": 22
}
]
},
{
"role": "ranger.usersync",
"cluster_name": "rangerusersync",
"group_name": "rangerusersync",
"machines": [
{
"id": 1,
"name": "ranger1",
"subnet": "lava",
"data_ip": "192.168.1.11",
"manage_ip": "192.168.1.11",
"assist_port": 1622,
"ssh_port": 22
}
]
}
]
}
}
```
配置文件说明,整个json分为3部分:
- 第一部分name,为集群名称,个性化填写。
- 第二部分为group_roles,对于Ranger为2个角色,`ranger.admin`和`ranger.usersync`,不可修改。
- 第三部分,为每个角色添加机器,需要添加的机器信息可以通过下面的方式获得。
在平台基础组件lava所安装的机器执行(端口和用户名按照lava配置修改):
```shell
psql lavaadmin -p 4432 -U oushu -c "select m.id,m.name,s.name as subnet,m.private_ip as data_ip,m.public_ip as manage_ip,m.assist_port,m.ssh_port from machine as m,subnet as s where m.subnet_id=s.id;"
```
获取到所需的机器信息,根据服务角色对应的节点,将机器信息添加到machines数组中。
在`ranger1`节点调用lava命令注册集群:
```shell
lava login -u oushu -p Oushu6@China -T {租户id}
lava onprem-register service -s Ranger -f ~/ranger-register.json
```
如果返回值为:
```shell
Add service by self success
```
则表示注册成功,如果有错误信息,请根据错误信息处理。
从页面登录后,在自动部署模块对应服务中可以查看到新添加的集群,同时列表中会实时监控ranger进程在机器上的状态。
