Machine_join#

Introduction#

The ipa-join command is used to join a machine to the IPA realm. What this does is:

  • Create a host entry if one does not exist

  • Create a host/ service principal within the host entry

  • Retrieve a keytab

Setup#

ipa-join is not currently integrated into ipa-client-install. ipa-client-install must be run prior to running ipa-join.

Information used by ipa-join such as the server to connect to is found in /etc/ipa/default.

The CA certificate used, if needed, is in /etc/ipa/ca.crt and is retrieved by the IPA client installer.

Options#

  • -h hostname: set the FQDN of this host. This is normally the nodename value of uname (2)

  • -k keytab: the location of the keytab to write. The default is /etc/krb5.keytab

  • -w bindpw: the one-time password to use for bulk enrollment

  • -q: quiet mode, errors only

  • -d: debug mode

Authenticated join#

If the user running ipa-join has kerberos credentials then those are used to authenticated in order to retrieve a keytab unless the user includes the one-time password on the command-line. If the password is included then this is treated as a bulk enrollment.

These requests use the XML-RPC API.

Example#

# kinit admin
# ipa-join

Bulk enrollment#

A bulk host is defined as a pre-created host entry that contains a one-time password. This password allows a user to authenticate over LDAP

Example#

# ipa-join -w secret123

Things to test#

The assumption for all of these is that the client is already configured. Whether the user has credentials or not will vary by test case.

I see 3 overall scenarios to test:

  • Enrollment by admin user

  • Enrollment by delegated user

  • Enrollment with one-time password (OTP)

Within each of these you should test:

  • The host exists and is unenrolled

  • The host exists and is enrolled

  • The host doesn’t exist yet

You need to add the -k option if you are not doing the tests are root. It will fail with a file permissions error otherwise.

For delegation, the rolegroup to be a member of is hostadmin

ipa rolegroup-add-member --users=someuser hostadmin

Unjoin#

For lack of a better word, when you want to leave the IPA realm and clean up the client.

This will involve:

  • Restore the client to its previous state

  • Removing any IPA principals from /etc/krb5.keytab

  • Deleting the host from the IPA server

ipa-rmkeytab will be used on the client to remove any principals. It is a generic tool that can delete an individual principal or all principals for a given realm. We will use the latter in our uninstaller. Rather than try to find all possible keytabs we’ll just do /etc/krb5.keytab for now.