This commit is contained in:
Henry Wang 2019-12-19 10:17:49 +08:00
parent 022d6aa4f8
commit 4e06b1eb56
25 changed files with 767 additions and 0 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -1,2 +1,7 @@
---
message: "This node is using common data"
controlm::controlm_agent::agent2server_port: 17005
controlm::controlm_agent::server2agent_port: 17006
controlm::controlm_agent::tracker_port: 17035
controlm::controlm_agent::server_host: ctmgnpappla013
controlm::controlm_agent::primary_server_host: ctmgnpappla013.optus.com.au

BIN
site-modules/.DS_Store vendored

Binary file not shown.

BIN
site-modules/controlm/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,96 @@
This installs the Optus standard controlm.
All hiera is managed in the approproate pp file under manifests and the various child .pp files use inherit to see the variables.
# CONTROLM AGENT
All hiera has defaults. You will probably only need to set servers if anything.
## Software and patches
The install script installs the main software and the patches as I couldn't get the patch script to run properly after the main install script. Patches are defaulted to the current ones or set in heira
controlm::controlm_agent::patch_files:
- file1
- file2
## Servers
if the client is in a different domain to the server (eg client is nix.au.singtelgroup.net and server is optus.com.au) then need FQDN as below, else can use short form in both
```
controlm::controlm_agent::primary_server_host: ctmgnpappla012.optus.com.au
controlm::controlm_agent::server_host: ctmgnpappla012
```
Note that you need to be able to contact the host[s] on the server2agent port listed in controlm_agent.pp for the install to work.
All DEV (DEV,PPT, SIT, GNP etc) must use ctmgnpappla012 as the control-m server, all PRD non BCC Agents must use ctmprdappla003.
## Admins
You need accounts for the admins and schedulers as below, subbing PRD for GNP in prd:
```
isnd_linux::profiles::soe::login_accounts::groups:
- 'ocaus01\ACL-GNP-CTRLM-rwx-SMT-ADMIN':
additional_groups:
- controlm
- 'ocaus01\ACL-GNP-CTRLM-rx-SMT-SCHED':
additional_groups:
- controlm
tpiam::profiles::sudoers:
ocaus01aclgnpctrlmrwxsmtadmin:
runas_users:
- ctmagent
commands: all_commands
ocaus01aclgnpctrlmrxsmtsched:
runas_users:
- ctmagent
commands: all_commands include controlm::controlm_agent::users
```
## To reinstall
```
userdel -r ctmagent
yum remove ctmagent_core_clean
rm -rf /apps/bmc
```
# ctm.sh fails
If puppet complains about ctm.sh, be sure everything is running as root properly. The install should do this, but exec is never reliable
```
[root@bdpprdedgla001 scripts_optus]# pwd
/apps/bmc/ctm/scripts_optus
[root@bdpprdedgla001 scripts_optus]# ./ctm.sh stop
Stopping Control-M Agent
Killing Control-M/Agent Listener pid:23639
2018-01-09 11:06:33 Listener process stopped
Killing Control-M/Agent Tracker pid:23693
2018-01-09 11:06:34 Tracker process stopped
```
it might complain, so if it does, do as it says:
```
[root@bdpprdedgla002 scripts_optus]# ./ctm.sh stop
Stopping Control-M Agent
The agent is currently running as 'ctmagent'
You need to login as 'ctmagent' and run this command again
```
so su - ctmagent, run the stop command and then as root
```
[root@bdpprdedgla001 scripts_optus]# ./ctm.sh mode_full
Sudo mode is disabled
/apps/bmc/ctm/exe/vault/su_bmc ownership set to ctmagent
/apps/bmc/ctm/exe/vault/su_bmc setuid bit was reset
/apps/bmc/ctm/sysout permissions set to 755 without sticky bit
/apps/bmc/ctm/sysout setgid bit was reset
/apps/bmc/ctm/non-root deleted
Non-root mode was disabled.
[root@bdpprdedgla001 scripts_optus]# ./ctm.sh start
Starting the agent as 'root' user
Control-M/Agent Listener started. pid: 10838
Control-M/Agent Tracker started. pid: 10892
Control-M/Agent started successfully.
Control-M Agent Started
```

View File

@ -0,0 +1,4 @@
setenv PATH ${PATH}:/apps/bmc/ctm/exe:/apps/bmc/ctm/scripts:/apps/bmc/ctm/scripts_optus
setenv CONTROLM /apps/bmc/ctm
setenv LD_LIBRARY_PATH /apps/bmc/ctm/exe

View File

@ -0,0 +1,7 @@
CONTROLM=/apps/bmc/ctm
export CONTROLM
PATH=${PATH}:/apps/bmc/ctm/exe:/apps/bmc/ctm/scripts:/apps/bmc/ctm/scripts_optus
export PATH
LD_LIBRARY_PATH=/apps/bmc/ctm/exe
export LD_LIBRARY_PATH

View File

@ -0,0 +1,11 @@
#!/bin/bash
cd /apps/bmc/
sudo -u ctmagent /apps/bmc/software/version_9/setup.sh -silent /apps/bmc/ctm/ctm_silentinstall_optus.xml
RESULT=$?
echo "exit status $RESULT"
/bin/date > /apps/bmc/ctm/controlm_agent_install.hasrun
echo "exit status $RESULT" >> /apps/bmc/ctm/controlm_agent_install.hasrun
echo "do not remove this file unless you want to rerun the install" >> /apps/bmc/ctm/controlm_agent_install.hasrun
chmod 444 /apps/bmc/ctm/controlm_agent_install.hasrun
exit $RESULT

View File

@ -0,0 +1,49 @@
#!/bin/bash
# Startup Script for Control-M Agent Daemons
# Creation Date: 2016-09-09
# Created By: David Stephenson
# Version: 1.0
# chkconfig: 2345 99 05
# description: Controlm agent
CTM_Dir=/apps/bmc/ctm
CTM_OWNER=ctmagent
CTM_GROUP=controlm
chown $CTM_OWNER:$CTM_GROUP $CTM_Dir/proclog/*.log
case "$1" in
'start')
cd $CTM_Dir/scripts
./start-ag -u $CTM_OWNER -p ALL -s
if [ "$?" = 0 ] ; then
touch /var/lock/subsys/ctm
echo "Control-M Agent Started"
fi
;;
'stop')
cd $CTM_Dir/scripts
echo "Stopping Control-M Agent"
./shut-ag -u $CTM_OWNER -p ALL
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/ctm;
;;
'mode_user')
cd $CTM_Dir/scripts
./set_agent_mode -u $CTM_OWNER -o 1
;;
'mode_full')
cd $CTM_Dir/scripts
./set_agent_mode -u $CTM_OWNER -o 2
;;
*)
echo "Usage: /<install-dir>/ctm.sh { start | stop }"
echo "or, if using sudo...."
echo "Usage: sudo -u root ./ctm.sh { start | stop | mode_user | mode_full }"
;;
esac
exit 0

View File

@ -0,0 +1,39 @@
#!/bin/sh
# Description:
# This setup.sh find and run the install-bin that is compatible to the installing environment
# Find this script's directory
utl_dir=`dirname $0`
# set the INSTALL_BINs directory
bin_dir=$utl_dir
# get all the INSTALL_BINs
install_bin_list=`ls $bin_dir | grep INSTALL.BIN`
#get shell to be used to run "BIN" files
__machine=`uname`
shellInterpriter="/bin/ksh"
if [ $__machine = "Linux" ] ; then
shellInterpriter="/bin/sh"
fi
# loop on the install_bin_list and find the first one that is compatible with the environment
for install_bin in $install_bin_list
do
${shellInterpriter} $bin_dir/$install_bin -m
if [ $? -eq 0 ];then
# Current install_bin is compatible with the environment was found, run it to install the FP
$bin_dir/$install_bin $@
exit $?
fi
done
echo ERROR: There is no available installation file for this platform: `uname -a`
echo Installation files were found for the following platforms:
echo ${install_bin_list}| tr " " "\n" | cut -f 2 -d_ | cut -f 1 -d.
exit 1

View File

@ -0,0 +1,48 @@
#!/bin/bash
# Sleep Script for Control-M
# Use to Test Control-M Scheduling
# Creation Date: 2016-09-09
# Created By: David Stephenson
# Version: 1.0
exec 2> /dev/null
echo "********************************"
echo "** CONTROL-M Environment **"
echo "********************************"
echo PATH := $PATH
echo LD_LIBRARY_PATH:= $LD_LIBRARY_PATH
echo CONTROLM := $CONTROLM
echo ""
echo "********************************"
echo "** Arguments passed to script **"
echo "********************************"
echo Number of ARGS: = $#
echo ARGS := $*
echo ""
echo "********************************"
echo "** Script Run times **"
echo "********************************"
echo START := $(date)
# Default RC to 0
RC=0
# Search ARGS for RC=xxx If found Return an Error Code
while (( "$#" )); do
arg=$(echo $1 | awk '{ print $1 }')
if [ "$arg" -eq "$arg" ] 2>/dev/null; then
echo SLEEP := $arg SECONDS
sleep $1 > /dev/null
fi
echo $arg | grep -qi "rc="
if [ "$?" -eq "0" ]; then
RC=$(echo $arg | grep -i "rc=" | awk -F= '{ print $2 }')
echo "RETURN CODE ARGUMENT: 'RC=$RC' FOUND. RETURN CODE '$RC' SENT TO CONTROL_M"
fi
shift
done
echo END := $(date)
echo ""
exit $RC

View File

Binary file not shown.

View File

@ -0,0 +1,56 @@
class controlm::controlm_agent {
#used for the automated install file and firewall.
#MUST HAVE THESE TWO IN HIERA, use fqdn for primary if host in diff domain.
#controlm::controlm_agent::primary_server_host: ctmgnpappla012.optus.com.au
#controlm::controlm_agent::server_host: ctmgnpappla012
$server_host = hiera('controlm::controlm_agent::server_host','ctmgnpappla012')
$primary_server_host = hiera('controlm::controlm_agent::primary_server_host','ctmgnpappla012.optus.com.au')
$tracker_port = hiera('controlm::controlm_agent::tracker_port','7035')
$a2s_port = hiera('controlm::controlm_agent::agent2server_port','7005')
$s2a_port = hiera('controlm::controlm_agent::server2agent_port','7006')
$tcp_timeout = hiera('controlm::controlm_agent::tcp_timeout','60')
$ignore_fail = hiera('controlm::controlm_agent::ignore_fail',false)
$force_upgrade = hiera('controlm::controlm_agent::force_upgrade',false)
$software_version = hiera('controlm::controlm_agent::version','9.0.00-2')
$patch_files = hiera('controlm::controlm_agent::patch_files',['PAKAI.9.0.00.100_Linux-x86_64_INSTALL.BIN','PAKAI.9.0.00.200_Linux-x86_64_INSTALL.BIN'])
# array of patch files so
# controlm::controlm_agent::patch_files:
# - file1
# - file2
# patch files are not installed separately from main install as timing that was
# not working. So if we get new patches probably best to install by hand or see
# if you can get a separate script happening.
# also in hiera you need these, subbing PRD for GNP where needed
# isnd_linux::profiles::soe::login_accounts::groups:
# - 'ocaus01\ACL-GNP-CTRLM-rwx-SMT-ADMIN':
# additional_groups:
# - controlm
# - 'ocaus01\ACL-GNP-CTRLM-rx-SMT-SCHED':
# additional_groups:
# - controlm
#
# tpiam::profiles::sudoers:
# ocaus01aclgnpctrlmrwxsmtadmin:
# runas_users:
# - ctmagent
# commands: all_commands
# ocaus01aclgnpctrlmrxsmtsched:
# runas_users:
# - ctmagent
# commands: all_commands include controlm::controlm_agent::users
include controlm::controlm_agent::users
include controlm::controlm_agent::packages
include controlm::controlm_agent::files
include controlm::controlm_agent::firewall
include controlm::controlm_agent::install
}

View File

@ -0,0 +1,153 @@
class controlm::controlm_agent::files inherits controlm::controlm_agent {
# Directories
unless defined(File['/apps']) {
file { [ '/apps', ]:
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
}
}
file { [ '/apps/bmc',]:
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
require => File['/apps'],
}
file { [ '/apps/bmc/software','/apps/bmc/software/version_9/','/apps/bmc/software/version_9/fixes' ]:
ensure => 'directory',
owner => 'ctmagent',
group => 'controlm',
mode => '0755',
require => File['/apps/bmc'],
}
# scripts_optus
file { ['/apps/bmc/ctm/scripts_optus']:
ensure => directory,
owner => 'ctmagent',
group => 'controlm',
mode => '0775',
require => User['ctmagent'],
}
file { '/apps/bmc/ctm/scripts_optus/sleep.sh':
ensure => file,
owner => 'ctmagent',
group => 'controlm',
mode => '0755',
source => 'puppet:///modules/controlm/sleep.sh',
require => [File['/apps/bmc/ctm/scripts_optus'],User['ctmagent'],],
}
file { '/apps/bmc/ctm/scripts_optus/ctm.sh':
ensure => file,
owner => 'root',
group => 'root',
mode => '0755',
source => 'puppet:///modules/controlm/ctm.sh',
require => File['/apps/bmc/ctm/scripts_optus'],
}
case $::os['release']['major']{
'6': {
file { '/etc/rc.d/init.d/ctm.sh':
ensure => link,
target => '/apps/bmc/ctm/scripts_optus/ctm.sh',
owner => 'root',
group => 'root',
require => File['/apps/bmc/ctm/scripts_optus/ctm.sh'],
}
}
'7': {
file { '/etc/rc.d/init.d/ctm.sh':
ensure => absent,
}
file { '/etc/rc.d/init.d/ctm':
ensure => file,
owner => 'root',
group => 'root',
mode => '0755',
source => 'puppet:///modules/controlm/ctm.sh',
notify => Exec['systemctl reload daemon for Control-M agent']
}
exec{'systemctl reload daemon for Control-M agent':
path => $::path,
command => 'systemctl daemon-reload',
refreshonly => true,
}
}
default: {fail "Unsupported Major version ${::os['release']['major']} detected"}
}
#ctm/scripts
# file { '/apps/bmc/ctm/scripts':
# ensure => link,
# target => '/apps/bmc/software/version_9/ctm/scripts',
# owner => 'root',
# group => 'root',
# require => Package['ctmagent_core_clean'],
# }
# install scripts
file { '/apps/bmc/ctm/ctm_silentinstall_optus.xml':
ensure => file,
owner => 'root',
group => 'root',
mode => '0755',
content => template('controlm/agent_install.erb'),
require => User['ctmagent'],
}
file { '/apps/bmc/ctm/controlm_agent_install.sh':
ensure => file,
owner => 'root',
group => 'root',
mode => '0755',
content => template('controlm/controlm_agent_install.erb'),
require => User['ctmagent'],
}
# need to check status method and also if we need restart check.
# this should be in the install Iguess
# service { 'ctm.sh':
# ensure => running,
# enable => true,
# hasstatus => false,
# status => '',
# start => '',
# stop => '',
# subscribe => [
# ],
# require => '/etc/rc.d/init.d/ctm.sh',
# }
# profile scripts
file { '/etc/profile.d/controlm.csh':
ensure => file,
owner => 'root',
group => 'root',
mode => '0755',
source => 'puppet:///modules/controlm/controlm.csh',
}
file { '/etc/profile.d/controlm.sh':
ensure => file,
owner => 'root',
group => 'root',
mode => '0755',
source => 'puppet:///modules/controlm/controlm.sh',
}
}

View File

@ -0,0 +1,16 @@
class controlm::controlm_agent::firewall inherits controlm::controlm_agent {
firewall { '200 controlm tracker port hiera controlm_tracker_port':
action => 'accept',
proto => 'tcp',
dport => [$tracker_port],
}
firewall { '210 controlm server to agent hiera controlm_server2agent_port':
action => 'accept',
proto => 'tcp',
dport => [$s2a_port],
}
}

View File

@ -0,0 +1,59 @@
class controlm::controlm_agent::install inherits controlm::controlm_agent {
# set up /etc/services
augeas { 'controlm':
context => '/files/etc/services',
changes => [
"set service-name[port = '${s2a_port}'][protocol = 'udp'] ctmagent",
"set service-name[port = '${s2a_port}'][protocol = 'udp']/#comment 'Control-M server2agent'",
"set service-name[port = '${s2a_port}'][protocol = 'tcp'] ctmagent",
"set service-name[port = '${s2a_port}'][protocol = 'tcp']/#comment 'Control-M server2age nt'",
"set service-name[port = '${a2s_port}'][protocol = 'udp'] ctmagent",
"set service-name[port = '${a2s_port}'][protocol = 'udp']/#comment 'Control-M agent2servr'",
"set service-name[port = '${a2s_port}'][protocol = 'tcp'] ctmagent",
"set service-name[port = '${a2s_port}'][protocol = 'tcp']/#comment 'Control-M agent2server'",
],
}
# use shellscript and sudo as running the install direct as user ctmagent gives HOME errors plus we get errors in the log file
# also does patches as can't get the patch script running after it for some reason
# patch names need to be in hiera see controlm_agent.pp
exec { 'controlm_agent_install':
command => '/apps/bmc/ctm/controlm_agent_install.sh > /apps/bmc/ctm/controlm_agent_install.log',
creates => '/apps/bmc/ctm/controlm_agent_install.hasrun',
require => [User['ctmagent'],Package['ctmagent_core_clean'],File['/apps/bmc/ctm/ctm_silentinstall_optus.xml','/apps/bmc/ctm/controlm_agent_install.sh'],Exec['chown_/apps/bmc'],],
timeout => 1800,
}
case $::os['release']['major']{
'6': {
service { 'ctm.sh':
ensure => running,
enable => true,
hasstatus => false,
status => '/bin/ps -ef | /bin/grep /apps/bmc/ctm/exe/p_ctm | /bin/grep -v grep',
require => [File['/etc/rc.d/init.d/ctm.sh'],Exec['controlm_agent_install'],]
}
}
'7': {
service { 'ctm.sh':
enable => false,
}
service { 'ctm':
ensure => running,
enable => true,
hasstatus => false,
status => '/bin/ps -ef | /bin/grep /apps/bmc/ctm/exe/p_ctm | /bin/grep -v grep',
require => [File['/etc/rc.d/init.d/ctm'],Exec['controlm_agent_install']]
}
}
default: {fail "Unsupported Major version ${::os['release']['major']} detected"}
}
}

View File

@ -0,0 +1,16 @@
class controlm::controlm_agent::packages inherits controlm::controlm_agent {
package { 'ctmagent_core_clean' :
ensure => "$software_version",
require => User['ctmagent'],
}
# the RPM does permissions, this is a backup
exec {'software permissions' :
command => '/bin/chown -R ctmagent:controlm /apps/bmc/software/version_9',
onlyif => '/usr/bin/test $(/bin/find /apps/bmc/software/version_9/CheckReq -uid 0 | w
c -l) -gt 0',
require => Package['ctmagent_core_clean'],
}
}

View File

@ -0,0 +1,38 @@
class controlm::controlm_agent::users {
unless defined(Group['controlm']) {
group { 'controlm':
ensure => present,
}
}
user { 'ctmagent':
gid => [ 'controlm'],
home => '/apps/bmc/ctm',
comment => 'ControlM Agent',
shell => '/bin/bash',
password => '*',
managehome => true,
require => [Group['controlm'],File['/apps/bmc'],],
}
# set ownerships for /apps/bmc/ctm as needs sticky on group and install needs ctmagent to own /apps/bmc
exec { 'set permissions on /apps/bmc/ctm':
command => '/bin/chmod 2775 /apps/bmc/ctm',
onlyif => '/usr/bin/test $(/bin/find /apps/bmc/ctm -perm 2775 | wc -l) -eq 0',
require => User['ctmagent'],
}
exec { 'chown_/apps/bmc':
command => '/bin/chown ctmagent.controlm /apps/bmc',
unless => '/usr/bin/test -e /apps/bmc/ctm/controlm_agent_install.hasrun',
require => User['ctmagent'],
}
sudo::rule { 'controlm':
type => 'group',
runas_users => 'root',
commands => [
'/apps/bmc/ctm/scripts_optus/ctm.sh',
],
}
}

View File

@ -0,0 +1,10 @@
file { '/apps/bmc/ctm/ctm_silentinstall_optus.xml':
ensure => file,
owner => 'root',
group => 'root',
mode => '0755',
content => template('controlm/agent_install.erb'),
require => User['ctmagent'],
}

View File

@ -0,0 +1,13 @@
<AutomatedInstallation langpack="eng">
<target.product>Control-M/Agent 9.0.00</target.product>
<agent.parameters>
<entry key="field.Authorized.Controlm.Server.Host" value="<%= @server_host %>"/>
<entry key="ctm_agent.Tracker.Event.Port" value="<%= @tracker_port %>"/>
<entry key="field.Agent.To.Server.Port.Number" value="<%= @a2s_port %>"/>
<entry key="ctm_agent.Tcp_ip.Timeout" value="<%= @tcp_timeout %>"/>
<entry key="field.Server.To.Agent.Port.Number" value="<%= @s2a_port %>"/>
<entry key="Ignore.Disabling.Agent.Failure" value="<%= @ignore_fail %>"/>
<entry key="ctm_agent.Force.Upgrade" value="<%= @force_upgrade %>"/>
<entry key="field.Primary.Controlm.Server.Host" value="<%= @primary_server_host %>"/>
</agent.parameters>
</AutomatedInstallation>

View File

@ -0,0 +1,71 @@
#!/bin/bash
#
#Does install and patches if any
cd /apps/bmc/
sudo -u ctmagent /apps/bmc/software/version_9/setup.sh -silent /apps/bmc/ctm/ctm_silentinstall_optus.xml
RESULT=$?
echo "exit status $RESULT"
if [ $RESULT -ne 0 ] ; then exit $RESULT; fi
/bin/date > /apps/bmc/ctm/controlm_agent_install.hasrun
echo "exit status $RESULT" >> /apps/bmc/ctm/controlm_agent_install.hasrun
echo "do not remove this file unless you want to rerun the install" >> /apps/bmc/ctm/controlm_agent_install.hasrun
chmod 444 /apps/bmc/ctm/controlm_agent_install.hasrun
<% if @patch_files -%>
/bin/date > /apps/bmc/ctm/controlm_agent_patch_install.hasrun
# remove any old patches
rm -rf /apps/bmc/software/version_9/fixes/*INSTALL.BIN
. /etc/profile.d/controlm.sh
<% @patch_files.each do | file | -%>
echo "===================="
PATCH_RESULT=1
cd /apps/bmc/software/version_9/fixes
wget http://<%= scope.lookupvar('::razor_metadata_repo_server') -%>/files/bcc_source/controlm/<%= file %>
chmod 755 /apps/bmc/software/version_9/fixes/<%= file %>
sudo -u ctmagent /bin/bash - <<EOF
cd /apps/bmc/software/version_9/fixes
. /etc/profile.d/controlm.sh
/usr/bin/yes y | /apps/bmc/software/version_9/fixes/<%= file %>
EOF
PATCH_RESULT=$?
if [ $PATCH_RESULT -ne 0 ]
then
echo "patch <%= file -%> bad $PATCH_RESULT" >> controlm_agent_patch_install.hasrun
mv /apps/bmc/ctm/controlm_agent_patch_install.hasrun /apps/bmc/ctm/controlm_agent_patch_install.bad
exit $RESULT
fi
echo "patch exit status <%= file -%> $PATCH_RESULT"
# sleep to see if patches properly install
echo "sleeping for 10 "
sleep 10
<% end -%>
<% end -%>
# set correct hostnames
SHORT=`/bin/hostname -s`
LONG=`/bin/hostname -f`
echo "Changing short hostnames in CONFIG.dat"
cp -f /apps/bmc/ctm/data/CONFIG.dat /apps/bmc/ctm/data/CONFIG.dat.bak
/bin/sed -i "s/$SHORT$/$LONG/" /apps/bmc/ctm/data/CONFIG.dat
grep $SHORT /apps/bmc/ctm/data/CONFIG.dat
#change mode
/usr/bin/yes y | /apps/bmc/ctm/scripts/set_agent_mode -u ctmagent -o 1
# stop agent
sudo -u ctmagent /bin/bash - <<EOF
. /etc/profile.d/controlm.sh
cd /apps/bmc/ctm
/apps/bmc/ctm/scripts/shut-ag
EOF
/usr/bin/yes y | /apps/bmc/ctm/scripts/set_agent_mode -u ctmagent -o 2

View File

@ -0,0 +1,71 @@
#!/bin/sh
#
# chkconfig: 2345 97 02
# description: controlm agent
# set minimal PATH to make sure basic commands like grep and awk are recognized
PATH=/usr/sbin/:/usr/bin:/sbin:$PATH
export PATH
account_name="controlm"
install_path="<%= @install_dir %>"
# set config file name
config_file=$install_path/ctm/data/CONFIG.dat
# Get the agent status
AGENT_STATUS_FILE=$install_path/ctm/data/ctm_agent_status.dat
agent_status=`cat $AGENT_STATUS_FILE`
#Get input parameter start|stop|<empty> for backward compatibility
ARG1=`echo $1 | tr '[A-Z]' '[a-z]'`
if [ "$ARG1" = "start" ] || [ "$ARG1" = "stop" ] ; then
if [ "$ARG1" = "start" ] ; then
STATE_ACTION="start"
elif [ "$ARG1" = "stop" ] ; then
STATE_ACTION="stop"
fi
else
STATE_ACTION="start"
fi
if [ "$agent_status" = "STOPPED" ] ; then # AGENT_STATUS is set to 'STOPPED', exit without starting the Agent
echo "Control-M/Agent (account $account_name) status is set to 'STOPPED'. Control-M/Agent will not start."
exit 0
fi
# get the value for config parameter AGENT_OWNER to determine which owner should start the agent
# in case the parameter is missing or empty, start as root.
# This script is executed as root user by the OS during machine startup.
# If the agent should run as agent owner, use 'su' to run start-ag
agent_owner=`grep AGENT_OWNER $config_file | awk '{print $2}'`
if [ "$STATE_ACTION" = "start" ] ; then
if [ "$agent_owner" != "root" ] ; then
/bin/su - $agent_owner -c "$install_path/ctm/scripts/start-ag -u $account_name -p ALL"
else
$install_path/ctm/scripts/start-ag -u $account_name -p ALL
fi
else
# backup ctm_agent_status.dat to keep origional status
TMP_FILE_NAME="ctm_agent_status_dat-`date +'%Y-%m-%d_%H-%M-%S'`.tar"
cd $install_path/ctm/data ; tar -cf $TMP_FILE_NAME ctm_agent_status.dat
if [ "$agent_owner" != "root" ] ; then
/bin/su - $agent_owner -c "$install_path/ctm/scripts/shut-ag -u $account_name -p ALL"
else
$install_path/ctm/scripts/shut-ag -u $account_name -p ALL
fi
# restore ctm_agent_status.dat to origional
cd $install_path/ctm/data ; tar -xf $TMP_FILE_NAME ; rm -f $TMP_FILE_NAME
fi
exit 0

View File

View File

@ -0,0 +1,5 @@
class role::callaugeas {
include controlm::controlm_agent
}