Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

Introduction

This article describes the use of is one of a series describing how to configure the JobScheduler Universal Agent Batch Installer for installing multiple Agent instances in a heterogeneous environment. A multiple so that a number of JobScheduler Universal Agents will can be installed on every Agent server and every installation will be based on different prerequisites:

  • A JobScheduler Master is up and running.
  • The Agent installations are to be performed on any number of servers that do not have to have the same operating system. More than one Agent is to be installed per server.
  • In every Agent server, the Agents will be operated with different users and different listening ports.
    • The Agents will be operated with different users (within the same Agent server) to make the example more multifaceted, although the same user can operate more than one Agent if the Agents run on different ports.
  • The installation path will be the same for all Agent installations.

The Batch Installer supports:

  • First Installation: an Agent has not yet been installed on the server.
  • Update Installation: an Agent has already been installed and may be up and running.

...

readily installed on a number of servers.

Article Scope

This article describes how to use the Universal Agent Batch Installer to install multiple Agent instances. Other use cases in this series of articles are listed in the introductory JobScheduler Universal Agent - Batch Installation and Update of Agents article.

A general introduction to installation of the JobScheduler Universal Agent can be found in the JobScheduler Universal Agent - Installation & Operation article.

The JobScheduler Universal Agent - Batch Installation and Update of Agents article provides an overview of how the Batch Installer works. New users are strongly recommended to read this article before proceeding with the instructions presented here.

The Batch Installation - Reference Documentation article provides a detailed guide to configuration of the batch installer with, for example, full lists of parameters.

Installation Environment

This article describes the use of the JobScheduler Universal Agent Batch Installer for installing multiple Agent instances in a heterogeneous environment. A number of JobScheduler Agents will be installed on every Agent server and every installation will be based on different prerequisites:

  • A JobScheduler Master is up and running.
  • The Agent installations are to be performed on any number of servers that do not have to have the same operating system. More than one Agent is to be installed per server.
  • In every Agent server, the Agents will be operated with different users and different listening ports.
    • The Agents will be operated with different users (within the same Agent server) to make the example more multifaceted, although the same user can operate more than one Agent if the Agents run on different ports.
  • The installation path will be the same for all Agent installations

Installation Procedure

General requirements:

  • A JobScheduler Master is up and running.
  • A Java Run-time Environment in version 1.8 or newer is installed on the system(s) the Agent is to be installed on.
  • We recommend that you use the SOS XML Editor to manage the configuration files required for the Batch Installer. More information about the installation and use of the XML editor will be provided later in this article.

1. Download and Extract the Batch Installer and Agent Files

...

The JobScheduler Agents will be installed by a JobScheduler Master that:

  • connects to the Servers that the Agents are to be installed on and
  • executes the required Agent installations.

The Batch Installer application has two main components - a JobScheduler AgentBatchInstaller job  and a JobScheduler universal_agent_installer job chain. In addition, two XML files batch_installer_config_file.xml and yade_agent_batch_installer_settings.xml are needed for the application. 

The AgentBatchInstaller job is responsible for creating the JobScheduler orders for the job chain. Each of these orders is named according to the pattern <host>:<port> to convey the host and port of the server where each Agent is to be installed. 

The universal_agent_installer job chain has four job nodes configured in series as follows:

...

The individual nodes in the universal_agent_installer job chain have the following functions:

  • CheckPreRequisite

    • Check for the correct Java version.
    • Check whether a JobScheduler Universal Agent has already been installed. If so:
      • shut down the instance if it is running,
      • remove the installation.
  • Sync: To wait until all prerequisites have been checked and any already installed Agent instances that are running have been shut down.
  • TransferInstallationSetup: To transfer the installer files on the host
    • Before the transfer starts, the preprocessor will use the use the jobscheduler_agent_instance_script.txt template to create a start script for the Agent instance. 
    • The XML file yade_agent_batch_installer_settings.xml has to be configured and converted to .ini file format before the transfer starts. See the YADE configuration file for the file transfer chapter below for instructions on how to configure the YADE configuration file and YADE Settings File for the File Transfer for instructions on how the .ini file should look like.
    • The files that will be transfered are specified with the element <globals><transfer><file_spec=".*\.(sh|gz)$">  

    • This regular expression is used to select the files to be transfered:
      • the JobScheduler Universal Agent installation files: jobscheduler_unix_universal_agent.tar.gz
        the jobscheduler_agent_<port>.sh start script for the instance
      • the installation script: jobscheduler_universal_agent_install.sh
  • PerformInstall: The installation is started by SSH.
    • The installation script will install and start the JobScheduler Universal Agent
    • The PerformInstall job post-processing commands will then be executed:
      • These commands are specified using the <installation><postprocessing><command> element.
      • The default configuration for a Linux server will place the Agent start script under /etc/init.d and set up the autostart for JobScheduler Universal Agent (the following example is for a Ubuntu distribution):
        • echo ${ssh.sudo_password} | sudo -S cp ${install_path}/jobscheduler_agent/bin/jobscheduler_agent_${agent_options.scheduler_http_port}.sh /etc/init.d/jobscheduler_agent_${agent_options.scheduler_http_port}
        • echo ${ssh.sudo_password} | sudo -S update-rc.d jobscheduler_agent_${agent_options.scheduler_http_port} defaults

...

The following steps have to be carried out. All the files mentioned in this section Files can be downloadedfrom downloaded from http://www.sos-berlin.com/jobscheduler-downloads

  • 1.1 Unix
    • Download the "JobScheduler Universal Agent" tarball for Unix.
    • Download the "JobScheduler Universal Agent Batch Installer" for Unix.  The The archive contains the following folders and sub-folders
      • config/live/batch_install_installeruniversal_agent folder, with the jobs and job chains. Extract these files to
        • This folder contains the Jobs and Job Chain used to carry out the installation.
        • Extract these files to the the live folder of the JobScheduler Master: SCHEDULER_DATA/config/live.
      • config/batch_installer folder with the configuration install
        • This folder contains the configuration files for the Batch Installer.
        • Extract these files
        to the 
        • to the config directory of the JobScheduler Master: SCHEDULER_DATA/config.
    • Copy the JobScheduler Universal Agent installation file to the SCHEDULER_DATA/config/batch_installer folderinstall folder.
  • 1.2 Windows
    • Download the "JobScheduler Universal Agent" for Windows.
    • Download the "

...

    • Universal Agent Batch Installer"

...

    • . The archive

...

    • contains the following

...

    • folders and sub-folders
      • the
      • live/batch_install_

...

      • universal_agent folder

...


        • This folder contains the Jobs and Job Chain used to carry out the installation. 
        • Extract these files to the live folder of the JobScheduler Master SCHEDULER_DATA/config/live.

...

      • the batch_install folder
        • This folder contains the configuration files for the Batch Installer.  
        • Extract these files to the JobScheduler configuration directory SCHEDULER_DATA/config.
    • Copy the JobScheduler Universal Agent installation file to the folder SCHEDULER_DATA/config/batch_

...

    • install folder.

2. Configure the Transfer of the Universal Agent Installation Files and the Installation of the Agents

2.1 Edit the XML Configuration

...

Configuration

...

files

Configuring complex XML files with a text editor is often a tedious and error-prone procedure. To get around this, we recommend that you use our XML Editor to manage the configuration files required for the Batch Installer. The XML Editor automatically validates configuration files and therefore reduces the possibility of configuration errors. See the Using the XML Editor chapter below for more detailed information about using the XML Editor. 

  • After downloading the XML Editor, extract the contents of the zip file to a convenient folder (an installation routine is not required) and start the the sos.xml.editor.exe program. program.
  • Use the XML Editor to configure transfer of the Universal Agent installation files:
    • Open
    your 
    • your yade_agent_batch_installer_settings.xml
     YADE
    • YADE configuration
     
    • file, which is located in
    the 
    • the config/batch_installer
     folder
    • folder and assign the
    XSD  See how
      • how to configure the YADE configuration file.
  • Use the XML Editor to configure the YADE configuration file.the installation of the Universal Agents:
    • Open your batch_installer_config_file.xml configuration file in the XML Editor and assign the scheduler_universal_agent_installations.xsd schema: both files are located in the config/batch_installer folder.
     See
Info
titleHints
  • The  XML Editor is available for Windows.
  • YADE is an Open Source file transfer solution for FTP, SFTP, FTPS, WebDAV and other protocols. Concretely, it will be used here for transferring the following files from the JobScheduler Master to the Agent servers:
    • JobScheduler Universal Agent installation files: jobscheduler_unix_universal_agent.1.11.0-SNAPSHOT<version>.tar.gz
    • Start script for an Agent instance: jobscheduler_agent_<port>.sh
    • Installation script: jobscheduler_universal_agent_install.sh
  • For more information about YADE, see the YADE product site.

2.2 Configure the JobScheduler Jobs

Carry out the following once the job and job chain Once the Job and Job Chain have been extracted to the the live folder folder of your JobScheduler Master carry out the following

  • AgentBatchInstaller Job:
    • Set
    AgentBatchInstaller job: adjust
    • the parameter values for the AgentBatchInstaller job in your JobScheduler Master.
    • Set the installation_definition_file job parameter to the path that points to the Batch Installer configuration file.

3 Installation of the Agents

The Agents can be installed after the XML configuration files and JobScheduler jobs Jobs have been configured. Start a task for the AgentBatchInstaller AgentBatchInstaller job as follows:

  1. Open a JobScheduler Operating Center (JOC) browser window for the JobScheduler master.
  2. Go on the "Jobs" Window and open the "batch_installer_universal_agent" folder.
  3. Right click on the job to open the context menu.
  4. Select the Start task immediately operation operation.
  5. orders chapter 

 

Example: Installation of four Agents on two Servers

The following example describes how to install four JobScheduler Universal Agents on two Servers - that is, two JobScheduler Universal Agents will be installed per server. First of all, the YADE configuration file for the file transfer will be configured (in XML format), it will then be converted to the YADE settings file format (.ini) and finally the Batch Installer configuration file will be specified.

Anchor
yade_profile_transfer
yade_profile_transfer
YADE Configuration File for File Transfer

We assume that you  have opened the yade_agent_batch_installer_settings.xml YADE configuration file and have assigned the http://www.sos-berlin.com/schema/yade/YADE_configuration_v1.0.xsd XSD schema. The XML file contains a basic example with recommended values for the installation of a single Agent.

...

Code Block
languagexml
titleYADE ProfilesConfiguration File
collapsetrue
 <<?xml version="1.0" encoding="utf-8"?>
<Configurations xsi:noNamespaceSchemaLocation="http://www.sos-berlin.com/schema/yade/YADE_configuration_v1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Fragments>
    <ProtocolFragments>
      <SFTPFragment name="SFTP_192.11.0.111:4445">
        <BasicConnection>
          <Hostname><![CDATA[192.11.0.111]]></Hostname>
        </BasicConnection>
        <SSHAuthentication>
          <Account><![CDATA[test]]></Account>
          <AuthenticationMethodPassword>
            <Password><![CDATA[xxxx]]></Password>
          </AuthenticationMethodPassword>
        </SSHAuthentication>
      </SFTPFragment>
      <SFTPFragment name="SFTP_192.11.0.111:4446">
        <BasicConnection>
          <Hostname><![CDATA[192.11.0.111]]></Hostname>
        </BasicConnection>
        <SSHAuthentication>
          <Account><![CDATA[sos]]></Account>
          <AuthenticationMethodPassword>
            <Password><![CDATA[xxxx]]></Password>
          </AuthenticationMethodPassword>
        </SSHAuthentication>
      </SFTPFragment>
      <SFTPFragment name="SFTP_192.11.0.95:4445">
        <BasicConnection>
          <Hostname><![CDATA[192.11.0.95]]></Hostname>
        </BasicConnection>
        <SSHAuthentication>
          <Account><![CDATA[sos]]></Account>
          <AuthenticationMethodPassword>
            <Password><![CDATA[xxxx]]></Password>
          </AuthenticationMethodPassword>
        </SSHAuthentication>
      </SFTPFragment>
      <SFTPFragment name="SFTP_192.11.0.95:4446">
        <BasicConnection>
          <Hostname><![CDATA[192.11.0.95]]></Hostname>
        </BasicConnection>
        <SSHAuthentication>
          <Account><![CDATA[test]]></Account>
          <AuthenticationMethodPassword>
            <Password><![CDATA[xxxx]]></Password>
          </AuthenticationMethodPassword>
        </SSHAuthentication>
      </SFTPFragment>
    </ProtocolFragments>
  </Fragments>
  <Profiles>
    <Profile profile_id="192.11.0.111:4445">
      <Operation>
        <Copy>
          <CopySource>
            <CopySourceFragmentRef>
              <LocalSource />
            </CopySourceFragmentRef>
            <SourceFileOptions>
              <Selection>
                <FileSpecSelection>
                  <FileSpec><![CDATA[.*\.(sh|gz)$]]></FileSpec>
                  <Directory><![CDATA[C:\tmp\agent_batch![CDATA[C:\Program Files (x86)\sos-berlin.com\jobscheduler\vg_4444\scheduler_data\config\batch_installer]]></Directory>
                </FileSpecSelection>
              </Selection>
            </SourceFileOptions>
          </CopySource>
          <CopyTarget>
            <CopyTargetFragmentRef>
              <SFTPFragmentRef ref="SFTP_192.11.0.111:4445" />
            </CopyTargetFragmentRef>
            <Directory><![CDATA[/home/test/tmp/]]></Directory>
          </CopyTarget>
        </Copy>
      </Operation>
    </Profile>
    <Profile profile_id="192.11.0.111:4446">
      <Operation>
        <Copy>
          <CopySource>
            <CopySourceFragmentRef>
              <LocalSource />
            </CopySourceFragmentRef>
            <SourceFileOptions>
              <Selection>
                <FileSpecSelection>
                  <FileSpec><![CDATA[.*\.(sh|gz)$]]></FileSpec>
                  <Directory><![CDATA[C:\tmp\agent_batch\Program Files (x86)\sos-berlin.com\jobscheduler\vg_4444\scheduler_data\config\batch_installer]]></Directory>
                </FileSpecSelection>
              </Selection>
            </SourceFileOptions>
          </CopySource>
          <CopyTarget>
            <CopyTargetFragmentRef>
              <SFTPFragmentRef ref="SFTP_192.11.0.111:4446" />
            </CopyTargetFragmentRef>
            <Directory><![CDATA[/home/sos/tmp/]]></Directory>
          </CopyTarget>
        </Copy>
      </Operation>
    </Profile>
    <Profile profile_id="192.11.0.95:4445">
      <Operation>
        <Copy>
          <CopySource>
            <CopySourceFragmentRef>
              <LocalSource />
            </CopySourceFragmentRef>
            <SourceFileOptions>
              <Selection>
                <FileSpecSelection>
                  <FileSpec><![CDATA[.*\.(sh|gz)$]]></FileSpec>
                  <Directory><![CDATA[C:\tmp\agent_batch\Program Files (x86)\sos-berlin.com\jobscheduler\vg_4444\scheduler_data\config\batch_installer]]></Directory>
                </FileSpecSelection>
              </Selection>
            </SourceFileOptions>
          </CopySource>
          <CopyTarget>
            <CopyTargetFragmentRef>
              <SFTPFragmentRef ref="SFTP_192.11.0.95:4445" />
            </CopyTargetFragmentRef>
            <Directory><![CDATA[/home/sos/tmp/]]></Directory>
          </CopyTarget>
        </Copy>
      </Operation>
    </Profile>
    <Profile profile_id="192.11.0.95:4446">
      <Operation>
        <Copy>
          <CopySource>
            <CopySourceFragmentRef>
              <LocalSource />
            </CopySourceFragmentRef>
            <SourceFileOptions>
              <Selection>
                <FileSpecSelection>
                  <FileSpec><![CDATA[.*\.(sh|gz)$]]></FileSpec>
                  <Directory><![CDATA[C:\tmp\agent_batchC:\Program Files (x86)\sos-berlin.com\jobscheduler\vg_4444\scheduler_data\config\batch_installer]]></Directory>
                </FileSpecSelection>
              </Selection>
            </SourceFileOptions>
          </CopySource>
          <CopyTarget>
            <CopyTargetFragmentRef>
              <SFTPFragmentRef ref="SFTP_192.11.0.95:4446" />
            </CopyTargetFragmentRef>
            <Directory><![CDATA[/home/test/tmp/]]></Directory>
          </CopyTarget>
        </Copy>
      </Operation>
    </Profile>
  </Profiles>
</Configurations>Configurations> 

 

Anchor
yade_settings_file
yade_settings_file
YADE Settings File for File Transfer

Note that the file shown above is an in the YADE XML file format and that YADE versions less that 1.10 and older require a .ini file to perform the transfer that is specified in the <globals><install_path><transfer><settings> element in the Batch Installer configuration file.

Code Block
titleINI .ini file
collapsetrue
[protocol_fragment_sftp@SFTP_192.11.0.111:4445]
protocol                            = sftp
host                                = 192.11.0.111
user                                = test
ssh_auth_method                     = password
password                            = xxxx
[protocol_fragment_sftp@SFTP_192.11.0.111:4446]
protocol                            = sftp
host                                = 192.11.0.111
user                                = sos
ssh_auth_method                     = password
password                            = xxxx
[protocol_fragment_sftp@SFTP_192.11.0.95:4445]
protocol                            = sftp
host                                = 192.11.0.95
user                                = sos
ssh_auth_method                     = password
password                            = xxxx
[protocol_fragment_sftp@SFTP_192.11.0.95:4446]
protocol                            = sftp
host                                = 192.11.0.95
user                                = test
ssh_auth_method                     = password
password                            = xxxx
[192.11.0.111:4445]
operation                           = copy
source_protocol                     = local
file_spec                           = .*\.(sh|gz)$
source_dir                          = C:\tmp\agent_batch\Program Files (x86)\sos-berlin.com\jobscheduler\vg_4444\scheduler_data\config\batch_installer
target_include                      = protocol_fragment_sftp@SFTP_192.11.0.111:4445
target_dir                          = /home/test/tmp/
[192.11.0.111:4446]
operation                           = copy
source_protocol                     = local
file_spec                           = .*\.(sh|gz)$
source_dir                          = C:\tmp\agent_batch\Program Files (x86)\sos-berlin.com\jobscheduler\vg_4444\scheduler_data\config\batch_installer
target_include                      = protocol_fragment_sftp@SFTP_192.11.0.111:4446
target_dir                          = /home/sos/tmp/
[192.11.0.95:4445]
operation                           = copy
source_protocol                     = local
file_spec                           = .*\.(sh|gz)$
source_dir                          = C:\Program  = C:\tmp\agent_batchFiles (x86)\sos-berlin.com\jobscheduler\vg_4444\scheduler_data\config\batch_installer
target_include                      = protocol_fragment_sftp@SFTP_192.11.0.95:4445
target_dir                          = /home/sos/tmp/
[192.11.0.95:4446]
operation                           = copy
source_protocol                     = local
file_spec                           = .*\.(sh|gz)$
source_dir                          = C:\tmp\agent_batch\Program Files (x86)\sos-berlin.com\jobscheduler\vg_4444\scheduler_data\config\batch_installer
target_include                      = protocol_fragment_sftp@SFTP_192.11.0.95:4446
target_dir                          = /home/test/tmp/

Anchor
installer_config_file
installer_config_file
Batch Installer Configuration File

We assume that you have opened the Batch Installer configuration file batch_installer_config_file.xml in the XML Editor and assigned the scheduler_universal_agent_installations.xsd XSD schema.

...

Code Block
languagexml
titleInstaller Configuration File
collapsetrue
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<installations lastRun="2015-11-23 12:11">
    <globals>
        <install_path>/opt</install_path>
        <transfer>
            <settings>c:\tmp\agent_batch<settings>C:\Program Files (x86)\sos-berlin.com\jobscheduler\vg_4444\scheduler_data\config\batch_installer\yade_agent_batch_installer_settings.ini</settings>
        </transfer>
        <ssh>
            <auth_method>password</auth_method>
            <port>22</port>
        </ssh>
		<installation_file><![CDATA[jobschedulerfile>jobscheduler_unix_universal_agent.1.10.2-SNAPSHOT.tar.gz]]><gz</installation_file>
    </globals>
    <installation lastRun="2015-11-23 11:11">
        <agent_options>
            <scheduler_user>test</scheduler_user>
            <scheduler_log_dir>/var/log/sos-berlin.com/jobscheduler/agent</scheduler_log_dir>
        </agent_options>
        <ssh>
            <user>test</user>
            <password>xxxx</password>
            <sudo_password>xxxx</sudo_password>
            <host>192.11.0.111</host>
        </ssh>
        <postprocessing>
            <command>echo ${ssh.sudo_password} | sudo -S cp ${install_path}/jobscheduler_agent/bin/jobscheduler_agent_${agent_options.scheduler_http_port}.sh /etc/init.d/jobscheduler_agent_${agent_options.scheduler_http_port}</command>
            <command>echo ${ssh.sudo_password} | sudo -S updadte-rc.d jobscheduler_agent_${agent_options.scheduler_http_port}</command>
        </postprocessing>
    </installation>
    <installation lastRun="2015-11-23 11:11">
        <agent_options>
            <scheduler_http_port>4446</scheduler_http_port>
            <scheduler_user>sos</scheduler_user>
            <scheduler_log_dir>/var/log/sos-berlin.com/jobscheduler/agent</scheduler_log_dir>
        </agent_options>
        <ssh>
            <user>sos</user>
            <password>xxxx</password>
            <sudo_password>xxxx</sudo_password>
            <host>192.11.0.111</host>
        </ssh>
        <postprocessing>
            <command>echo ${ssh.sudo_password} | sudo -S cp ${install_path}/jobscheduler_agent/bin/jobscheduler_agent_${agent_options.scheduler_http_port}.sh /etc/init.d/jobscheduler_agent_${agent_options.scheduler_http_port}</command>
            <command>echo ${ssh.sudo_password} | sudo -S update-rc.d jobscheduler_agent_${agent_options.scheduler_http_port}</command>
        </postprocessing>
    </installation>
    <installation lastRun="2015-11-23 11:11">
        <agent_options>
            <scheduler_user>sos</scheduler_user>
            <scheduler_log_dir>/var/log/sos-berlin.com/jobscheduler/agent</scheduler_log_dir>
        </agent_options>
        <ssh>
            <user>sos</user>
            <password>xxxx</password>
            <sudo_password>xxxx</sudo_password>
            <host>192.11.0.95</host>
        </ssh>
        <postprocessing>
            <command>echo ${ssh.sudo_password} | sudo -S cp ${install_path}/jobscheduler_agent/bin/jobscheduler_agent_${agent_options.scheduler_http_port}.sh /etc/init.d/jobscheduler_agent_${agent_options.scheduler_http_port}</command>
            <command>echo ${ssh.sudo_password} | sudo -S chkconfig jobscheduler_agent_${agent_options.scheduler_http_port}</command>
        </postprocessing>
    </installation>
    <installation lastRun="2015-11-23 11:11">
        <agent_options>
            <scheduler_http_port>4446</scheduler_http_port>
            <scheduler_user>test</scheduler_user>
            <scheduler_log_dir>/var/log/sos-berlin.com/jobscheduler/agent</scheduler_log_dir>
        </agent_options>
        <ssh>
            <user>test</user>
            <password>xxxx</password>
            <sudo_password>xxxx</sudo_password>
            <host>192.11.0.95</host>
        </ssh>
        <postprocessing>
            <command>echo ${ssh.sudo_password} | sudo -S cp ${install_path}/jobscheduler_agent/bin/jobscheduler_agent_${agent_options.scheduler_http_port}.sh /etc/init.d/jobscheduler_agent_${agent_options.scheduler_http_port}</command>
            <command>echo ${ssh.sudo_password} | sudo -S chkconfig jobscheduler_agent_${agent_options.scheduler_http_port}</command>
        </postprocessing>
    </installation>
</installations>
Info
titleHints
  • Note that if the port was not specified with the <installations><installation><agent_options><scheduler_http_port> element, this would mean that the global value of 4445 would be applied to all Agent installations. In this example, this element is superfluous for the first and the third installation.

  • The commands defined under <command> (in the section <installations><installation><postprocessing><command>) are executed for each installation individually. In this example the Agents are installed on different UNIX distributions, the first two Agents would be installed on an Ubuntu distribution (and therefore commands such as update-rc.d are used) and the last two Agents would be installed on a CentOS distribution (and therefore commands such as chkconfig are used).

Excerpt Include
Batch Installer Installation - Use Cases - Homogeneous environment
Batch Installer Installation - Use Cases - Homogeneous environment
nopaneltrue