#!/bin/sh WriteInstallInfo() { echo "1.17.2-0 20231105 Developer_Build" > /etc/opt/microsoft/omsagent/sysconf/installinfo.txt date +%Y-%m-%dT%T.0Z >> /etc/opt/microsoft/omsagent/sysconf/installinfo.txt } WriteInstallInfo # Can't use normal mechanisms to create /var directories because they must be # owned by omsagent account. So create them as part of Postinstall, after the # service account is created. mkdir -m 755 /var/opt/microsoft/omsagent 2> /dev/null || true chown -R omsagent:omiusers /var/opt/microsoft/omsagent # Same for plugin directory: chown -R omsagent:root /opt/microsoft/omsagent/plugin # Migrate to multi-homing config and structure, as well as update omsagent config files /opt/microsoft/omsagent/bin/omsadmin.sh -U POSTINSTALL_ERROR=0 if [ -f /etc/omsagent-onboard.conf ]; then /opt/microsoft/omsagent/bin/omsadmin.sh if [ $? -ne 0 ]; then POSTINSTALL_ERROR=$? fi else # Create a logrotate conf file for the Primary workspace if it does not already exist # This is needed when upgrading from old omsagent to multi-homing enabled version PRIMARY_WSID=`grep WORKSPACE_ID /etc/opt/microsoft/omsagent/conf/omsadmin.conf | cut -d= -f2` > /dev/null 2>&1 if [ "$PRIMARY_WSID" -a ! -f /etc/logrotate.d/omsagent-$PRIMARY_WSID ]; then cat /etc/opt/microsoft/omsagent/sysconf/logrotate.conf | sed "s/%WORKSPACE_ID%/$PRIMARY_WSID/g" > /etc/logrotate.d/omsagent-$PRIMARY_WSID fi fi # Set up a cron job to logrotate all omsagent-$WORKSPACE_ID every 5 minutes if [ ! -f /etc/cron.d/omsagent ]; then echo "*/5 * * * * root /usr/sbin/logrotate -s /var/lib/logrotate/omsagent-status /etc/logrotate.d/omsagent* >/dev/null 2>&1" > /etc/cron.d/omsagent fi if [ $POSTINSTALL_ERROR -ne 0 ]; then exit $POSTINSTALL_ERROR fi RemoveSudoersSupport() { # Unconfigure sudo configuration # # Just unconfigure everything we could have done so things are left in clean state if [ -f /etc/sudoers.d/omsagent ]; then rm -f /etc/sudoers.d/omsagent fi grep -q '# Begin sudo configuration for omsagent' /etc/sudoers if [ $? -eq 0 ]; then cp /etc/sudoers /etc/sudoers.bak sed '/^# Begin sudo configuration for omsagent/,/# End sudo configuration for omsagent$/ d' /etc/sudoers.bak > /etc/sudoers fi } SudoSupportsIncludeDirective() { # Algorithm: # If #includedir exists in /etc/sudoers AND /etc/sudoers.d exists, # Then Use /etc/sudoers.d # Else Append to /etc/sudoers INCLUDEDIR=0 egrep -q "^#includedir" /etc/sudoers && INCLUDEDIR=1 if [ $INCLUDEDIR -eq 1 -a -d /etc/sudoers.d ]; then return 0 else return 1 fi } /opt/omi/bin/service_control reload # Unconfigure sudo if it's already configured RemoveSudoersSupport # Configure sudo (either place in sudoers.d or append to sudoers configuration) SudoSupportsIncludeDirective if [ $? -eq 0 ]; then cp /etc/opt/microsoft/omsagent/sysconf/sudoers /etc/sudoers.d/omsagent chmod 440 /etc/sudoers.d/omsagent else cat /etc/opt/microsoft/omsagent/sysconf/sudoers >> /etc/sudoers fi chmod 440 /etc/opt/microsoft/omsagent/sysconf/sudoers # Set group read permission on OMS cert and key files used by the primary workspace OMS_CERTS_DIR="/etc/opt/microsoft/omsagent/certs" if [ -d "$OMS_CERTS_DIR" ]; then chmod -R 750 "$OMS_CERTS_DIR" fi # Remove NPM directory on purge NPM_STATE_DIR=/var/opt/microsoft/omsagent/npm_state if [ -d "$NPM_STATE_DIR" ]; then rm -rf $NPM_STATE_DIR fi # Set up required states of all onboarded workspaces before starting their daemons /opt/microsoft/omsagent/bin/omsadmin.sh -R # Start all workspace-specific omsagent daemons /opt/microsoft/omsagent/bin/service_control start exit 0