...
For more detailed explanation of the parameters have a look at the yade documentaiton.
settings | The file with the profiles, one for each JobSchedule Universal Agent | installation/transfert/settings |
profile | The name of the profile for the actual installation. Default=<host>:<port> | installation/transfer/profile |
file_spec | a regular expression that defines the set of files that should be transfered | installation/transfer/file_spec |
target_host | the host to which the files should be transfered | installation/transfer/target/host |
target_port | the port according to the given protocol (e.g. 21 when protocol is ftp) | installation/transfer/target/port |
target_protocol | the protocol with wich the target will be transered (ftp, sftp, file, local) | installation/transfer/target/protocol |
target_user | the user (if the protocol needs one) with wich the target will be transered | installation/transfer/target/user |
target_password | the password (if the protocol needs one) with wich the target will be transered | installation/transfer/target/password |
target_dir | the location where the files will be copied to | installation/transfer/target/dir |
target_ssh_auth_method | the authentication method if the protocol is ssh. | installation/transfer/target/auth_method |
target_ssh_auth_file | the authentication file if the protocol is ssh and auth_method is publickey | installation/transfer/target/auth_file |
source_host | the host from where the files should be transfered | installation/transfer/source/host |
source_port | the port according to the given protocol (e.g. 21 when protocol is ftp) | installation/transfer/source/port |
source | the protocol with wich the source will be transered (ftp, sftp, file, local) | installation/transfer/source/protocol |
source_user | the user (if the protocol needs one) with wich the source will be transered | installation/transfer/source/user |
source_password | the password (if the protocol needs one) with wich the source will be transered | installation/transfer/source/password |
source_dir | the location from where the files will be copied | installation/transfer/source/dir |
source_ssh_auth_method | the authentication method if the protocol is ssh. | installation/transfer/source/auth_method |
source_ssh_auth_file | the authentication file if the protocol is ssh and auth_method is publickey | installation/transfer/source/auth_file |
...
The job AgentBatchInstaller reads an the input file and creates orders for each element <installation>
...
- For all elements you can define defaults in the globals section
- You can use variables for the values e.g. ${ssh.host}
- It is recommended to specify the filename of the YADE settings in the globals element and use the default profile name. When doing this, no installation/transfer elements are needed
Parameters
Parameter | Description | Example |
---|---|---|
installation_definition_file | The xml file that contains all parameters for the batch installation | c:\batch\batchinstall.xml |
filter_install_host | A host name if only one order should be created that matches the given host | myAgent |
filter_install_port | A port if only one order should be created that matches the given host | 4445 |
installation_job_chain | The name of the job chain for which the orders should be created | /batch_install_universal_agent/universal_agent_installer |
update | If true an order for all <instances> will be created. If false an order for <instances> that do not have the last_run attribute will be created | true |
...
The installation input file contains a <installation> element for each JobScheduler Universal Agent instance.
The minimum Example for the xml configuration file:
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTFutf-8" standalone="yes"?> <installations lastRun="2015-11-0906 1615:11"> <globals> <install_path>/home/test/temp/xxx</install_path><transfer> <transfer><settings><![CDATA[C:\Temp\batch_install\yade_agent_batch_installer_settings.ini]]></settings> </transfer> </globals> <installation <operation>copy</operation>lastRun="2015-11-06 15:11"> <install_path><![CDATA[/home/test/temp/xxx]]></install_path> <agent_options> <file_spec>.*\.(sh|gz)$</file_spec> <scheduler_http_port>4445</scheduler_http_port> <scheduler_ip_address><![CDATA[192.11.0.116]]></scheduler_ip_address> <source></agent_options> <ssh> <host>localhost</host><user><![CDATA[test]]></user> <port></port><password><![CDATA[12345]]></password> <sudo_password><![CDATA[12345]]></sudo_password> <protocol>local</protocol><auth_method><![CDATA[password]]></auth_method> <user></user><port><![CDATA[22]]></port> <password></password></ssh> <postprocessing> <dir>C:\Temp\batch_install</dir> <command><![CDATA[echo ${ssh.sudo_password} | sudo cp ${install_path}/bin/jobscheduler_agent.sh /etc/init.d/jobscheduler]]></command> <ssh_auth_method>ssh_auth_method</ssh_auth_method> <ssh_auth_file></ssh_auth_file> </source> <target> <command><![CDATA[echo ${ssh.sudo_password} | sudo update-rc.d jobscheduler defaults]]></command> </postprocessing> </installation> </installations> |
In the global entry, you specify the values which are used for all installation items. The installation items can overwrite these values. There is one installation item for each agent. You can make use of substitution in the values of the entries.
Code Block | ||
---|---|---|
| ||
<command>echo ${ssh.sudo_password} | sudo cp <host>192.11.0.116</host> <port>22</port> <protocol>sftp</protocol> <user>test</user> <password>12345</password> <dir>/home/test/temp/</dir> <ssh_auth_method>password</ssh_auth_method> <ssh_auth_file></ssh_auth_file> </target> </transfer> <ssh> <host>192.11.0.116</host> <port>22</port> </ssh> </globals> <installation lastRun="2015-11-09 16:11"> <install_path></install_path> <agent_options> <java_home>java home</java_home> <java_options>java options</java_options> <scheduler_home>scheduler home</scheduler_home> <scheduler_http_port>4445</scheduler_http_port> <scheduler_ip_address>192.11.0.116</scheduler_ip_address> <scheduler_user>scheduler user</scheduler_user> <scheduler_log_dir>scheduler log dir</scheduler_log_dir> <scheduler_kill_script>scheduler kill script</scheduler_kill_script> <scheduler_pid_file_dir>scheduler pid file dir</scheduler_pid_file_dir> </agent_options> <transfer> <operation>copy</operation> <file_spec>.*\.(sh|gz)$</file_spec> <source> <host></host> <port></port> <protocol></protocol> <user></user> <password></password> <ssh_auth_method>ssh_auth_method</ssh_auth_method> <ssh_auth_file></ssh_auth_file> </source> <target> <host></host> <port></port> <protocol></protocol> <user></user> <password></password> <ssh_auth_method></ssh_auth_method> <ssh_auth_file></ssh_auth_file> </target> </transfer> <ssh> <user>test</user> <password>12345</password> <sudo_password>12345</sudo_password> <auth_method>password</auth_method> <auth_file></auth_file> <port>22</port> </ssh> <postprocessing> <command>echo ${ssh.sudo_password} | sudo cp ${install_path}/bin/jobscheduler_agent.sh /etc/init.d/jobscheduler</command> <command>echo ${ssh.sudo_password} | sudo update-rc.d jobscheduler defaults</command> </postprocessing> </installation> </installations |
In the global entry, you specify the values which are used for all installation items. The installation items can overwrite these values. There is one installation item for each agent. You can make use of substitution in the values of the entries.
Code Block | ||
---|---|---|
| ||
<command>echo ${ssh.sudo_password} | sudo cp ${install_path}/bin/jobscheduler_agent.sh /etc/init.d/jobscheduler</command>
|
Using the XML Editor
Then XML Editor can be used to manage the installation input file.
The XML Editor is available here: http://www.sos-berlin.com/xml-editor-downloads
After downloading the file, extrac the zip file. Then start "sos.xml.editor.exe"
Open your installtion input file an assign the schema scheduler_universal_agent_installations.xsd
${install_path}/bin/jobscheduler_agent.sh /etc/init.d/jobscheduler</command>
|
Using the XML Editor
Then XML Editor can be used to manage the installation input file. It is also used th manage the YADE profiles for the transfer of the installation file
The XML Editor is available here: http://www.sos-berlin.com/xml-editor-downloads
After downloading the file, extrac the zip file. Then start "sos.xml.editor.exe"
Open your installtion input file an assign the schema scheduler_universal_agent_installations.xsd
Managing the YADE profiles for the file transfer
Each installation has a profile in the YADE settings file. The default profile name is <host>:<port> where <host> will be substituted with the value in installation/agent_option/scheduler_ip_address and <port> will be substituted with the value in installation/agent_option/scheduler_http_port.
- Please specify the name of the YADE settings file in globals/settings.
- Open the YADE settings file (or create a new one).
- Assign the schema http://www.sos-berlin.com/schema/yade/YADE_configuration_v1.0.xsd
- Add <ProtocolFragments> for each host you want install JobScheduler Universal Agent
- Add <Profile> for each host you want install JobScheduler Universal Agent.
- The default for the profile_id is <host>:<port> If you do not use the default, you have to specify the profile name in the installations input file.
Installation of the Batch Installer for the JobScheduler Universal Agent
...
- copy the content of the live folder to the live folder of a JobScheduler instance
- copy the content of the folder batch_install to any folder
- create an an installation input file
- adjust the parameter values for the job AgentBatchInstaller
- set the name for settings file in the installation input file adjust the parameter values for the job AgentBatchInstaller(globals/transfer/settings)
- create the YADE settings file
- Add <ProtocolFragments> for each host you want install JobScheduler Universal Agent
- Add a <Profile> for each host you want install JobScheduler Universal Agent.
Files
The Zip file for the JobScheduler Universal Agent batch installer contains
...
Contains the configuration for the batch installer starter job. The job will read the batch installation file that contains an entry for each Agent and create an order for the batch installer job chain for each Agent that should be installed/updated
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<job name="BatchInstaller"<job name="BatchInstaller"> <params > <param name="installation_definition_file" value="c:\temp\batchinstall.xml"/> <param name="filter_install_host" value=""/> <param name="filter_install_port" value=""/<params > <param name="installation_jobdefinition_chainfile" value="/batch_install_universal_agent/universal_agent_installerc:\temp\batchinstall.xml"/> <param name="updatefilter_install_host" value="true"/> </params> <script<param languagename="java" javafilter_classinstall_path="port" java_classvalue="com.sos.jitl.agentbatchinstaller.JSUniversalAgentBatchInstallerJSAdapterClass"/> <run_time /> </job> |
CheckPreRequisite.job.xml
Contains the configuration for the job that checks the prerequisites.
The job is implemented by the JITL SSH job. The script that will be exexuted to check the prerequisites is defined in the script tag of the job.
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="ISO-8859-1"?> <job title="Launch remote commands or executable files by SSH" order="yes" stop_on_error="no" <param name="installation_job_chain" value="/batch_install_universal_agent/universal_agent_installer"/> <param name="update" value="true"/> <description ></params> <script language="java" <include file="jobs/JobSchedulerSSHJob.xmljava_class_path="" java_class="com.sos.jitl.agentbatchinstaller.JSUniversalAgentBatchInstallerJSAdapterClass"/> </description> <params /> <script language="java" java_class="sos.scheduler.job.SOSSSHJob2JSAdapter"> <![CDATA[ echo .JobScheduler Universal Agent echo .checking prerequisites ${install_path} echo .checking Java Runtime Version >= 1.8? ...... JAVA_VER=$(java -version 2>&1 | sed 's/java version "\(.*\)\.\(.*\)\..*"/\1\2/; 1q') if [ "$JAVA_VER" > "18" ] then echo ..java version: $JAVA_VER ok else echo ..wrong Java version found echo ..expectet version is >= 1.8 echo ..installed version is $JAVA_VER exit 8 fi echo .checking whether JobScheduler Universal Agent is already installed? if [ -f ${install_path}/jobscheduler_agent/bin/jobscheduler_agent.sh ] then echo ..JobScheduler Universal Agent already installed echo ..shutting down JobScheduler Universal Agent ${install_path}/jobscheduler_agent/bin/jobscheduler_agent.sh stop echo ..removing installation from ${install_path} rm -Rf ${install_path}/lib else echo .. this is the first installation of JobScheduler Universal Agent fi exit $? ]]> </script> <run_time /> </job> |
TransferInstallationSetup.job.xml
Contains the configuration for the job that transfers the installation files.
The job is implemented by the JITL YADE job.
<run_time />
</job> |
CheckPreRequisite.job.xml
Contains the configuration for the job that checks the prerequisites.
The job is implemented by the JITL SSH job. The script that will be exexuted to check the prerequisites is defined in the script tag of the job.
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="ISO-8859-1"?>
<job title="Launch remote commands or executable files by SSH" order="yes" stop_on_error="no">
<description >
<include file="jobs/JobSchedulerSSHJob.xml"/>
</description>
<params />
<script language="java" java_class="sos.scheduler.job.SOSSSHJob2JSAdapter">
<![CDATA[
echo .JobScheduler Universal Agent
echo .checking prerequisites ${install_path}
echo .checking Java Runtime Version >= 1.8? ......
JAVA_VER=$(java -version 2>&1 | sed 's/java version "\(.*\)\.\(.*\)\..*"/\1\2/; 1q')
if [ "$JAVA_VER" > "18" ]
then
echo ..java version: $JAVA_VER ok
else
echo ..wrong Java version found
echo ..expectet version is >= 1.8
echo ..installed version is $JAVA_VER
exit 8
fi
echo .checking whether JobScheduler Universal Agent is already installed?
if [ -f ${install_path}/jobscheduler_agent/bin/jobscheduler_agent.sh ]
then
echo ..JobScheduler Universal Agent already installed
echo ..shutting down JobScheduler Universal Agent
${install_path}/jobscheduler_agent/bin/jobscheduler_agent.sh stop
echo ..removing installation from ${install_path}
rm -Rf ${install_path}/lib
else
echo .. this is the first installation of JobScheduler Universal Agent
fi
exit $?
]]>
</script> | ||||
Code Block | ||||
| ||||
<?xml version="1.0" encoding="ISO-8859-1"?>
<job title="API Job for JobScheduler Advanced Data Exchange" order="yes" stop_on_error="no">
<description >
<include file="jobs/jadeJob.xml"/>
</description>
<environment >
<variable name="test" value="1"/>
</environment>
<script language="java" java_class="sos.scheduler.jade.JadeJob"/>
<run_time />
</job> |
...
TransferInstallationSetup.job.xml
Contains the configuration for the job that executes transfers the installation of the JobScheduler Universal Agentfiles.
The job is implemented by the JITL ssh YADE job..
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="ISO-8859-1"?>
<job title="API Job for JobScheduler Advanced Data Exchange" order="yes" stop_on_error="no">
<description >
<include file="jobs/jadeJob.xml"/>
</description>
<environment >
<variable name="test" value="1"/>
</environment>
<script language="java" java_class="sos.scheduler.jade.JadeJob"/>
<run_time />
</job> |
PerformInstall.job.xml
Contains the configuration for the job that executes the installation of the JobScheduler Universal Agent
The job is implemented by the JITL ssh job.
Code Block | ||||
---|---|---|---|---|
| ||||
<job title="Launch remote commands or executable files by SSH" order="yes" stop_on_error="no" name="PerformInstall"> <description <job title="Launch remote commands or executable files by SSH" order="yes" stop_on_error="no" name="PerformInstall"> <description > <include file="jobs/JobSchedulerSSHJob.xml"/> </description> <params /> <script language="java" java_class="sos.scheduler.job.SOSSSHJob2JSAdapter"> <![CDATA[ echo Executing PerformInstall ${target_dir} chmod a+x ${target_dir}/jobscheduler_universal_agent_install.sh ${target_dir}/jobscheduler_universal_agent_install.sh -d${install_path} test -z "${command_1}" || "${command_1}" rc=$? test $rc -eq 0 && test -z "${command_2}" || "${command_2}" rc=$? test $rc -eq 0 && test -z "${command_3}" || "${command_3}" exit $? ]]> </script> <monitor name="templateProcessor" ordering="1"> <script<include languagefile="java:javascript"jobs/JobSchedulerSSHJob.xml"/> </description> <![CDATA[ function spooler_process_before(){ var order = spooler_task.order; var source_dir = order.params.value("PerformInstall/source_dir"); var scheduler_http_port = order.params.value("scheduler_http_port"); var templateProcessor = new Packages.com.sos.jitl.agentbatchinstaller.JSUniversalAgentBatchInstallerProcessTemplate(); templateProcessor.execute(source_dir+"/jobscheduler_agent_instance_script.txt",source_dir+"/jobscheduler_agent_" + scheduler_http_port + ".sh",spooler_task.order.delegate); return true; } ]]><params /> <script language="java" java_class="sos.scheduler.job.SOSSSHJob2JSAdapter"> <![CDATA[ echo Executing PerformInstall ${target_dir} chmod a+x ${target_dir}/jobscheduler_universal_agent_install.sh ${target_dir}/jobscheduler_universal_agent_install.sh -d${install_path} test -z "${command_1}" || "${command_1}" rc=$? test $rc -eq 0 && test -z "${command_2}" || "${command_2}" rc=$? test $rc -eq 0 && test -z "${command_3}" || "${command_3}" exit $? </script>]]> </monitor>script> <run_time /> </job> |
installation_definition_file
Code Block |
---|
<?xml version="1.0" encoding="ISO-8859-1"?> <job > <params > <param name="installation_definition_file" value="c:\temp\batchinstall.xml"/> <param name="filter_install_host" value=""/> <param name="filter_install_port" value=""/> <param name="installation_job_chain" value="/batch_install_universal_agent/universal_agent_installer"/> <monitor name="templateProcessor" ordering="1"> <script language="java:javascript"> <![CDATA[ function spooler_process_before(){ var order = spooler_task.order; var source_dir = order.params.value("PerformInstall/source_dir"); var scheduler_http_port = order.params.value("scheduler_http_port"); var templateProcessor = new Packages.com.sos.jitl.agentbatchinstaller.JSUniversalAgentBatchInstallerProcessTemplate(); templateProcessor.execute(source_dir+"/jobscheduler_agent_instance_script.txt",source_dir+"/jobscheduler_agent_" + scheduler_http_port + ".sh",spooler_task.order.delegate); return true; } ]]> <param name="update" value="true"/> </params>script> <script language="java" java_class_path="" java_class="com.sos.jitl.agentbatchinstaller.JSUniversalAgentBatchInstallerJSAdapterClass"/> </monitor> <run_time /> </job> |
PerformInstall.job.xml
Contains the configuration for the job that executes the installation.
The job is implemented by the JITL SSH job. The script that will be exexuted to check the prerequisites is defined in the script tag of the job. The order has the following parameters for this step.
installation_definition_file
Code Block |
---|
<?xml version="1.0" encoding="ISO-8859-1"?> <job > <params > <param name="installation_definition_file" value="c:\temp\batchinstall.xml"/> <param name="filter_install_host" value=""/> <param name="filter_install_port" value=""/> <param name="installation_job_chain" value="/batch_install_universal_agent/universal_agent_installer"/>01> <param name="update" value="true"/> </params> <script language="java" java_class_path="" java_class="com.sos.jitl.agentbatchinstaller.JSUniversalAgentBatchInstallerJSAdapterClass"/> <run_time /> </job> |
Folder setup
The folder setup contains the files that will be transfered to the Agents server during the installation process
Installation script
Template for the instance script
The JobScheduler Universal Agent
Job Chain
Job Batch Installer
XSD for installation input file
You will find the xsd-schema for the configuration in config/scheduler_universal_agent_installations.xsd
Example for the installation input file
The files have the following structure
- installations
- global
- installation
installation
PerformInstall.job.xml
Contains the configuration for the job that executes the installation.
The job is implemented by the JITL SSH job. The script that will be exexuted to check the prerequisites is defined in the script tag of the job. The order has the following parameters for this step.
installation_definition_fileExample for xml configuration file:
Code Block |
---|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<installations lastRun="2015-11-09 16:11">
<globals>
<install_path>/home/test/temp/xxx</install_path>
<transfer>
<operation>copy</operation>
<file_spec>.*\.(sh|gz)$</file_spec>
<source>
<host>localhost</host>
<port></port>
<protocol>local</protocol>
<user></user>
<password></password>
<dir>C:\Temp\batch_install</dir>
<ssh_auth_method>ssh_auth_method</ssh_auth_method>
<ssh_auth_file></ssh_auth_file>
</source>
<target>
<host>192.11.0.116</host>
<port>22</port>
<protocol>sftp</protocol>
<user>test</user>
<password>12345</password>
<dir>/home/test/temp/</dir>
<ssh_auth_method>password</ssh_auth_method>
<ssh_auth_file></ssh_auth_file>
</target>
</transfer>
<ssh>
<host>192.11.0.116</host>
<port>22</port>
</ssh>
</globals>
<installation lastRun="2015-11-09 16:11">
<install_path></install_path>
<agent_options>
<java_home>java home</java_home>
<java_options>java options</java_options>
<scheduler_home>scheduler home</scheduler_home>
<scheduler_http_port>4445</scheduler_http_port>
<scheduler_ip_address>192.11.0.116</scheduler_ip_address>
<scheduler_user>scheduler user</scheduler_user>
<scheduler_log_dir>scheduler log dir</scheduler_log_dir>
<scheduler_kill_script>scheduler kill script</scheduler_kill_script>
<scheduler_pid_file_dir>scheduler pid file dir</scheduler_pid_file_dir>
</agent_options>
<transfer>
<operation>copy</operation>
<file_spec>.*\.(sh|gz)$</file_spec>
<source>
<host></host>
<port></port>
<protocol></protocol>
<user></user>
<password></password>
<ssh_auth_method>ssh_auth_method</ssh_auth_method>
<ssh_auth_file></ssh_auth_file>
</source>
<target>
<host></host>
<port></port>
<protocol></protocol>
<user></user>
<password></password>
<ssh_auth_method></ssh_auth_method>
<ssh_auth_file></ssh_auth_file>
</target>
</transfer>
<ssh>
<user>test</user>
<password>12345</password>
<sudo_password>12345</sudo_password>
<auth_method>password</auth_method>
<auth_file></auth_file>
<port>22</port>
</ssh>
<postprocessing>
<command>echo ${ssh.sudo_password} | sudo cp ${install_path}/bin/jobscheduler_agent.sh /etc/init.d/jobscheduler</command>
<command>echo ${ssh.sudo_password} | sudo update-rc.d jobscheduler defaults</command>
</postprocessing>
</installation>
</installations |
In the global entry, you specify the values which are used for all installation items. The installation items can overwrite these values. There is one installation item for each agent. You can make use of substitution in the values of the entries.
...
language | xml |
---|
ISO-8859-1"?>
<job >
<params >
<param name="installation_definition_file" value="c:\temp\batchinstall.xml"/>
<param name="filter_install_host" value=""/>
<param name="filter_install_port" value=""/>
<param name="installation_job_chain" value="/batch_install_universal_agent/universal_agent_installer"/>01
<param name="update" value="true"/>
</params>
<script language="java" java_class_path="" java_class="com.sos.jitl.agentbatchinstaller.JSUniversalAgentBatchInstallerJSAdapterClass"/>
<run_time />
</job> |
Folder setup
The folder setup contains the files that will be transfered to the Agents server during the installation process
Installation script
Template for the instance script
The JobScheduler Universal Agent
Job Chain
Job Batch Installer
XSD for installation input file
You will find the xsd-schema for the configuration in config/scheduler_universal_agent_installations.xsd
Code Block | ||
---|---|---|
| ||
<command>echo ${ssh.sudo_password} | sudo cp ${install_path}/bin/jobscheduler_agent.sh /etc/init.d/jobscheduler</command>
|
<?xml version="1.0" encoding="utf-8"?>
<installations lastRun="2015-11-06 15:11">
<globals>
<transfer>
<settings><![CDATA[C:\Temp\batch_install\yade_agent_batch_installer_settings.ini]]></settings>
</transfer>
</globals>
<installation lastRun="2015-11-06 15:11">
<install_path><![CDATA[/home/test/temp/xxx]]></install_path>
<agent_options>
<scheduler_http_port>4445</scheduler_http_port>
<scheduler_ip_address><![CDATA[192.11.0.116]]></scheduler_ip_address>
</agent_options>
<ssh>
<user><![CDATA[test]]></user>
<password><![CDATA[12345]]></password>
<sudo_password><![CDATA[12345]]></sudo_password>
<auth_method><![CDATA[password]]></auth_method>
<port><![CDATA[22]]></port>
</ssh>
<postprocessing>
<command><![CDATA[echo ${ssh.sudo_password} | sudo cp
...
${install_path}/bin/jobscheduler_agent.sh
...
/etc/init.d/
...
jobscheduler]]></command>
...
<command><![CDATA[echo ${ssh.sudo_password} | sudo update-rc.d jobscheduler defaults]]></command>
</postprocessing>
</installation>
</installations>