Run pre-installation steps manually
Use the following preparation guide in cases when the company's policies forbid using root users or sudo permissions for installing the Product. This instruction will help
you manually run the required preliminary steps and install the Product as the application user.
Introduction
The following steps require root privileges:
- Creation of users and groups.
- Creation of directories and assigning permissions to them.
- Extracting installation package.
- Setting
sysctlparameters. - Assigning setcap capabilities to a customer-facing web server (HAProxy).
Intelligent Automation Cloud Enterprise requires a shared network folder. For that, you can use any existing NAS. Otherwise, see further for the instruction on deploying NFS on the IA Cloud server.
Prepare Linux servers
To prepare the Linux servers for installation:
Log in to the Master server as a user with
sudoorrootpermissions:$ ssh -i ~/.ssh/<your-ssh-key> <root-user>@<linux-server>Create a primary group for the application user. Skip this step if you want to use the existing Active Directory group or existing local Linux group.
Remember that the group and group ID (GID) must be the same on each server.
$ groupadd wfuserCreate the application user (here,
WFUSER) and add it to the group created on step 2. Skip this step if you want to use an existing Active Directory user or a local Linux user. Remember that the user and user ID (UID) must be the same on each Linux server.$ useradd -m -g wfuser wfuserCreate the installation directory (here, /opt/workfusion), and set the application user as an owner of this directory.
$ mkdir /opt/workfusion $ chmod 0755 /opt/workfusion $ chown wfuser:wfuser /opt/workfusionCreate a shared directory (here, /opt/workfusion/shared), and set the application user as an owner of this directory.
$ mkdir /opt/workfusion/shared $ chmod 0755 /opt/workfusion/shared $ chown wfuser:wfuser /opt/workfusion/sharedExtract the installation package:
On the installation server, in the /opt/workfusion/ directory, create a directory for the IA Cloud installation package, for example, /opt/workfusion/wf_installer. Grant the read access for this directory to all users:
$ mkdir -p /opt/workfusion/wf_installer $ chmod 0755 /opt/workfusion/wf_installer $ chown wfuser:wfuser /opt/workfusion/wf_installer $ cd /opt/workfusion/wf_installerDownload the IA Cloud installation package with any available method. If Internet access is available on the server, use the following example, and remember to specify the link to the installer.
curl -o 'workfusion-full-package.tar.gz' '<link-to-IA-Cloud-installation-package>'Extract the downloaded package to the directory:
tar -xzvf /opt/workfusion/wf_installer/workfusion-full-package.tar.gz --strip 1 -C /opt/workfusion/wf_installer
Create the systemd unit file for supervisord management tool that is used for all IA Cloud services:
Calculate ulimits values based on the following example. Use your "number of vCPU" values for the calculations.
- LimitNOFILE: "number of vCPU multiplied by 25,000"
- LimitNPROC: "number of vCPU multiplied by 1,280"
Copy the following example to a text editor and replace the default values (here, 200000 and 10240), with the values calculated on the previous step. Here, the example is provided for eight vCPUs. If you have other values, use them for the calculations. Remember to change
INSTALL_DIR,User, andGroupaccording to your environment.[Unit] Description=supervisord Requires=local-fs.target After=local-fs.target [Service] Environment=INSTALL_DIR=/opt/workfusion User=wfuser Group=wfuser LimitNOFILE=200000 LimitNPROC=10240 LimitMEMLOCK=infinity Type=simple Restart=on-failure RestartSec=10 StartLimitInterval=300 StartLimitBurst=5 TimeoutStartSec=300 TimeoutStopSec=30 SendSIGKILL=yes ExecStart=/bin/bash -c 'while [ ! -f ${INSTALL_DIR}/python-site/bin/wfmanager ]; do sleep 30; echo "$(date) Waiting for wfmanager to be installed..."; done; source ${INSTALL_DIR}/environment.sh && exec ${INSTALL_DIR}/python-site/bin/supervisord -c ${INSTALL_DIR}/supervisord/conf/supervisord.conf' [Install] WantedBy=multi-user.targetCopy and paste the updated example above to the file
/etc/systemd/system/supervisord.service.
Run the following commands to enable autostart of the supervisord service:
$ systemctl daemon-reload $ systemctl enable supervisord.service $ systemctl start supervisord.serviceRepeat steps 1-8 on each Linux server.
Set up Master server
To set up Master server, perform the following action as root:
On the Master server, copy the HAProxy binary and enable HAProxy to run as the application user on privileged ports (below 1025):
$ mkdir -p /opt/workfusion/haproxy/bin $ cd /opt/workfusion/wf_installer/ $ cp sources/haproxy-<version>-wf-bundled.bin /opt/workfusion/haproxy/bin/haproxy $ chmod 0750 /opt/workfusion/haproxy/bin/haproxy $ chown -R wfuser:wfuser /opt/workfusion/haproxy/bin $ /usr/sbin/setcap CAP_NET_BIND_SERVICE=+eip /opt/workfusion/haproxy/bin/haproxy $ echo net.ipv4.tcp_tw_recycle=0 >> /etc/sysctl.conf && sysctl -pInstall the required packaged dependencies:
yum -y localinstall /opt/workfusion/wf_installer/sources/nfs-utils*Create the directory to be a mount pont:
$ mkdir /opt/workfusion/vds-data $ chmod 0755 /opt/workfusion/vds-data $ chown wfuser:wfuser /opt/workfusion/vds-dataNote: VDS (Virtual Data Since) is the former name for the BEP component.
Prepare a shared directory:
If you are not going to use external NAS, set up the NFS-server:
Enable and start rpcbind as
root:$ systemctl enable rpcbind
$ systemctl daemon-reload
$ systemctl start rpcbind
$ systemctl status rpcbindCreate an NFS-server configuration file as
root:cat << EOF > /etc/sysconfig/nfs
# TCP port rpc.lockd should listen on.
LOCKD_TCPPORT=32800
# UDP port rpc.lockd should listen on.
LOCKD_UDPPORT=32700
#
# Optional arguments passed to rpc.nfsd. See rpc.nfsd(8)
RPCNFSDARGS=""
# Optional arguments passed to rpc.mountd. See rpc.mountd(8)
RPCMOUNTDOPTS=""
# Port rpc.mountd should listen on.
MOUNTD_PORT=20048
#
# Optional arguments passed to rpc.statd. See rpc.statd(8)
STATDARG=""
# Optional arguments passed to sm-notify. See sm-notify(8)
SMNOTIFYARGS=""
#
# Optional arguments passed to rpc.idmapd. See rpc.idmapd(8)
RPCIDMAPDARGS=""
#
RPCGSSDARGS=""
#
# Enable usage of gssproxy. See gssproxy-mech(8).
GSS_USE_PROXY="yes"
#
# Optional arguments passed to blkmapd. See blkmapd(8)
BLKMAPDARGS=""
EOFIn the exports file /etc/exports, add the following line, by pasting and running the example as
root:cat << EOF >> /etc/exports
/opt/workfusion/vds-data *(fsid=0,rw,async,no_root_squash,no_subtree_check,insecure)
EOFStart the NFS-server:
$ systemctl enable nfs-server
$ systemctl start nfs-server
$ systemctl status nfs-server
Only for external NAS:
Prepare the shared folder on NAS.
Paste and run the following command as
rootto ensure that the folder is mounted at startup:cat << EOF >> /etc/fstab
<nas_server_hostname>:/path/to/shared/folder /opt/workfusion/vds-data nfs rw,bg,retrans=5000,rsize=8192,vers=3,wsize=8192,timeo=14,intr 0 0
EOFRemember to specify your <nas_server_hostname> and </path/to/shared/folder>.
Mount the NFS shared folder as
root.mount /opt/workfusion/vds-data
After preparing the NFS-server, set required sysctl parameters:
cat << EOF > /etc/sysctl.d/elasticsearch.conf
vm.max_map_count=262144
EOF
sysctl -p /etc/sysctl.d/elasticsearch.conf
Set up Agent server
To set up Agent server, perform the following action as root:
Install the required packages for Agent Server(s):
yum -y localinstall /opt/workfusion/wf_installer/sources/nfs-utils*Create a directory for the NFS mount point:
$ mkdir /opt/workfusion/vds-data $ chmod 0755 /opt/workfusion/vds-data $ chown wfuser:wfuser /opt/workfusion/vds-dataIn /etc/fstab, add the following line:
cat << EOF >> /etc/fstab <master_hostname>:/opt/workfusion/vds-data /opt/workfusion/vds-data nfs rw,bg,retrans=5000,rsize=8192,vers=3,wsize=8192,timeo=14,intr 0 0 EOFNote: if you use external NAS, replace <master_hostname>:/opt/workfusion/vds-data with the actual NAS server hostname and shared folder path.
Mount the NFS-shared folder:
mount /opt/workfusion/vds-data
After performing the above steps, proceed to preparing the configuration files and installation. Remember not to run the command ./install.sh preinstall <server-name> on the Linux servers because you have just performed the same operations manually as the script does automatically. Proceed to the installation commands ./install.sh install <server-name> instead.