36.10. Using Ansible to override the login name and home directory of an IdM user on a specific host
Complete this procedure to use the idoverrideuser ansible-freeipa module to create an ID view for a specific Identity Management (IdM) client that overrides a POSIX attribute value associated with a specific IdM user. The procedure uses the example of an ID view that enables an IdM user named idm_user to log in to an IdM client named client1.idm.example.com by using the user_1234 login name. Additionally, the ID view modifies the home directory of idm_user so that after logging in to client1, the user home directory is /home/user_1234/.
Prerequisites
On the control node:
- You are using Ansible version 2.15 or later.
-
You have installed the
ansible-freeipapackage. - The example assumes that in the ~/MyPlaybooks/ directory, you have created an Ansible inventory file with the fully-qualified domain name (FQDN) of the IdM server.
-
The example assumes that the secret.yml Ansible vault stores your
ipaadmin_passwordand that you have access to a file that stores the password protecting the secret.yml file.
-
The target node, that is the node on which the
freeipa.ansible_freeipamodule is executed, is part of the IdM domain as an IdM client, server or replica.
Procedure
Create your Ansible playbook file add-idoverrideuser-with-name-and-homedir.yml with the following content:
--- - name: Playbook to manage idoverrideuser hosts: ipaserver become: false gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure idview_for_client1 is present idview: ipaadmin_password: "{{ ipaadmin_password }}" name: idview_for_client1 - name: Ensure idview_for_client1 is applied to client1.idm.example.com idview: ipaadmin_password: "{{ ipaadmin_password }}" name: idview_for_client1 host: client1.idm.example.com action: member - name: Ensure idm_user is present in idview_for_client1 with homedir /home/user_1234 and name user_1234 ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: idview_for_client1 anchor: idm_user name: user_1234 homedir: /home/user_1234Run the playbook. Specify the playbook file, the file storing the password protecting the secret.yml file, and the inventory file::
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/inventory <path_to_playbooks_directory>/add-idoverrideuser-with-name-and-homedir.ymlOptional: If you have
rootcredentials, you can apply the new configuration to the IdM client system immediately:SSH to the client system as
root:$ ssh root@client1 Password:On the IdM client, clear the SSSD cache:
# sss_cache -EOn the IdM client, restart the SSSD daemon:
# systemctl restart sssd
Verification
SSHto IdM client as idm_user:# ssh idm_user@client1.idm.example.com Password: Last login: Sun Jun 21 22:34:25 2020 from 192.168.122.229 [user_1234@client1 ~]$Print the working directory:
$ pwd /home/user_1234/