Support Questions

Find answers, ask questions, and share your expertise

How do I automate setting up LDAP in Ambari?

avatar

I need to automate the process of setting up LDAP in ambari server. I do use EXPECT script for it. Here is my sample_backup.exp file:

#!/usr/bin/expect
spawn ambari-server setup-ldap
expect "Primary URL* {host:port} :"
send "<host>:<port>\r"
expect "Secondary URL {host:port} :"
send " \r"
expect "Use SSL* [true/false] (false):"
send "false\r"
expect "User object class* (posixAccount):"
send "person\r"
expect "User name attribute* (uid):"
send "uid\r"
expect "Group object class* (posixGroup):"
send "groupOfUniqueNames\r"
expect "Group name attribute* (cn):"
send "cn\r"
expect "Group member attribute* (memberUid):"
send "uniqueMember\r"
expect "Distinguished name attribute* (dn):"
send "dn\r"
expect "Base DN* :"
send "<base_dn>\r"
expect "Referral method [follow/ignore] :"
send "ignore\r"
expect "Bind anonymously* [true/false] (false):"
send "false\r"
expect "Manager DN* :"
send "<manager_dn>\r"
expect "Enter Manager Password* :"
send "<manager_password>\r"
expect "Re-enter password:"
send "<manager_password>\r"
expect "Save settings [y/n]"
send "y\r"
expect eof

When running the above I am getting:

[root@dkhdp251 expect_app]# expect sample_backup.exp
spawn ambari-server setup-ldap
Using python  /usr/bin/python
Setting up LDAP properties...
Primary URL* {host:port} : <host>:<port>
Secondary URL {host:port} : invalid command name "true/false"
    while executing
"true/false"
    invoked from within
"expect "Use SSL* [true/false] (false):""
    (file "sample_backup.exp" line 7)

Any ideas of what wrong is?

1 ACCEPTED SOLUTION

avatar

I have got it working now. Here it is what I have changed:

I.
FROM
expect "Use SSL* [true/false] (false):"

TO
expect "Use SSL* (false):"

II.
FROM
expect "Referral method [follow/ignore] :"

TO
expect "Referral method :"

III.
FROM
expect "Bind anonymously* [true/false] (false):"

TO
expect "Bind anonymously* (false):"

IV.
FROM
expect "Save settings [y/n]"

TO
expect "Save settings "

Now, when running the script I have this:

[root@dkhdp251 expect_app]# expect sample_new.exp 
spawn ambari-server setup-ldap 
Using python /usr/bin/python 
Setting up LDAP properties... 
Primary URL* {host:port} : <host>:<port> 
Secondary URL {host:port} : 
Use SSL* [true/false] (false): false 
User object class* (posixAccount): person 
User name attribute* (uid): uid 
Group object class* (posixGroup): groupOfUniqueNames 
Group name attribute* (cn): cn 
Group member attribute* (memberUid): uniqueMember 
Distinguished name attribute* (dn): dn 
Base DN* : <base_dn> 
Referral method [follow/ignore] : ignore 
Bind anonymously* [true/false] (false): false 
Manager DN* : <manager_dn> 
Enter Manager Password* : 
Re-enter password: 
==================== 
Review Settings 
==================== 
authentication.ldap.managerDn: <manager_dn> 
authentication.ldap.managerPassword: ***** 
Save settings [y/n] (y)? y 
Saving...done 
Ambari Server 'setup-ldap' completed successfully. 

View solution in original post

1 REPLY 1

avatar

I have got it working now. Here it is what I have changed:

I.
FROM
expect "Use SSL* [true/false] (false):"

TO
expect "Use SSL* (false):"

II.
FROM
expect "Referral method [follow/ignore] :"

TO
expect "Referral method :"

III.
FROM
expect "Bind anonymously* [true/false] (false):"

TO
expect "Bind anonymously* (false):"

IV.
FROM
expect "Save settings [y/n]"

TO
expect "Save settings "

Now, when running the script I have this:

[root@dkhdp251 expect_app]# expect sample_new.exp 
spawn ambari-server setup-ldap 
Using python /usr/bin/python 
Setting up LDAP properties... 
Primary URL* {host:port} : <host>:<port> 
Secondary URL {host:port} : 
Use SSL* [true/false] (false): false 
User object class* (posixAccount): person 
User name attribute* (uid): uid 
Group object class* (posixGroup): groupOfUniqueNames 
Group name attribute* (cn): cn 
Group member attribute* (memberUid): uniqueMember 
Distinguished name attribute* (dn): dn 
Base DN* : <base_dn> 
Referral method [follow/ignore] : ignore 
Bind anonymously* [true/false] (false): false 
Manager DN* : <manager_dn> 
Enter Manager Password* : 
Re-enter password: 
==================== 
Review Settings 
==================== 
authentication.ldap.managerDn: <manager_dn> 
authentication.ldap.managerPassword: ***** 
Save settings [y/n] (y)? y 
Saving...done 
Ambari Server 'setup-ldap' completed successfully.