Karthik Palaniappan created AMBARI-15313:
--------------------------------------------
Summary: Cannot install Ranger after deploying kerberized cluster
through cluster creation template
Key: AMBARI-15313
URL: https://issues.apache.org/jira/browse/AMBARI-15313
Project: Ambari
Issue Type: Bug
Components: ambari-server, ambari-web
Affects Versions: 2.2.0
Environment: $ uname -a
Linux VNODE0602 2.6.32-504.30.3.el6.centos.plus.x86_64 #1 SMP Wed Jul 15
00:52:19 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ java -version
java version "1.7.0_95"
OpenJDK Runtime Environment (rhel-2.6.4.0.el6_7-x86_64 u95-b00)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)
$ python --version
Python 2.6.6
This is a one node virtual cluster.
Reporter: Karthik Palaniappan
I deployed a kerberized cluster using a cluster creation template (which is an
awesome feature btw). The deploy was successful. Then, I tried to add ranger
using the wizard. I followed the instructions on this document:
https://github.com/abajwa-hw/security-workshops/blob/master/Setup-ranger-23.md
in setting up the MySQL database, executing `ambari-server setup`, etc.
Then, when hitting the "deploy" button on step 6, I got this error messsage:
{quote}
org.apache.ambari.server.controller.spi.NoSuchResourceException: The requested
resource doesn't exist: Artifact not found,
Artifacts/artifact_name=kerberos_descriptor AND Artifacts/cluster_name=Hello
{quote}
And in the javascript console:
{quote}
PUT
http://ambariserver:8080/api/v1/clusters/Hello/artifacts/kerberos_descriptor
404 (Not Found) vendor.js:127
{quote}
>From what I understand, if you use a blueprint or cluster creation template it
>is optional to specify a kerberos_descriptor. If none is specified, the stack
>default
>(http://ambariserver:8080/api/v1/clusters/Hello/artifacts/kerberos_descriptor)
>is used. However, the Ranger wizard wasn't correctly falling back to the stack
>default.
I first wasn't sure what to post to the endpoint
http://ambariserver:8080/api/v1/clusters/Hello/artifacts/kerberos_descriptor,
so I gave it an empty body, and hit a NullPointerException. Ambari should
return a much better error message.
{quote}
06 Mar 2016 20:59:08,014 ERROR [qtp-ambari-client-963] BaseManagementHandler:66
- Caught a runtime exception while attempting to create a resource: null
java.lang.NullPointerException
at
org.apache.ambari.server.controller.internal.ArtifactResourceProvider.toEntity(ArtifactResourceProvider.java:473)
...
{quote}
Then, I figured I could just copy the stack kerberos_descriptor, and POSTing
that worked.
At this point, the RANGER service was in the UNKNOWN state, and I couldn't use
the API to set it to INSTALLED. I used the API to delete RANGER, and walked
through the wizard again. This time, since I did have the kerberos_descriptor,
it worked perfectly.
So tl;dr there are three bugs here:
- The Ranger wizard does not fall back to the stack default kerberos_descriptor
- RANGER can get into an unrecoverable UNKNOWN state
- POSTing an empty body to kerberos_descriptor generates a NullPointerException
on the server, and a 500 to the client
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)