Configure machines as LDAP client for graphical LDAP user login
Home > CentOS > CentOS 6.x > System administration tools > ansible > Ansible-playbooks > Configure machines as LDAP client for graphical LDAP user login
To configure machines as LDAP client for graphical LDAP user login using ansible use following steps:
Configure machine once using following playbook:
---
- name: Configure machine for LDAP login using GUI
remote_user: root
hosts: lab-machine
tasks:
- name: Disable SELinux for now
shell: setenforce 0
ignore_errors: yes
- name: Disable SELinux permanently
lineinfile: dest=/etc/sysconfig/selinux regexp="SELINUX=" line="SELINUX=disabled"
- name: To remove sssd-client
yum: name={{item}} state=absent
with_items:
- sssd-client
- ipa-admintools
- ipa-client
- ipa-server
- ipa-server-selinux
- sssd
- sssd-ad
- sssd-common
- sssd-common-pac
- sssd-dbus
- sssd-ipa
- sssd-krb5
- sssd-krb5-common
- sssd-ldap
- sssd-proxy
- name: To install openldap-clients, openldap and nss-pam-ldapd
yum: name={{item}} state=present
with_items:
- openldap-clients
- openldap
- nss-pam-ldapd
- name: Configure machine as LDAP client
shell: authconfig --enableldap --enableldapauth --ldapserver=ldap.sbarjatiya.com --ldapbasedn="ou=Users,dc=sbarjatiya,dc=com" --enablelocauthorize --enablepamaccess --enablemkhomedir --enablecachecreds --enablecache --updateall
#Use only on CentOS 6.*, On CentOS 7 or Fedora-20 this would fail
# - name: Set LDAP bind policy to soft
# lineinfile: dest=/etc/pam_ldap.conf regexp="^bind_policy" line="bind_policy soft"
- name: Replace nsswitch.conf as it is not getting configured properly by authconfig
copy: src=nsswitch.conf dest=/etc/nsswitch.conf owner=root group=root mode=644
- name: Replace all references to sss in pam.d
shell: cd /etc/pam.d; sed -i 's/^.*sss.*$//g' *
- name: Enable nscd on system boot
service: name=nscd enabled=yes state=started
#Replace folder list with appropriate base folder names. For example if LDAP user saurabh's home folder is /rekall/saurabh then /rekall folder should be created
#using this task
- name: Create the directories on each machine
file: path={{item}} state=directory mode=755
with_items:
- /courses
- /home1
- /students
#Adjust this line as per lab-machine OS. Also test it on few machines and edit appropriately. The final output should be name of interface to be brought up using DHCP on boot for ansible-pull mechanism.
#Feodra 20 line
# - shell: ifconfig | grep mtu | sed 's/:.*$//g' | grep [0-9]
#CentOS-7 line
# - shell: ifconfig | grep mtu | grep [ep][n0-9]p[0-9] | sed 's/:.*$//g'
#CentOS6 line
# - shell: ifconfig | grep Link| grep HW | sed 's/ .*$//g'
register: ifconfig_output
- name: Copy the rc.local for DHCP and sss configuration on boot
template: src=rc.local dest=/etc/rc.d/rc.local mode=777
- name: Disable management of {{ifconfig_output.stdout}} by network-manager (Possibly disconnects current ansible session)
shell: 'echo NM_CONTROLLED="no" >> /etc/sysconfig/network-scripts/ifcfg-{{ifconfig_output.stdout}}'
Here:
- NM_CONTROLLED="no" helps in getting machine IP from DHCP during boot via rc.local file. Without this machine does not has IP to contact LDAP server and LDAP login cannot work.
- sssd removal is necessary as without it GUI login keeps getting slower. For a lab of 120 machines the login may take up to 4 hours unless sssd is removed thoroughly as automated in playbook above
A file rc.local should be available with following content:
#! /bin/bash
cd /etc/pam.d
sed -i 's/^.*sss.*$//g' *
dhclient -v {{ifconfig_output.stdout}}
Other lines such as pull-configuration described at HTTP based ansible-pull configuration without-git can follow these lines in rc.local file.
A file nsswitch.conf should be available with following content:
passwd: files ldap shadow: files ldap group: files ldap #initgroups: files #hosts: db files nisplus nis dns #hosts: files mdns4_minimal [NOTFOUND=return] dns hosts: files ldap dns bootparams: nisplus [NOTFOUND=return] files ethers: files netmasks: files networks: files protocols: files rpc: files services: files netgroup: files publickey: nisplus automount: files aliases: files nisplus
Ideally authconfig should take care of adding ldap and removing sss, but it does not seem to do so.
Home > CentOS > CentOS 6.x > System administration tools > ansible > Ansible-playbooks > Configure machines as LDAP client for graphical LDAP user login