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

Compare with Current View Page History

« Previous Version 37 Next »

Environment

This article describes the use of the JobScheduler Universal Agent Batch Installer for installing multiple Agent instances in a heterogeneous environment. A multiple 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.

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.

Configuration

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

JobScheduler Jobs

Carry out the following once the job and job chain have been extracted to the live folder of your JobScheduler Master: 

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

Installation of the Agents

The Agents can be installed after the XML configuration files and JobScheduler jobs have been configured. Start a task for the 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.
  5. This job will create the appropriate JobScheduler orders as explained in the chapter Batch Installer Application.

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.

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.

A separate profile in the YADE configuration file is required for each Agent installation. 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>

Now carry out the following steps:

  1. Add a <ProtocolFragments> element and nodes for each host that you want to install the Agent for. The best way to add another <ProtocolFragments> element using the XML Editor is copying the element and pasting it to the parent element - in this case <Fragments>.
  2. Add a <Profile> element and nodes for each host that you want to install the Agent for. The best way to add another <Profile> element using the XML Editor is copying the element and pasting it to the parent element - here <Profiles>.
  3. The default profile_id is <host>:<port>. If you do not use the default then you have to specify the profile name in the Batch Installer configuration file.

The YADE configuration file for example can be downloaded here: yade_agent_batch_installer_settings.xml and is shown in the following code block:

YADE Configuration File
<?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:\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:\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:\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:\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> 

 

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.

.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                                = test
ssh_auth_method                     = password
password                            = xxxx
[192.11.0.111:4445]
operation                           = copy
source_protocol                     = local
file_spec                           = .*\.(sh|gz)$
source_dir                          = C:\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:\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 Files (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:\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/

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.

The Batch Installer configuration file contains an <installation> element for each Agent instance. In addition, the <global> element can be used in a homogeneous environment to specify parameters that will be applied to all Agent installations. If a parameter is specified in the <global> element and in an individual <installation> element then the setting for the individual element will overwrite the global setting.

The following configuration steps should be carried out:

  1. Specify the global parameters:
    • Specify the path to the YADE settings file (.ini file) in the Batch Installer configuration file with the <globals><transfer><settings> element.

    • Specify the <install_path> to point to the location where the Agent should be installed.
      • You could set a different installation path for every installation. In that case, this element should be included for every installation and not globally set.
    • Specify the filename (not the path) for the Agent that has to be installed with the <installation_file> element. This filename contains the version of the Agent which you are installing and is helpful for recognizing the Agent versions that have been installed.

  2. Specify the installation parameters for each Agent installation:
    • Agent options:
      • <scheduler_user>: the Agent user
      • <scheduler_log_dir>: the Logs folder for the Agent
    • Specify the credentials for the SSH connection:

      • <user>: the SSH login user 
      • <password>: the Password for the login user
      • <sudo_password>: the Password for sudo actions
      • <auth_method>: the SSH authentication method
      • <host>: the SSH Host
      • <port>: the SSH port 
    • Use the <postprocessing> element to specify the post-processing commands for the Agent server's operating system. The default commands for an Ubuntu distribution will place the Agent start script under /etc/init.d and will setup the autostart for the Universal Agent:
      • 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

 

Post-processing commands

  • The SSH login user has to be set to root in order to execute these commands. Therefore the SSH login user should be included in sudoers.
  • These two commands will be executed by the PerformInstall job node, which is the last job node in the job chain. If you want to add more commands, please add the call to the job node.
  • Note that the values for the elements defined in the Batch Installer configuration file can be used for the postprocessing commands, for instance:

    • ${install_path}: the value for the element <install_path>

    • ${agent_options.scheduler_http_port}: the value for the element <scheduler_http_port>. If not defined, the default value (4445 in this case) is taken, as in the example below.

The Batch Installer configuration file for the example can be downloaded here: batch_installer_config_file.xml and is listed in the following code block:

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:\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>jobscheduler_unix_universal_agent.1.10.2.tar.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>

Hints

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

Using the XML Editor

The XML Editor can be used to manage the Batch Installer configuration file and the YADE configuration file.

XML Editor for Batch Installer configuration file

An example Batch Installer configuration file for the installation of a single Agent is shown in the following screenshot:

XML Editor for YADE configuration file

An example YADE configuration file for the installation of a single Agent is shown in the next screenshot:

XML Editor for converting YADE configuration files (XML) into YADE setting files (.ini)

The "YADE Xml2Ini Converter" function in the XML Editor is available for converting YADE files from XML to the .ini format required by versions of YADE before 1.11. Clicking on the button of the same name will open the following form:

Note that it is not necessary to create a Profile for the Batch Installer, as conversion will take place automatically once the "Autotransform" option has been chosen. Every time a change in the XML file is saved the XML file will be automatically converted and saved in .ini format. 

A pop-up window will show every time a change is saved if the option "Show notification on autotransform" is chosen. 

  • No labels