Versions Compared

Key

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

...

  • --home
    • Specifies the directory in which the Controller should be installed.
  • --data
    • Specifies the directory in which the Controller data such as configuration files should be stored.
    • By default the <home>/var directory is used, see option --home.
  • --config
    • Specifies the directory from which the Controller reads configuration files.
    • By default the <data>/config directory is used, see option --data.
  • --logs
    • Specifies the directory to which the Controller stores log files.
    • By default the <data>/logs directory is used, see option --data.
  • --user
    • Specifies the user account for the Controller daemon.
    • By default the account of the user running the Controller Installer Script is used.
  • --controller-id
    • Specifies the Controller ID, a unique identifier of the Controller installation. If more than one Controller should be registered with JOC Cockpit then they have to use different Controller IDs.
    • If two Controller instances should work in a Cluster then they have to use the same Controller ID.
  • --release
    • Specifies a release number such as 2.3.1 for download from the SOS web site if the --tarball option is not used.
  • --tarball
    • Optionally specifies the path to a .tar.gz file that holds the Controller installation files. If this option is not used the installer tarball will be downloaded from the SOS web site for the release indicated with the --release option.
    • Download is performed with curl that considers http_proxy and https_proxy environment variables and settings from a .curlrc file.
  • --patch
    • A patch is identified by an issue key in the Change Management System, for example JS-1984.
    • Patches are downloaded from the SOS web site if the --tarball option is not used.
    • Patches are added to the Controller's <home>/lib/patches directory. Note that the patches sub-directory will be emptied when updating a Controller installation later on.
    • If a backup directory is specified then a Controller's existing installation directory will be added to a .tar.gz file in this directory.
  • --http-port
    • Specifies the HTTP port that the Controller is operated for. The default value is 4444. The HTTP port is used to specify the value of the JS7_CONTROLLER_HTTP_PORT environment variable in the Controller Instance Start Script.
    • The port can be prefixed by the network interface, for example localhost:4444.
    • When used with the --restart switch the HTTP port is used to identify whether the Controller is running.
  • --https-port
    • Specifies the HTTPS port that the Controller is operated for. The HTTPS port is specified in the Controller Instance Start Script typically available from ./bin/controller_instance.sh. with the environment variable JS7_CONTROLLER_HTTPS_PORT. Use of HTTPS requires a keystore and truststore to be present, see --keystore and --truststore options.
    • The port can be prefixed by the network interface, for example batch.example.com:4444.
  • --license-key
    • Optionally the path to a license key file is specified. Customers with a Commercial License receive the license key file from SOS in .pem or .crt format.
    • For details see JS7 - How to apply a JS7 License Key.
  • --license-bin
    • Optionally the path to the js7-license.jar binary file is specified that includes code that is available for use with a Commercial License only, see JS7 - How to apply a JS7 License Key.
    • Should this argument be omitted and a license key file be specified with the --license-key option then the binary file is downloaded from the SOS Web Site, see JS7 - Download.
  • --instance-script
    • Specifies the path to a script that acts as the Instance Start Script and that is copied to the bin directory. Typically the name controller_instance.sh. is used. Users are free to choose any name for the script. The script has to be executable for the Controller daemon, see --user. Permissions of the script are not changed by the Controller Installer Script.
    • The Controller Installer Script will perform replacements in the Instance Start Script template for known placeholders such as <JS7_CONTROLLER_USER>, for details see ./bin/controller_instance.sh-example.
  • --pid-file-dir
    • Specifies the directory to which the Controller stores its PID file. By default the <data>/logs directory is used.
    • When using SELinux then it is recommended to specify the /var/run directory, see JS7 - How to install for SELinux.
  • --pid-file-name
    • Specifies the name of the PID file. By default the file name controller.pid is used.
    • The PID file is created in the directory specified by the --pid-file-dir option.
  • --java-home
    • Specifies the Java home directory that will be made available to the Controller from the JAVA_HOME environment variable specified with the Controller Instance Start Script typically available from ./bin/controller_instance.sh.
  • --java-options
    • Specifies the Java options that will be made available to the Controller from the JAVA_OPTIONS environment variable specified with the Controller Instance Start Script typically available from ./bin/controller_instance.sh.
    • Java options can be used for example to specify Java heap space settings for the Ccontroller.
    • If more than one Java option is used then the value has to be quoted, for example --java-options="-Xms256m -Xmx512m".
  • --backup-dir
    • If a backup directory is specified then an Controller's existing installation directory will be added to a .tar.gz file in this directory.
    • File names are created according to the pattern: backup_js7_controller.<hostname>.<release>.<yyyy>-<MM>-<dd>T<hh>-<mm>-<ss>.tar.gz
    • For example: backup_js7_controller.centostest_primary.2.3.1.2022-03-19T20-50-45.tar.gz
  • --log-dir
    • If a log directory is specified then the installer script will log information about processing steps to a log file in this directory.
    • File names are created according to the pattern: install_js7_controller.<hostname>.<yyyy>-<MM>-<dd>T<hh>-<mm>-<ss>.log
    • For example: install_js7_controller.centostest_primary.2022-03-19T20-50-45.log
  • --service-dir
    • Specifies the systemd service directory to which the Controller's service file will be copied if the --make-service switch is used.
    • By default the a/usr/lib/systemd/system will be used. Users can specify an alternative location.
  • --service-file
    • Specifies the path to a systemd service file that acts as a template and that is copied to the Controller's <home>/bin directory.
    • Users are free to choose any file name as a template for the service file. The resulting service file name will be controller.service.Typically the name controller.service is used. Users are free to choose any name for the Service File.
    • The Controller Installer Script will perform replacements in the service file to update paths and the port to be used, for details see ./bin/controller.service-example.
  • --service-name
    • Specifies the name of the systemd service that will be created if the --make-service switch is used.
    • By default the service name js7_controller will be used.
  • --exec-start
    • This option can be used should the Controller be started after installation. For example, when using systemd then the option --exec-start="StartService" will start the Controller service provided that the related systemd service has been created manually or by use of the --make-service switch. Alternatively users can specify individual commands, for example --exec-start="sudo systemctl start js7_controller".
    • For systemd service files see the JS7 - systemd Service Files for automated Startup and Shutdown with Unix Systems article.
    • This option is an alternative to the use of the --restart switch which starts the Controller from its Instance Start Script. If specified this option will overrule the --restart switch.
  • --exec-stop
    • This option can be used should the Controller be stopped before installation. For example, when using systemd then the option --exec-stop="StopService" will stop the Controller service provided that the related systemd service has been created manually or by use of the --make-service switch. Alternatively users can specify individual commands, for example --exec-stop="sudo systemctl stop js7_controller".
    • For systemd service files see the JS7 - systemd Service Files for automated Startup and Shutdown with Unix Systems article.
    • This option is an alternative to the use of the --restart switch which stops the Controller from its Instance Start Script. If specified this option will overrule the --restart switch.
  • --return-values
    • Optionally specifies the path to a file to which return values will be added in the format <name>=<key>. For example:
      • log_file=install_js7_controller.centostest_primary.2022-03-20T04-54-31.log
      • backup_file=backup_js7_controller.centostest_primary.2.3.1.2022-03-20T04-54-31.tar.gz
    • Any existing file will be overwritten. It is recommended that a unique file name such as /tmp/return.$$.$RANDOM.properties. is used.
    • A value from the file can be retrieved like this:
      • backup=$(cat /tmp/return.$$.$RANDOM.properties | grep "backup_file" | cut -d'=' -f2)

...

The Controller Installer Script performs replacements of placeholders in installation files and configuration files by option values.

Installation

...

Files

  • <bin><home>/bin/controller_instance.sh
    • Replacements are performed for the following placeholders used for environment variables by respective option values:

      PlaceholderOption Value
      JS7_CONTROLLER_HOME--home
      JS7_CONTROLLER_DATA--data
      JS7_CONTROLLER_ID--id
      JS7_CONTROLLER_USER--user
      JS7_CONTROLLER_HTTP_PORT--http-port
      JS7_CONTROLLER_HTTPS_PORT--https-port
      JS7_CONTROLLER_CONFIG_DIR--config
      JS7_CONTROLLER_LOGS--logs
      JS7_CONTROLLER_PID_FILE_DIR--pid-file-dir
      JS7_CONTROLLER_PID_FILE_NAME--pid-file-name
      JAVA_HOME--java-home
      JAVA_OPTIONS--java-options



  • <bin><home>/bin/controller.service
    • Replacements are performed for the following placeholders settings by respective option values:

      PlaceholderOption Value
      <JS7_CONTROLLER_ID>--id
      <JS7_CONTROLLER_HTTP_PORT>--http-port
      <JS7_CONTROLLER_PID_FILE_DIR>PIDFile=--pid-file-dir
      --pid-file-name
      User=<JS7_CONTROLLER_USER>--user<INSTALL_PATH>
      ExecStart=, ExecStop=, ExecReload=--home

Configuration

...

Files

  • <config>/private/private.conf
    • Replacements are performed for the following placeholders by respective option values:

      PlaceholderOption Value
      {{controller-id}} --controller-id
      {{controller-primary-distinguished-name}}--controller-primary-cert
      {{controller-secondary-distinguished-name}}--controller-secondary-cert
      {{joc-primary-distinguished-name}}--joc-primary-cert
      {{joc-secondary-distinguished-name}}--joc-secondary-cert
      {{keystore-file}}--keystore
      {{keystore-password}}

      --keystore-password

      {{keystore-alias}}--keystore-alias
      {{truststore-file}}--truststore
      {{truststore-password}}--truststore-password



    • Find a template for a private.conf file using placeholders for HTTPS mutual authentication:

      Code Block
      languageyml
      titleprivate.conf template file with placeholders
      collapsetrue
      js7 {
          auth {
              users {
                  # History account (used for release events)
                  History {
                      distinguished-names=[
                          "{{joc-primary-distinguished-name}}",
                          "{{joc-secondary-distinguished-name}}"
                      ]
                      password="sha512:B793649879D61613FD3F711B68F7FF3DB19F2FE2D2C136E8523ABC87612219D5AECB4A09035AD88D544E227400A0A56F02BC990CF0D4CB348F8413DE00BCBF08"
                  }
      
                  # JOC account (needs UpdateItem permission for deployment)
                  JOC {
                      distinguished-names=[
                          "{{joc-primary-distinguished-name}}",
                          "{{joc-secondary-distinguished-name}}"
                      ]
                      password="sha512:3662FD6BF84C6B8385FC15F66A137AB75C755147A81CC7AE64092BFE8A18723A7C049D459AB35C059B78FD6028BB61DCFC55801AE3894D2B52401643F17A07FE"
                      permissions=[
                          UpdateItem
                      ]
                  }
      
                  # Controller ID for connections by primary/secondary controllerController instance
                  {{controller-id}} {
                      distinguished-names=[
                          "{{controller-primary-distinguished-name}}",
                          "{{controller-secondary-distinguished-name}}"
                      ]
                  }
              }
          }
      
          configuration {
              # Locations of certificates and public keys used for signature verification
              trusted-signature-keys {
                  # PGP=${js7.config-directory}"/private/trusted-pgp-keys"
                  X509=${js7.config-directory}"/private/trusted-x509-keys"
              }
          }
      
          journal {
              # allow History account to release unused journals
              users-allowed-to-release-events=[
                  History
              ]
          }
      
          web {
              # Locations of keystore and truststore files for HTTPS connections
              https {
                  keystore {
                      # Default: ${js7.config-directory}"/private/https-keystore.p12"
                      file=${js7.config-directory}"/private/{{keystore-file}}"
                      key-password="{{keystore-password}}"
                      store-password="{{keystore-password}}"
                      # alias="{{keystore-alias}}"
                  }
      
                  truststores=[
                      {
                          # Default: ${js7.config-directory}"/private/https-truststore.p12"
                          file=${js7.config-directory}"/private/{{truststore-file}}"
                          store-password="{{truststore-password}}"
                      }
                  ]
              }
          }
      }

...