나는 Ambari를 설치하고 API를 통해 청사진을 사용하는 등의 클러스터 설치 및 프로비저닝을 자동화하고 있습니다. 이것은 모두 정상적으로 작동하지만, 문제가되는 또 하나의 문제가 있습니다. 전반적인 프로비저닝 프로세스 중에 Ambari 암호를 변경하고 있습니다. (Ambari 클러스터 작성 프로세스가 아니라 여기에 내 프로세스를 언급하고 있습니다.) 내가 원하지 않는 것은 새롭게 프로비저닝 된 Ambari 설치를 기본 "admin/admin"자격 증명과 함께 앉아서 설치하는 것입니다. 또한 매번이 작업을 변경할 사람을 가질 수 없습니다.Ambari 관리자 암호를 프로그래밍 방식으로 변경하는 방법
REST API를 사용해 보았지만 호출이 올바르게 실행 된 것처럼 (예 : 오류가 반환되지 않음에도) 새 암호가 적용되지 않습니다.
ssh를 통해 ambari-admin-password-reset 명령을 사용하려고 생각했지만 내 Ambari 설치 (2.1.0 사용)에는 해당 명령이없는 것 같습니다. 저는 에이전트가 실행 중임을 두 번 확인했는데 루트 사용자로 시도했습니다. 그리고 모든 경우에 "명령을 찾을 수 없습니다"라는 오류가 발생합니다.
나는 또한 JDBC를 사용하여 Postgres에 직접 연결하고 암호를 직접 조작한다고 생각했지만 Ambari가 사용하는 해시 알고리즘과 소금을 저장하는 위치를 잘 모르겠습니다.
누구나 이러한 접근 방식 중 일부 또는 전부를 작동시키는 방법에 대한 조언을 제공 할 수 있다면 크게 감사하겠습니다. 지금 나는 이것으로 싸우는 나의 마지막 머리를 찢어 버리고있다.
편집 : FWIW, 자동 응답에 실패한 REST API에 대한 호출로 수행중인 작업은 다음과 같습니다. 이렇게
public static void main(String[] args)
{
// make REST call to Ambari to change password
try (CloseableHttpClient httpClient = HttpClientBuilder.create().build())
{
HttpHost target = new HttpHost("admin.test-cluster-6.example.com", 8080, "http");
String authorizationEncoded = Base64.encodeBase64String("admin:admin".getBytes());
// specify the put request
HttpPut putRequest = new HttpPut("/api/v1/users/admin");
StringEntity jsonEntity = new StringEntity("{\"Users/password\":\"newpassword\"}");
putRequest.setEntity(jsonEntity);
putRequest.setHeader("X-Requested-By:", "ambari");
putRequest.setHeader("Authorization", "Basic " + authorizationEncoded);
System.out.println("executing request to " + target);
HttpResponse httpResponse = httpClient.execute(target, putRequest);
HttpEntity entity = httpResponse.getEntity();
System.out.println("status: " + httpResponse.getStatusLine());
InputStream is = entity.getContent();
String responseBody = streamToString(is);
System.out.println("response: " + responseBody);
}
catch (IOException e)
{
e.printStackTrace();
}
System.out.println("done");
}
이 작업이 성공 믿고 하나가 될 것이다 출력
status: HTTP/1.1 200 OK
를 얻을 수 있습니다. 그러나 주사위는 없습니다.
또한 Ambari 2.1.0이며 변경하려고하는 사용자의 암호와 관계없이 동일한 동작이 발생합니다.