...
- Install NMIS8 at /usr/local/nmis8 on a new VM with desired operating system created for the purpose of assembling opReports-3.5.2-standalone.tar.gz
- Install the needed version of opReports at the default install directory /usr/local/omk
In this case we checked out git tag opReports-3.5.2 and built standalone opReports:
Code Block sudo ./build/make_opreports_standalone_release 3.5.2 2
- The above command generates both the normal opReports installer runfile and leaves a directory on snotra3 /usr/local/opmojo_abi3/standalone_bin/ which contains the standalone binary and symbolic links in the snotra3 /usr/local/opmojo_abi3/standalone_bin/install/ directory that represent the standalone scripts that replace the /usr/local/opmojo_abi3/bin/ scripts in a standalone installation as set out in the next code box.
Create our custom install of opReports at /opt/omk
/opt/cd
/opt
sudo
cp
-rf
/usr/local/omk
/opt
sudo
chown
-R root:nmis
/opt/omk
cd
/opt/omk/
# make sure we are in /opt/omk/
pwd
/opt/omk
# clean up
sudo
rm
-rf ./{log/*,var/*,bin,lib/,script/,manifest,
install
.log}
# fetch specially built standalone binaries and uncompress to /opt/omk/bin-standalone/ directory - which we then rename to ./bin/ directory:
sudo
tar
-xzvf opReports-3.5.2-standalone_bin.
tar
.gz
sudo
rm
opReports-3.5.2-standalone_bin.
tar
.gz
sudo
mv
standalone_bin bin
# verify the files we are going to edit (change directory from /usr/local/omk to /opt/omk)
sudo
grep
-arRnF
"/usr/local/omk"
"/opt/omk"
2>&1|grep -v /opt/omk/bin/install/
/opt/omk/install/opconfigd
.service.bak:20:ExecStart=
/usr/local/omk/bin/opconfigd
.pl
/opt/omk/install/cron
.d
/opreports
:4:*
/5
* * * * root
/usr/local/omk/bin/opreports-scheduler
.exe
/opt/omk/install/cron
.d
/oplicense
:4:8 5 * * * root
/usr/local/omk/bin/oplicense-cli
.pl act=refresh_bundle_licenses quiet=1
/opt/omk/install/opeventsd
.service.bak:20:ExecStart=
/usr/local/omk/bin/opeventsd
.pl
/opt/omk/install/opCommon
.nmis:27:
'<omk_base>'
=>
'/usr/local/omk'
,
/opt/omk/install/omkd
.init.d.bak:26:DAEMON=
/usr/local/omk/script/opmantek
.pl
/opt/omk/install/omkd
.service:20:ExecStart=
/usr/local/omk/script/opmantek
.pl -f -p
/var/run/opmantek
.exe.pid -r
/opt/omk/install/omk-rotate
.conf:8:
/usr/local/omk/log/
*.log
/opt/omk/install/omk-rotate
.conf:27:
/usr/local/omk/log/snow_api
.log
/opt/omk/install/opflowd
.service.bak:20:ExecStart=
/usr/local/omk/bin/opflowd
.pl
/opt/omk/install/opchartsd
.service.bak:20:ExecStart=
/usr/local/omk/bin/opchartsd
.pl
/opt/omk/install/schedule/example_snapshot
.json:6:
"outputdir"
:
"/usr/local/omk/var/reports"
,
/opt/omk/install/schedule/health-businesshours
.json:10:
"outputdir"
:
"/usr/local/omk/var/reports"
,
/opt/omk/install/schedule/monthly_qos
.json:11:
"outputdir"
:
"/usr/local/omk/var/reports"
,
/opt/omk/install/schedule/weekend
.json:11:
"outputdir"
:
"/usr/local/omk/var/reports"
,
/opt/omk/install/schedule/daily
.json:16:
"outputdir"
:
"/usr/local/omk/var/reports"
,
/opt/omk/install/schedule/util_oneoff
.json:12:
"outputdir"
:
"/usr/local/omk/var/reports"
,
/opt/omk/conf/opeventsd
.service:20:ExecStart=
/usr/local/omk/bin/opeventsd
.pl
/opt/omk/conf/opconfigd
.service:20:ExecStart=
/usr/local/omk/bin/opconfigd
.pl
/opt/omk/conf/opCommon
.nmis:35:
'<omk_base>'
=>
'/usr/local/omk'
,
/opt/omk/conf/opflowd
.service:20:ExecStart=
/usr/local/omk/bin/opflowd
.pl
/opt/omk/conf/opCommon
.nmis.prepatch:27:
'<omk_base>'
=>
'/usr/local/omk'
,
/opt/omk/conf/omkd
.service:20:ExecStart=
/usr/local/omk/script/opmantek
.pl -f -p
/var/run/opmantek
.exe.pid -r
/opt/omk/conf/omk-rotate
.conf:8:
/usr/local/omk/log/
*.log
/opt/omk/conf/omk-rotate
.conf:27:
/usr/local/omk/log/snow_api
.log
/opt/omk/conf/opchartsd
.service:20:ExecStart=
/usr/local/omk/bin/opchartsd
.pl
/opt/omk/conf/omkd
.init.d:26:DAEMON=
/usr/local/omk/script/opmantek
.pl
/opt/omk/conf/schedule/example_snapshot
.json:84:
"outputdir"
:
"/usr/local/omk/var/reports"
,
/opt/omk/conf/schedule/health-businesshours
.json:13:
"outputdir"
:
"/usr/local/omk/var/reports"
,
/opt/omk/conf/schedule/monthly_qos
.json:2:
"outputdir"
:
"/usr/local/omk/var/reports"
,
/opt/omk/conf/schedule/weekend
.json:25:
"outputdir"
:
"/usr/local/omk/var/reports"
,
/opt/omk/conf/schedule/daily
.json:28:
"outputdir"
:
"/usr/local/omk/var/reports"
/opt/omk/conf/schedule/util_oneoff
.json:10:
"outputdir"
:
"/usr/local/omk/var/reports"
,
/opt/omk/templates/unauthorised
.html.ep:37:% my $log_dir = $self->config->{
'<omk_logs>'
} ||
"/usr/local/omk/logs/"
;
/opt/omk/templates/unauthorised
.html.ep:38:% my $conf_dir = $self->config->{
'<omk_conf>'
} ||
"/usr/local/omk/conf"
;
/opt/omk/templates/unauthorised
.html.ep:39:% my $base_dir = $self->config->{
'<omk_base>'
} ||
"/usr/local/omk/"
;
/opt/omk/templates/exception
.html.ep:38:% my $log_dir = $self->config->{
'<omk_logs>'
} ||
"/usr/local/omk/logs/"
;
/opt/omk/templates/exception
.html.ep:39:% my $conf_dir = $self->config->{
'<omk_conf>'
} ||
"/usr/local/omk/conf"
;
/opt/omk/templates/exception
.html.ep:40:% my $base_dir = $self->config->{
'<omk_base>'
} ||
"/usr/local/omk/"
;
/opt/omk/templates/not_found
.production.html.ep:38:% my $log_dir = $self->config->{
'<omk_logs>'
} ||
"/usr/local/omk/logs/"
;
/opt/omk/templates/not_found
.production.html.ep:39:% my $conf_dir = $self->config->{
'<omk_conf>'
} ||
"/usr/local/omk/conf"
;
/opt/omk/templates/not_found
.production.html.ep:40:% my $base_dir = $self->config->{
'<omk_base>'
} ||
"/usr/local/omk/"
;
# edit the above files:
sudo
sh -c
'grep -arRnFl "/usr/local/omk" "/opt/omk/" 2>&1|grep -v /opt/omk/bin/install/|while read LINE; do sed -i "s!/usr/local/omk!/opt/omk!g" "${LINE}";done;'
# verify all files have been edited - returns nothing if all references to /usr/local/omk have been corrected to /opt/omk
sudo
grep
-arRnF
"/usr/local/omk"
"/opt/omk"
2>&1|grep -v /opt/omk/bin/install/
# edit executable names in /opt/omk/install directory - our executables are all changed from old.pl to old-standalone.pl and old.exe to old-standalone.exe:
# verify the files that may need editing:
sudo grep -arRnF "/opt/omk" /opt/omk/install/
/opt/omk/install/opconfigd
.service.bak:20:ExecStart=
/opt/omk/bin/opconfigd
.pl
/opt/omk/install/cron
.d
/opreports
:4:*
/5
* * * * root
/opt/omk/bin/opreports-scheduler
.exe
/opt/omk/install/cron
.d
/oplicense
:4:8 5 * * * root
/opt/omk/bin/oplicense-cli
.pl act=refresh_bundle_licenses quiet=1
/opt/omk/install/opeventsd
.service.bak:20:ExecStart=
/opt/omk/bin/opeventsd
.pl
/opt/omk/install/opCommon
.nmis:27:
'<omk_base>'
=>
'/opt/omk/'
,
/opt/omk/install/omkd
.init.d.bak:26:DAEMON=
/opt/omk/script/opmantek
.pl
/opt/omk/install/omkd
.service:20:ExecStart=
/opt/omk/script/opmantek
.pl -f -p
/var/run/opmantek
.exe.pid -r
/opt/omk/install/omk-rotate
.conf:8:
/opt/omk/log/
*.log
/opt/omk/install/omk-rotate
.conf:27:
/opt/omk/log/snow_api
.log
/opt/omk/install/opflowd
.service.bak:20:ExecStart=
/opt/omk/bin/opflowd
.pl
/opt/omk/install/opchartsd
.service.bak:20:ExecStart=
/opt/omk/bin/opchartsd
.pl
/opt/omk/install/schedule/example_snapshot
.json:6:
"outputdir"
:
"/opt/omk/var/reports"
,
/opt/omk/install/schedule/health-businesshours
.json:10:
"outputdir"
:
"/opt/omk/var/reports"
,
/opt/omk/install/schedule/monthly_qos
.json:11:
"outputdir"
:
"/opt/omk/var/reports"
,
/opt/omk/install/schedule/weekend
.json:11:
"outputdir"
:
"/opt/omk/var/reports"
,
/opt/omk/install/schedule/daily
.json:16:
"outputdir"
:
"/opt/omk/var/reports"
,
/opt/omk/install/schedule/util_oneoff
.json:12:
"outputdir"
:
"/opt/omk/var/reports"
,
# edit the daemons at /opt/omk/install/*.service*
sudo
sh -c
"echo \"$(for DAEMON in 'opchartsd' 'opconfigd' 'opeventsd' 'opflowd'; do sudo sed -i 's!/'"
${DAEMON}
"'\.!/'"
${DAEMON}
"'-standalone.!g' "
/opt/omk/install/
${DAEMON}.service
"*;done;)\";"
# edit /opt/omk/install/omkd
.service
sudo
sed
-i -e
's!/script/!/bin/!g'
-e
's!opmantek\.pl!opmantek-standalone.pl!g'
-e
's!opmantek\.exe!opmantek-standalone.exe!g'
/opt/omk/install/omkd
.service;
sudo
sed
-i -e
's!/script/!/bin/!g'
-e
's!opmantek\.pl!opmantek-standalone.pl!g'
-e
's!opmantek\.exe!opmantek-standalone.exe!g'
/opt/omk/install/omkd
.init*;
# edit cronjobs
sudo
sed
-i -e
's!/opt/omk/bin/opreports-scheduler.pl!/opt/omk/bin/opreports-scheduler-standalone.pl!g'
-e
's!/opt/omk/bin/opreports-scheduler.exe!/opt/omk/bin/opreports-scheduler-standalone.exe!g'
/opt/omk/install/cron
.d
/opreports
;
sudo
sed
-i -e
's!/opt/omk/bin/oplicense-cli.pl!/opt/omk/bin/oplicense-cli-standalone.pl!g'
-e
's!/opt/omk/bin/oplicense-cli.exe!/opt/omk/bin/oplicense-cli-standalone.exe!g'
/opt/omk/install/cron
.d
/oplicense
;
# prevent a clash on filenames where we can have two systemd services:
sudo
mv
/opt/omk/install/omkd
.service
/opt/omk/install/omkd-standalone
.service
# prevent a clash on filenames where we can have two initd services:
sudo
mv
/opt/omk/install/omkd
.init.d.bak
/opt/omk/install/omkd-standalone
.init.d.bak
# prevent a clash on filenames where we can have two cron files:
sudo
mv
/opt/omk/install/cron
.d
/oplicense
/opt/omk/install/cron
.d
/oplicense-standalone
# verify our edits are complete:
sudo
grep
-arRnF
"/opt/omk"
/opt/omk/install/
/opt/omk/install/opconfigd
.service.bak:20:ExecStart=
/opt/omk/bin/opconfigd-standalone
.pl
/opt/omk/install/cron
.d
/opreports
:4:*
/5
* * * * root
/opt/omk/bin/opreports-scheduler-standalone
.exe
/opt/omk/install/cron
.d
/oplicense-standalone
:4:8 5 * * * root
/opt/omk/bin/oplicense-cli-standalone
.pl act=refresh_bundle_licenses quiet=1
/opt/omk/install/opeventsd
.service.bak:20:ExecStart=
/opt/omk/bin/opeventsd-standalone
.pl
/opt/omk/install/opCommon
.nmis:27:
'<omk_base>'
=>
'/opt/omk/'
,
/opt/omk/install/omkd-standalone
.service:20:ExecStart=
/opt/omk/bin/opmantek-standalone
.pl -f -p
/var/run/opmantek-standalone
.exe.pid -r
/opt/omk/install/omk-rotate
.conf:8:
/opt/omk/log/
*.log
/opt/omk/install/omk-rotate
.conf:27:
/opt/omk/log/snow_api
.log
/opt/omk/install/opflowd
.service.bak:20:ExecStart=
/opt/omk/bin/opflowd-standalone
.pl
/opt/omk/install/opchartsd
.service.bak:20:ExecStart=
/opt/omk/bin/opchartsd-standalone
.pl
/opt/omk/install/omkd-standalone
.init.d.bak:26:DAEMON=
/opt/omk/bin/opmantek-standalone
.pl
/opt/omk/install/schedule/example_snapshot
.json:6:
"outputdir"
:
"/opt/omk/var/reports"
,
/opt/omk/install/schedule/health-businesshours
.json:10:
"outputdir"
:
"/opt/omk/var/reports"
,
/opt/omk/install/schedule/monthly_qos
.json:11:
"outputdir"
:
"/opt/omk/var/reports"
,
/opt/omk/install/schedule/weekend
.json:11:
"outputdir"
:
"/opt/omk/var/reports"
,
/opt/omk/install/schedule/daily
.json:16:
"outputdir"
:
"/opt/omk/var/reports"
,
/opt/omk/install/schedule/util_oneoff
.json:12:
"outputdir"
:
"/opt/omk/var/reports"
,
# yes, they are
# now some final fine tuning
# we want opCommon.nmis configurations to point at '/usr/local/omk/var/reports'
# so that opreports-cli-standalone.exe and opreports-scheduler-standalone.exe generated reports are placed at this location:
sudo
/usr/local/omk/bin/patch_config
.exe -f
/opt/omk/install/opCommon
.nmis
/directories/
'<omk_reports>'
=
'/usr/local/omk/var/reports'
Operating on config
file
:
/opt/omk/install/opCommon
.nmis
Patching values
for
keys
/directories/
<omk_reports>
Patching element
/directories/
<omk_reports>, patch
/directories/
<omk_reports>
sudo
/usr/local/omk/bin/patch_config
.exe -f
/opt/omk/conf/opCommon
.nmis
/directories/
'<omk_reports>'
=
'/usr/local/omk/var/reports'
Operating on config
file
:
/opt/omk/conf/opCommon
.nmis
Patching values
for
keys
/directories/
<omk_reports>
Patching element
/directories/
<omk_reports>, patch
/directories/
<omk_reports>
sudo
/usr/local/omk/bin/patch_config
.exe -f
/opt/omk/install/opCommon
.nmis
/directories/
'<omk_reports_ondemand>'
=
'/usr/local/omk/var/reports/on-demand'
Operating on config
file
:
/opt/omk/install/opCommon
.nmis
Patching values
for
keys
/directories/
<omk_reports_ondemand>
Patching element
/directories/
<omk_reports_ondemand>, patch
/directories/
<omk_reports_ondemand>
sudo
/usr/local/omk/bin/patch_config
.exe -f
/opt/omk/conf/opCommon
.nmis
/directories/
'<omk_reports_ondemand>'
=
'/usr/local/omk/var/reports/on-demand'
Operating on config
file
:
/opt/omk/conf/opCommon
.nmis
Patching values
for
keys
/directories/
<omk_reports_ondemand>
Patching element
/directories/
<omk_reports_ondemand>, patch
/directories/
<omk_reports_ondemand>
# verify these changes to opCommon.nmis:
sudo
grep
-arRnF
"/var/reports"
/opt/omk/
{
install
,conf}
/opCommon
.nmis
/opt/omk/install/opCommon
.nmis:48:
'<omk_reports>'
=>
'/usr/local/omk/var/reports'
,
/opt/omk/install/opCommon
.nmis:49:
'<omk_reports_ondemand>'
=>
'/usr/local/omk/var/reports/on-demand'
,
/opt/omk/conf/opCommon
.nmis:48:
'<omk_reports>'
=>
'/usr/local/omk/var/reports'
,
/opt/omk/conf/opCommon
.nmis:49:
'<omk_reports_ondemand>'
=>
'/usr/local/omk/var/reports/on-demand'
,
# we want opCommon.nmis configurations to point at '/usr/local/omk/var/reports'
sudo
/usr/local/omk/bin/patch_config
.exe -f
/opt/omk/install/opCommon
.nmis
/directories/
'<omk_schedule>'
=
'/usr/local/omk/conf/schedule'
Operating on config
file
:
/opt/omk/install/opCommon
.nmis
Patching values
for
keys
/directories/
<omk_schedule>
Patching element
/directories/
<omk_schedule>, patch
/directories/
<omk_schedule>
sudo
/usr/local/omk/bin/patch_config
.exe -f
/opt/omk/conf/opCommon
.nmis
/directories/
'<omk_schedule>'
=
'/usr/local/omk/conf/schedule'
Operating on config
file
:
/opt/omk/conf/opCommon
.nmis
Patching values
for
keys
/directories/
<omk_schedule>
Patching element
/directories/
<omk_schedule>, patch
/directories/
<omk_schedule>
# verify this change to opCommon.nmis:
sudo
grep
-arRnF
"/conf/schedule"
/opt/omk/
{
install
,conf}
/opCommon
.nmis
/opt/omk/install/opCommon
.nmis:50:
'<omk_schedule>'
=>
'/usr/local/omk/conf/schedule'
,
/opt/omk/conf/opCommon
.nmis:50:
'<omk_schedule>'
=>
'/usr/local/omk/conf/schedule'
,
# finally change our listen port for the omkd-standalone service|daemon from default 8042 to another available port, here 8043:
sudo
/usr/local/omk/bin/patch_config
.exe -f
/opt/omk/install/opCommon
.nmis
/omkd/omkd_listen_port
=8043
Operating on config
file
:
/opt/omk/install/opCommon
.nmis
Patching values
for
keys
/omkd/omkd_listen_port
Patching element
/omkd/omkd_listen_port
, patch
/omkd/omkd_listen_port
sudo
/usr/local/omk/bin/patch_config
.exe -f
/opt/omk/conf/opCommon
.nmis
/omkd/omkd_listen_port
=8043
Operating on config
file
:
/opt/omk/conf/opCommon
.nmis
Patching values
for
keys
/omkd/omkd_listen_port
Patching element
/omkd/omkd_listen_port
, patch
/omkd/omkd_listen_port
# verify these changes to opCommon.nmis:
sudo
grep
-arRnF
"omkd_listen_port"
/opt/omk/
{
install
,conf}
/opCommon
.nmis
/opt/omk/install/opCommon
.nmis:118:
'omkd_listen_port'
=>
'8043'
,
/opt/omk/conf/opCommon
.nmis:123:
'omkd_listen_port'
=>
'8043'
,
# rename install/04omk-proxy.conf and change port to 8043:
sudo
mv
-f
install
/04omk-proxy
.conf
install
/05omk-standalone-proxy
.conf
sudo
sed
-i
's~localhost:8042/~localhost:8043/~g'
install
/05omk-standalone-proxy
.conf
# confirm:
cat install/05omk-standalone-proxy.conf
# ensure groups are still correct on omk directory structure
cd
/opt/omk/
sudo
chown
-R root:nmis
/opt/omk
# confirm
ls
-lah .
total 52K
drwxr-xr-x 9 root nmis 4.0K Mar 30 07:36 .
drwxr-xr-x 5 root staff 4.0K Mar 30 07:48 ..
drwxrwsr-x 3 root nmis 4.0K Mar 29 09:21 bin
drwxr-xr-x 3 root nmis 4.0K Mar 30 07:06 conf
drwxr-xr-x 4 root nmis 4.0K Mar 30 23:57
install
-rw-r--r-- 1 root nmis 16K Mar 30 05:09 LICENSE
drwxr-xr-x 2 root nmis 4.0K Mar 30 07:40 log
drwxr-xr-x 3 root nmis 4.0K Mar 30 05:09 public
drwxr-xr-x 8 root nmis 4.0K Mar 30 05:42 templates
drwxr-xr-x 3 root nmis 4.0K Mar 30 07:40 var
# final clean:
sudo
rm
-rf
/opt/omk/var/reports/
*
sudo
rm
-rf
/opt/omk/var/opreports/
*
# create the tar archive:
cd /opt/sudo
tar
-czvf opReports-3.5.2-standalone.
tar
.gz omk
# confirm
ls
-lah opReports-3.5.2-standalone.
tar
.gz
-rw-r--r-- 1 root root 72M Mar 30 07:49 opReports-3.5.2-standalone.
tar
.gz