自定义 Ambari 服务的 Ambari 用户和组管理
Ambari User & Group Management for Custom Ambari Services
我使用 Custom Ambari Services 已经有一段时间了。我已经能够安装几个不同的自定义组件。我创建了多个管理包,并认为自己在使第三方服务在 Ambari 中工作方面非常有经验。
每当我安装自定义服务时,我都会收到用户 KeyError,例如 Elasticsearch:
Traceback (most recent call last):
File "/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/hook.py", line 38, in <module>
BeforeAnyHook().execute()
File "/usr/lib/ambari-agent/lib/resource_management/libraries/script/script.py", line 352, in execute
method(env)
File "/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/hook.py", line 31, in hook
setup_users()
File "/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/shared_initialization.py", line 50, in setup_users
groups = params.user_to_groups_dict[user],
KeyError: u'elasticsearch'
Error: Error: Unable to run the custom hook script ['/usr/bin/python', '/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/hook.py', 'ANY', '/var/lib/ambari-agent/data/command-15.json', '/var/lib/ambari-agent/cache/stack-hooks/before-ANY', '/var/lib/ambari-agent/data/structured-out-15.json', 'INFO', '/var/lib/ambari-agent/tmp', 'PROTOCOL_TLSv1_2', '']
已知的解决方法是执行 python 命令以关闭 user/group 管理:
python /var/lib/ambari-server/resources/scripts/configs.py -u admin -p admin -n [CLUSTER_NAME] -l [CLUSTER_FQDN] -t 8080 -a set -c cluster-env -k ignore_groupsusers_create -v true
但是,如果您想再次安装本机服务,这会使集群处于不希望的状态。如果我执行 python 命令重新打开 user/group 管理,下一个本机服务安装将再次因第三方用户密钥对象错误而失败。
是否有数据库table包含ambari管理的用户和组的列表或键值对象?解决原始错误似乎是唯一的交钥匙解决方案。
我试过自己定位键值对象,我也试过创建用户组,我什至试过修改 agent/server 执行安装的代码。接下来我会尝试更多,但我认为这可能是第一个很好的 post SO。
几个小时都遇到同样的错误,这是调查的结果。
首先,我们要知道Ambari有一个主组,用于堆栈中的所有服务。
其次,用户的创建非常隐蔽,一看就猜不到创建的时间和地点,参数从哪里来。
最后一个问题是,我们如何设置 params.user_to_groups_dict[user]
?
'main group'设置在<stack_name>/<stack_version>/configuration/cluster-env.xml
,对我来说是HDP/3.0/configuration/cluster-env.xml
:
<property>
<name>user_group</name>
<display-name>Hadoop Group</display-name>
<value>hadoop</value>
<property-type>GROUP</property-type>
<description>Hadoop user group.</description>
<value-attributes>
<type>user</type>
<overridable>false</overridable>
</value-attributes>
<on-ambari-upgrade add="true"/>
</property>
该参数将在服务中随处使用以声明该组,例如 zookeeper 有 env.xml 例如:
<property>
<name>zk_user</name>
<display-name>ZooKeeper User</display-name>
<value>sdp-zookeeper</value>
<property-type>USER</property-type>
<description>ZooKeeper User.</description>
<value-attributes>
<type>user</type>
<overridable>false</overridable>
<user-groups>
<property>
<type>cluster-env</type>
<name>user_group</name>
</property>
</user-groups>
</value-attributes>
<on-ambari-upgrade add="true"/>
</property>
value-attributes
中有一个魔法:user-groups
有一个 属性 链接到 cluster-env
到 user_group
参数。这就是我们正在寻找的联系。
答案是像zookeeper用户一样设置用户参数。
向导搜索堆栈并找到正确的 users/groups 来管理您使用向导选择的服务。
包含 params.user_to_groups_dict
的映射将在集群向导运行时创建,并在 /var/lib/ambari-agent/data/command-xy.json
:
"clusterLevelParams": {
"stack_version": "3.0",
"not_managed_hdfs_path_list": "[\"/tmp\"]",
"hooks_folder": "stack-hooks",
"stack_name": "HDP",
"group_list": "[\"sdp-hadoop\",\"users\"]",
"user_groups": "{\"httpfs\":[\"hadoop\"],\"ambari-qa\":[\"hadoop\",\"users\"],\"hdfs\":[\"hadoop\"],\"zookeeper\":[\"hadoop\"]}",
"cluster_name": "test",
"dfs_type": "HDFS",
"user_list": "[\"httpfs\",\"hdfs\",\"ambari-qa\",\"sdp-zookeeper\"]"
},
我使用 Custom Ambari Services 已经有一段时间了。我已经能够安装几个不同的自定义组件。我创建了多个管理包,并认为自己在使第三方服务在 Ambari 中工作方面非常有经验。
每当我安装自定义服务时,我都会收到用户 KeyError,例如 Elasticsearch:
Traceback (most recent call last):
File "/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/hook.py", line 38, in <module>
BeforeAnyHook().execute()
File "/usr/lib/ambari-agent/lib/resource_management/libraries/script/script.py", line 352, in execute
method(env)
File "/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/hook.py", line 31, in hook
setup_users()
File "/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/shared_initialization.py", line 50, in setup_users
groups = params.user_to_groups_dict[user],
KeyError: u'elasticsearch'
Error: Error: Unable to run the custom hook script ['/usr/bin/python', '/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/hook.py', 'ANY', '/var/lib/ambari-agent/data/command-15.json', '/var/lib/ambari-agent/cache/stack-hooks/before-ANY', '/var/lib/ambari-agent/data/structured-out-15.json', 'INFO', '/var/lib/ambari-agent/tmp', 'PROTOCOL_TLSv1_2', '']
已知的解决方法是执行 python 命令以关闭 user/group 管理:
python /var/lib/ambari-server/resources/scripts/configs.py -u admin -p admin -n [CLUSTER_NAME] -l [CLUSTER_FQDN] -t 8080 -a set -c cluster-env -k ignore_groupsusers_create -v true
但是,如果您想再次安装本机服务,这会使集群处于不希望的状态。如果我执行 python 命令重新打开 user/group 管理,下一个本机服务安装将再次因第三方用户密钥对象错误而失败。
是否有数据库table包含ambari管理的用户和组的列表或键值对象?解决原始错误似乎是唯一的交钥匙解决方案。
我试过自己定位键值对象,我也试过创建用户组,我什至试过修改 agent/server 执行安装的代码。接下来我会尝试更多,但我认为这可能是第一个很好的 post SO。
几个小时都遇到同样的错误,这是调查的结果。
首先,我们要知道Ambari有一个主组,用于堆栈中的所有服务。 其次,用户的创建非常隐蔽,一看就猜不到创建的时间和地点,参数从哪里来。
最后一个问题是,我们如何设置 params.user_to_groups_dict[user]
?
'main group'设置在<stack_name>/<stack_version>/configuration/cluster-env.xml
,对我来说是HDP/3.0/configuration/cluster-env.xml
:
<property>
<name>user_group</name>
<display-name>Hadoop Group</display-name>
<value>hadoop</value>
<property-type>GROUP</property-type>
<description>Hadoop user group.</description>
<value-attributes>
<type>user</type>
<overridable>false</overridable>
</value-attributes>
<on-ambari-upgrade add="true"/>
</property>
该参数将在服务中随处使用以声明该组,例如 zookeeper 有 env.xml 例如:
<property>
<name>zk_user</name>
<display-name>ZooKeeper User</display-name>
<value>sdp-zookeeper</value>
<property-type>USER</property-type>
<description>ZooKeeper User.</description>
<value-attributes>
<type>user</type>
<overridable>false</overridable>
<user-groups>
<property>
<type>cluster-env</type>
<name>user_group</name>
</property>
</user-groups>
</value-attributes>
<on-ambari-upgrade add="true"/>
</property>
value-attributes
中有一个魔法:user-groups
有一个 属性 链接到 cluster-env
到 user_group
参数。这就是我们正在寻找的联系。
答案是像zookeeper用户一样设置用户参数。
向导搜索堆栈并找到正确的 users/groups 来管理您使用向导选择的服务。
包含 params.user_to_groups_dict
的映射将在集群向导运行时创建,并在 /var/lib/ambari-agent/data/command-xy.json
:
"clusterLevelParams": {
"stack_version": "3.0",
"not_managed_hdfs_path_list": "[\"/tmp\"]",
"hooks_folder": "stack-hooks",
"stack_name": "HDP",
"group_list": "[\"sdp-hadoop\",\"users\"]",
"user_groups": "{\"httpfs\":[\"hadoop\"],\"ambari-qa\":[\"hadoop\",\"users\"],\"hdfs\":[\"hadoop\"],\"zookeeper\":[\"hadoop\"]}",
"cluster_name": "test",
"dfs_type": "HDFS",
"user_list": "[\"httpfs\",\"hdfs\",\"ambari-qa\",\"sdp-zookeeper\"]"
},