General information
Prerequisites
The following provisions should be made before you proceed to the steps below:The steps are valid only to Linux Servers (DB, APP, APM, OCR, VDS (Standalone or Cluster types of installation).Linux servers are up and running and all system requirements are met as described in the System Requirements section.
You have SSH access to all servers and root access on them. DNS names for all servers have been configured as described in the DNS Names Configuration section.
Linux servers have all required network ports opened between each other as described in the Application Ports section. If the servers are located in one network and there are no any firewalls between them, no additional actions required.Installation package provided by Workfusion has been already uploaded to every Linux server.
Cron daemon enabled for wfuser. To escape some tricky issues with Cron, see the installation troubleshooting.
The steps described here cover 90% of all effort required for installing WorkFusion SPA.In code snippets on this page some common variables are reasonably hard-codded so that it's easier to copy-paste every step if you agree on these defaults:
/opt/workfusion/workfusion-full-release-flat-.tar.gz: full path of installation package which was uploaded to all Linux servers/opt/workfusion/wf_installer: directory where the package is extracted/opt/workfusion: directory where the product will be installedwfgroupandwfuser: group and user which will own the product at run-time. You can safely use your own values, replacing the default ones appropriately.
Extract package
Perform the steps below on all Linux servers.
Log into the target server as root.
Example:
ssh -i /path/to/private-key.pem user@hostname.example.com sudo su - rootChoose or create a directory on the file-system where you want to extract installation package. Grant read access for this directory to all users:
mkdir /opt/workfusion/wf_installer chmod 0755 /opt/workfusion/wf_installerExtract installation package:
tar -xzvf /opt/workfusion/workfusion-full-release-flat-<version>.tar.gz --strip 1 -C /opt/workfusion/wf_installer
Perform initial configuration
Perform the steps below on DB server.
Log into DB Server via SSH.
Edit the following files with any available editor ("vi" is used in the example below):
cd /opt/workfusion/wf_installer vi config.yml vi secrets.ymlThe configuration files are thoroughly commented to explain each of the parameters.
Generate TLS and Vault Certificates for all servers:
./generate-certificates.sh -n -d -p "my_ca_pass"After running this command, two folders are populated with certificates:
./certificatesand./certs_db.
The command above has generated self-signed certificates for all Linux servers. Refer to Using TLS Certificates for more details on other options.
If in the config.yml file https_enabled: true, then the certificates from the ./certificates folder will be used for configuring HTTPS for all
components.
If in the config.yml file https_enabled: false, then the
certificates from the ./certificates folder will be ignored (except for vault certificates). It is required to run the ./generate-certificates.sh script in any case as it also generates Vault authentication certificates among others which are required for Product.
If you want to apply publicly trusted TLS certificates, you should put them into the ./certificates folder instead of the ones which were generated with ./generate-certificates.sh.
You need to distribute the ./certificates folder (not ./certs_db), config.yml, and secrets.yml files across all other Linux servers.
Create the archive of these files:
tar czvf wf_configs.tar.gz certificates config.yml secrets.ymlAfter running this command, the
wf_configs.tar.gzfile was created.The easiest way to deliver
wf_configs.tar.gzto all other Linux servers is via python SimpleHTTPServer. Firstly, start the HTTP server on any port which is accessible on DB server for all other Linux servers (it can be any port, even the one which will be used by some service on DB server, as it's temporary operation just for downloadingwf_configs.tar.gzto other servers). In the example below, 9999 port is used:python -m SimpleHTTPServer 9999This command makes the directory content where the command was executed downloadable via HTTP.
Run the next steps on all other Linux servers:
- Log in into target server as root and download
wf_configs.tar.gzfrom DB server:
cd /opt/workfusion/wf_installer # install wget if not installed yum -y install wget wget http://db_hostname:9999/wf_configs.tar.gz -O wf_configs.tar.gz- Unpack configs and certificates:
tar xzvf wf_configs.tar.gz -C /opt/workfusion/wf_installer/- Log in into target server as root and download
Install WorkFusion License
Perform the step below on APP server.
Copy the license.properties file (obtained from WorkFusion) to the location which you have specified in secrets.yml file for workfusion_license_file parameter. The path is relative to the /opt/workfusion/wf_installer directory.
/opt/workfusion/wf_installer/license.properties
Run precheck
Should be performed on all Linux servers;This step validates the provided configuration, checks system requirements and prerequisites.This step does not change anything in the system.
It is impossible to proceed further with installation without passing this step.
./install.sh precheck <server_role>
Available Server roles are as follows:
apm: APM serverapp: APP serverdb: DB serverocr: OCR servervds-standalone: standalone ML servervds-master: master ML servervds-slave: slave ML servervds-nfs: NFS server for ML servers
Run preinstall automatically
Should be performed on all Linux servers. To execute all preinstall steps automatically, two options should be set in
config.yml:
automate_preinstall_steps: trueautomate_system_packages_install: true
Tasks to be performed on this step:
- Setting SELinux state to permissive with targeted policy.
- Creating a user or ensuring the user exists, as defined in
wf_user(defaultwfuser). - Creating directory as defined in
install_dir. - Installation of packages from official RHEL repo.
automate_system_packages_installshould be set totrueinconfig.yml. If not, see Required packages and install them manually. - Installation of bundled RPM dependencies (which can not be or have not yet been converted to the non-root variant).
- Enabling and starting supervisord via systemd. Run as root
./install.sh preinstall <server_role>
- If you used
automate_system_packages_install: true, ensure that curl and openssl packages have versions at least not older than described in Required packages. You can check it as follows:rpm -q curlrpm -q openssl
- After execution of this step on all Linux servers, proceed to installation steps.
- If for some reason you are not allowed to perform preinstall steps automatically, refer to Run preinstall manually section, and then go to installation steps.