Env: In CentOS 7.7 and/or Centos 7.6 (latest, and/or with systemd updated)
Context and Analysis:
Most of Bahmni daemon services are run with Sysv init scripts placed under /etc/init.d/
However, with updated CentOS 7.6, Centos7.7, Bahmni installation fails.
1. Links: https://talk.openmrs.org/t/announcing-bahmni-0-92-release-candidate/23758/63
2. Links: https://talk.openmrs.org/t/announcing-bahmni-0-92-release-candidate/23758/87
While starting with "systemctl start <service name>", the logs report
“Systemd Service Fails To Start With 'Refusing to accept PID outside of service control group, acquired through unsafe symlink chain' “
This is relevant to reported bug https://access.redhat.com/solutions/4397951
This happens because we want to start a daemon process for a service with “bahmni” which is a no login user.
service <name> start - works fine because it does not involve the PAM sessions as with systemctl
However for provisioning, since we use the ansible module “systemd” which creates a generated service file under /run/systemd/generator.late/<name.service>
(or identifiable from "systemctl show <service name>, check "fragmentPath")
in bash sysvinit scripts - we use “su -s bahmni <command>”
This can be rectified by changing the sysv init scripts to use "runuser" instead of “su -s /bin/bash bahmni <command>”.
e.g. runuser -u bahmni <command>
However, instead of updating the scripts (to use runuser) we have decided to introduce service files as part of the RPM.
introduce service file as part of the rpm packaging
improve sysv init script for the specific services to use
> sh <command>
While the owner of the process is mentioned in the service file, using <User>
The following services need to be modified.
odoo (may not be required)
Generate all rpms again. Release to internal s3
Test on different OS and distros (including 7.5, 7.6 and 7.7)
Test for each component
Upload to bintray post verification