IBM Support

How to configure auto start for Directory Server 6.4 on RHEL and SLES Operating Systems

Troubleshooting


Problem

Procedure to configure auto start for Directory Server on Red Hat Enterprise Linux 7 and 8, and SUSE Linux Enterprise Server 12 and 15 Operating Systems

Symptom

Security Directory Server provided daemons ibmdiradm and ibmslapd fail to auto start on RHEL 7 and 8, SUSE Linux Enterprise Server 12 and 15 along with system reboot or restart.

Cause

Operating systems RHEL 7, RHEL 8, SLES 12 and SLES 15, updated the method for auto starting services at boot time. Using inittab to auto start ibmslapd or ibmdiradm does not work on these operating systems.

In RHEL 7 (and RHEL 8), systemd replaces Upstart (RHEL 6) as the default init system. Systemd deprecates Upstart (RHEL 6), and also deprecated the /etc/inittab file (which is used by SDS for auto starting on AIX/Linux/Solaris platforms).
SLES 12 (and SLES 15) also no longer uses /etc/inittab file.

Environment

Red Hat Enterprise Linux 7 and 8, and SUSE Linux Enterprise Server 12 and 15

Resolving The Problem

The following step by step instructions provides details on how to enable auto start for ibmslapd and ibmdiradm processes of an SDS instance on RHEL 7 and 8 or SLES 12 and 15:
  1. Find the instance name for which the auto start is required, by using the command "idsilist -a":
    (in this example the instance name is sdsinst1)
     
    # /opt/ibm/ldap/V6.4/sbin/idsilist -a
    Directory server instance(s):
    --------------------------------------
    Instance 1:
    
    Name: sdsinst1
    Version: 6.4
    Location: /home/sdsinst1
    Description: TDS
    IP Addresses: All available
    Port: 389
    Secure Port: 636
    Admin Server Port: 3538
    Admin Server Secure Port: 3539
    Type: Directory Server
  2. Create a systemd unit file for ibmslapd auto start in the systemd folder:
    /etc/systemd/system/ibmslapd_<ISDS Instance Name>.service

    Example:
    /etc/systemd/system/ibmslapd_sdsinst1.service
  3. Edit the systemd unit file and put the following contents (substitute appropriate value for <ISDS_Instance_Name>).
    If there are changes needed to any ulimits, ulimits can also be set in the "[Service]" stanza of the *.service file.:
    # Start of service file
    [Unit]
    Description=IBM Security Directory Server <ISDS_Instance_Name>
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/opt/IBM/ldap/V6.4/sbin/ibmslapd -I <ISDS_Instance_Name> -n
    ExecStop=/opt/IBM/ldap/V6.4/sbin/ibmslapd -I <ISDS_Instance_Name> -k
    LimitNOFILE=<numeric value or "infinity">
    LimitCORE=<numeric value or "infinity">
    KillMode=process
    
    [Install]
    WantedBy=multi-user.target
    # End of service file
    

    Example:
    
    # Start of service file
    [Unit]
    Description=IBM Security Directory Server sdsinst1
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/opt/IBM/ldap/V6.4/sbin/ibmslapd -I sdsinst1 -n
    ExecStop=/opt/IBM/ldap/V6.4/sbin/ibmslapd -I sdsinst1 -k
    LimitNOFILE=65536
    LimitCORE=infinity
    KillMode=process
    
    [Install]
    WantedBy=multi-user.target
    # End of service file
  4. Enable and start the service for ibmslapd process of the instance:
    # systemctl enable ibmslapd_<ISDS_Instance_Name>.service
    # systemctl start ibmslapd_<ISDS_Instance_Name>.service
    

    Example:
    
    # systemctl enable ibmslapd_sdsinst1.service
    # systemctl start ibmslapd_sdsinst1.service
  5. Similarly, create a systemd unit file for ibmdiradm auto start in systemd folder:
    /etc/systemd/system/ibmdiradm_<ISDS Instance Name>.service

    Example:
    
    /etc/systemd/system/ibmdiradm_sdsinst1.service
  6. Edit the systemd unit file and put the following contents (substitute appropriate value for <ISDS_Instance_Name>):
    # Start of service file
    [Unit]
    Description=IBM Security Directory Admin Server <ISDS_Instance_Name>
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/opt/IBM/ldap/V6.4/sbin/ibmdiradm -I <ISDS_Instance_Name>
    ExecStop=/opt/IBM/ldap/V6.4/sbin/ibmdiradm -I <ISDS_Instance_Name> -k
    KillMode=process
    
    [Install]
    WantedBy=multi-user.target
    # End of service file
    

    Example:
    
    # Start of service file
    [Unit]
    Description=IBM Security Directory Admin Server sdsinst1
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/opt/IBM/ldap/V6.4/sbin/ibmdiradm -I sdsinst1
    ExecStop=/opt/IBM/ldap/V6.4/sbin/ibmdiradm -I sdsinst1 -k
    KillMode=process
    
    [Install]
    WantedBy=multi-user.target
    # End of service file
  7. Enable and start the service for ibmdiradm process of the instance:
    # systemctl enable ibmdiradm_<ISDS_Instance_Name>.service
    # systemctl start ibmdiradm_<ISDS_Instance_Name>.service
    
    

    Example:
    
    # systemctl enable ibmdiradm_sdsinst1.service
    # systemctl start ibmdiradm_sdsinst1.service

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSVJJU","label":"IBM Security Directory Server"},"Component":"Configuration","Platform":[{"code":"PF016","label":"Linux"}],"Version":"6.4","Edition":"","Line of Business":{"code":"LOB24","label":"Security Software"}}]

Document Information

Modified date:
14 December 2023

UID

swg21995976