You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

Environment

This article describes the use of the JobScheduler Universal Agent Batch Installer in a homogeneous environment. We define a homogeneous environment as one in which a number of JobScheduler Agents will be installed based on the same 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 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 optionally up and running.

Batch Installer Application

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 corresponding Agent installations.

The Batch Installer application has two main components - a JobScheduler AgentBatchInstaller job  and a JobScheduler universal_agent_installer job chain. Moreover, 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 the respective 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 to 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 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 the following 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
    • Finally the PerformInstall job post-processing commands will 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(example 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

Download

The following steps have to be carried out. Files can be downloaded from http://www.sos-berlin.com/jobscheduler-downloads

  1. Unix
    • Download the "JobScheduler Universal Agent" tarball for Unix.
    • Download the "JobScheduler Universal Agent Batch Installer" for Unix. The archive contains the following: 
      • config/live/batch_installer_agent folder, with the jobs and job chains that are to be extracted to the live folder of the JobScheduler Master: SCHEDULER_DATA/config/live.
      • config/batch_installer folder containing configuration files for the Batch Installer. These files should be extracted 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 folder.
  2. Windows
    • Download the "JobScheduler Universal Agent" for Windows.
    • Download the "JobScheduler Universal Agent Batch Installer" for Windows. The archive provides the following content:
      • the config/live/batch_installer_agent folder contains jobs and job chains that should be extracted to the live folder of the JobScheduler Master SCHEDULER_DATA/config/live.
      • the config/batch_installer folder contains configuration files for the Batch Installer that should be extracted to the JobScheduler configuration directory SCHEDULER_DATA/config.
      • Copy the JobScheduler Universal Agent installation file to the folder SCHEDULER_DATA/config/batch_installer.

Configuration

XML files

Configuring XML files with a text editor is error-prone. Therefore we recommend that you download the XML Editor that can be used to manage the configuration files required for the Batch Installer. For details about the XML Editor see the Using the XML Editor chapter below.

  • 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 sos.xml.editor.exe program.
  • Open your yade_agent_batch_installer_settings.xml YADE configuration file, which is located in the config/batch_installer folder and assign the XSD schema http://www.sos-berlin.com/schema/yade/YADE_configuration_v1.0.xsd. See the YADE profiles for the file transfer chapter below for instructions on how to configure the YADE configuration file.
  • 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 the Batch Installer Configuration File chapter below for instructions on how to configure the Batch Installer configuration file.

Hints

  • 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.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.

JobScheduler Jobs

Once the job and job chain were extracted to the live folder of your JobScheduler Master, please do the following: 

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

Example: Installation of four Agents on two Servers

The following example describes how to do the installation of four JobScheduler Universal Agents in two Agent Servers, that is, two JobScheduler Universal Agents installed per Server. 

Installer Configuration File

The installer configuration file contains an <installation> element for each JobScheduler Universal Agent instance. Set the name for the YADE settings file in the installer configuration file with the element <globals><transfer><settings>. An example for the installer configuration file can look like this:

Installer Configuration File
<?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\yade_agent_batch_installer_settings.ini</settings>
        </transfer>
        <ssh>
            <auth_method>password</auth_method>
            <port>22</port>
        </ssh>
    </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 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>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 chkconfig 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>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>
</installations>

 

YADE profiles for the file transfer

Each installation makes use of a profile in the YADE settings file. The default profile name is <host>:<port> where

  • <host> will be substituted with the value from the element <installation><agent_option><scheduler_ip_address>
  • <port> will be substituted with the value from the element <installation><agent_option><scheduler_http_port>

Please follow these steps:

  1. Specify the name of the YADE settings file with the <globals><settings> element.
  2. Open the YADE settings file or create a new one.
  3. Assign the XSD Schema http://www.sos-berlin.com/schema/yade/YADE_configuration_v1.0.xsd
  4. Add a <ProtocolFragments> element and nodes for each host that you want to install the JobScheduler Universal Agent for.
  5. Add a <Profile> element and nodes for each host you want install the JobScheduler Universal Agent for.
  6. The default profile_id is <host>:<port>. If you do not use the default then you have to specify the profile name in the installer configuration file.

 

YADE Profiles
 <?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[sos]]></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]]></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]]></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]]></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_batch]]></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>

HINTS: 

  • Note that this is a XML file and YADE will expect an INI file to do the transfer, as we indicated in the installer configuration file (in the section <globals><install_path><transfer><settings>).
    • It is recommended to use the XML Editor for converting from XML to INI format (see below paragraph Using the XML Editor)
    • Here is an example of an INI file, converted from the XML file attached above:
      • INI file
        [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                                = sos
        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
        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
        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:\tmp\agent_batch
        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
        target_include                      = protocol_fragment_sftp@SFTP_192.11.0.95:4446
        target_dir                          = /home/test/tmp/
        

Using the XML Editor

Then XML Editor can be used to manage the installation configuration file and the YADE profiles for the transfer of the installation files as well.

Find more details from our XML Editor section.

  • After download of the XML Editor, extract the zip file, then start "sos.xml.editor.exe"
  • Open your installer configuration file and assign the XSD schema scheduler_universal_agent_installations.xsd

Please see the following examples (one example for each file):


 

  • No labels