Installation¶
Machine Preparation¶
Install a real or virtual machine according to the Linux Installation Document
Note
use as ELT_ROLE the default: ELT_ROLE=BASE
For an upgrade from IFW 5.0.0-beta (Fedora34), first remove old version of elt-ifw and hlcc RPMs and then install the latest Fedora34 ELTDEV (puppet-elt-4.8.0), as root, with the sequence:
$ dnf remove elt-ifw*
$ dnf remove elt-hlcc*
$ yum -y update puppet-elt-4.8.0
$ /root/elt/puppet-force-align
Requirements¶
For this version, the IFW requires a WS with at least 8Gb of RAM memory to compile.
ELT Development Environment (DevEnv)¶
Before installing the IFW it is needed to setup the environment. A very good starting point is this document
Note
The version 4.8.0 of ELT Development Environment (Fedora) shall be used with version 5 of ICS Framework (IFW).
ELT CII Services¶
Starting from version 5, the IFW requires the proper installation and configuration of CII services on the machine where it is intended to be deployed. You can just execute the following script as root (see below) or follow the post installation procedure documented here
The IFW team recommends to use the “ownserver” role for the development machine where the IFW is going to be installed.
$ /elt/ciisrv/postinstall/cii-postinstall role_ownserver
$ cii-services start all
For more information about CII post installation and other CII related topics, you can visit the ESO knowledge base page
Operational User¶
It is recommended to install and run the instrument software under the eltdev account to simplify integration with Nomad/Consul that comes configured to run under eltdev in DevEnv version 4.8.0.
It is possible to start/shutdown the software from another user but it requires setting properly the environment variables and the permissions for shared folders like INTROOT and DATAROOT.
Environment Variables¶
IFW is relying on the following environment variables:
DATAROOT: Directory on the host machine in which Output Data Products will be generated.
CFGPATH: The “CFGPATH” environment variable, is a colon separated list of paths, pointing to possible Resource Directories in which resource data of different kinds are located.
INTROOT: In this release, the example configuration, libraries, header files and binaries, are installed into the location pointed by “INTROOT”. It is used as “PREFIX” for waf installation location.
Getting Started¶
Checking CII services
Check that CII services are properly running:
$ cii-services status
The output of the above command shall be similar to this:
CII Services Tool (20221103) Collecting information........ Status Summary: (Note: '--' means 'not available') OK InternalConfig from Central Server OK OLDB Normal Mode OK OLDB with Blob Values -- Telemetry
If they are not properly running you can execute (as root):
$ cii-services start all
Install IFW components
Starting from IFW version 4, all IFW components are available as RPMs and can be installed using yum install as root.
$ yum -y install elt-ifw-5.0.0
This command will install all ifw RPMs and the components rad, seq, ddt RPMs :
elt-ddt-1.0.0-3.fc34.x86_64
elt-rad-5.2.0-5.fc34.x86_64
elt-seq-4.1.0-1.fc34.x86_64
elt-ifw-wdglib-0.1.0-1.fc34.x86_64
elt-ifw-calob-0.1.0-1.fc34.x86_64
elt-ifw-rtmstools-1.0.0-1.fc34.x86_64
elt-ifw-odp-4.0.0-1.fc34.x86_64
elt-ifw-sup-3.0.0-1.fc34.x86_64
elt-ifw-fcf-5.0.0-1.fc34.x86_64
elt-ifw-daq-3.0.1-1.fc34.x86_64
elt-ifw-core-5.0.0-1.fc34.x86_64
elt-ifw-ccf-3.0.0-1.fc34.x86_64
elt-ifw-calob-0.1.0-1.fc34.x86_64
Note
Since IFW version 4, the elt-etr RPM is installed together with ELT Development Environment.
Install HLCC Components
Since IFW version 5, the HLCC components are available as RPMs and can be installed using yum install as root. The HLCC includes a telescope simulator that can be used to validate the non-deterministic interface between the instrument and the ELT CCS. For more information about HLCC refer to the User Manual
$ yum -y install elt-hlcc-sw-devel-1.2.0 elt-hlcc-if-devel-1.2.0
This command will install the HLCC RPMs:
elt-hlcc-if-1.2.0-1.fc34.x86_64.rpm
elt-hlcc-if-devel-1.2.0-1.fc34.x86_64.rpm
elt-hlcc-sw-1.2.0-1.fc34.x86_64.rpm
elt-hlcc-sw-devel-1.2.0-1.fc34.x86_64.rpm
Login as eltdev user.
Create HLCC database structure
$ hlccOldbloader --deployment ins
Note
The above command will populate all database points needed by the telescope simulator.
Create the directories for the installation areas:
$ cd <the location for introot>
$ getTemplate -d introot INTROOT
$ cd <the location for dataroot>
$ getTemplate -d dataroot DATAROOT
The environment shall contain the definitions of the relevant environment variables such as INTROOT, DATAROOT, LD_LIBRARY_PATH, PYTHONPATH, etc. These environment variables will be automatically defined by means of the file private.lua, defined here below, which in turn uses the system modulefile definitions in /elt/System/modulefiles/introot.lua. (In the following steps, we assume that INTROOT and DATAROOT directories are created in the home directory of the user.)
Under eltdev home directory:
$ mkdir modulefiles
$ cd modulefiles
Create and edit the file
private.luaundermodulefilesdirectory. Use the example file below:
local home = os.getenv("HOME")
local introot = pathJoin(home, "INTROOT")
setenv ("INTROOT", introot)
setenv ("PREFIX", introot)
local dataroot = pathJoin(home, "DATAROOT")
setenv ("DATAROOT", dataroot)
load ("introot")
prepend_path("CFGPATH","<path_to_ins>/<instrument>/resource")
Note
Each IFW components RPMs provide a lua file to define the minimum set of default environment variables. Loading ifw.lua will also load all IFW components lua files.
Warning
Log out and then in again so that modulefiles directory becomes known to
the environment and the newly created private.lua is loaded.
This is needed only when the
directory modulefiles and the private.lua are created for the first time.
File private.lua is loaded by default upon login.
In case more .lua files (with different names) will be added to $HOME/modulefiles, they can be made known to the
environment just with:
$ module load <lua file>
Warning
Disclaimer:
The lua files, generated by wtools, present under /elt/<ifw component>/etc/modulefiles/ should not be used. Only IFW component lua files installed under /elt/System/modulefiles should be loaded (loaded by default within the ifw.lua).
You can check which LMOD modules are available after login with:
$ module avail
The output should look like as follows: (the available/loaded modules might change with the software versions, but private and introot should be loaded)
------------------------------------------------ /home_local/eltdev/modulefiles -------------------------------------------------
private (L)
------------------------------------------------- /elt/common/modulefiles/core --------------------------------------------------
eltdev (L) introot (L)
------------------------------------------------ /elt/common/modulefiles/default ------------------------------------------------
ciisrv (L) ecsif (L) hlcc (L) mal (L) oldbloader (L) seq
(L) wtools (L)
cut (L) elt-trs (L) ifw (L) msgsend (L) rad (L) taiclock (L)
ddt (L) etr (L) lsv (L) mudpi (L) rtms (L) wdep (L)
--------------------------------------------- /usr/share/lmod/lmod/modulefiles/Core ---------------------------------------------
lmod settarg
Where:
L: Module is loaded
Note
For more information, read this document
Start nomad and consul services¶
Following ELT standards, IFW uses Nomad (see here) to manage the life cycle of the ICS SW components (see next chapter Getting Started ). The Nomad and Consul RPMs installed within the ELT Development Environment, provide a default configuration to start Nomad and Consul in one node cluster using the loopback interface. Nomad and Consul services has to be started as the eltdev user with the command systemctl.
Warning
For Nomad to work properly, the environment under eltdev user shall be defined with the same LMOD configuration as the running user (see elmo_installation_ref).
Start nomad and consul services
$ systemctl start nomad
$ systemctl start consul
Check status of nomad and consul services
$ systemctl status nomad
$ systemctl status consul
Stop nomad and consul services
$ systemctl stop nomad
$ systemctl stop consul
Manual installation¶
As in previous versions, the IFW components can also be installed from Gitlab using the release tar file. This step is optional since IFW software is already included in the RPMs mentioned above.
Note
The components to be installed will depend on the usage required by developers. Below are the instructions of the packages to be installed that are needed to follow the examples provided throughout the manual. Other IFW components can be installed following the same procedure.
Warning
Before building IFW components (rtmstools, ccf), the DDT RPM need to be installed using yum install as root.
$ yum -y install elt-ddt-devel-1.0.0
Download, unpack and build IFW components
Go to the ESO Gitlab site and download the release tar file for each component (ifw-core, ifw-daq, ifw-rtmstools, ifw-odp, ifw-wdglib, ifw-fcf, ifw-ccf, ifw-sup, ifw-calob).
After unpacking the ifw packages downloaded from ESO GitLab, execute the steps below to build and install the software for each component.
$ cd ifw-core
$ waf configure
$ waf build install
$ cd ifw-daq
$ waf configure
$ waf build install
$ cd ifw-rtmstools
$ waf configure
$ waf build install
$ cd ifw-odp
$ waf configure
$ waf build install
$ cd ifw-wdglib
$ waf configure
$ waf build install
$ cd ifw-ccf
$ waf configure
$ waf build install
$ cd ifw-fcf
$ waf configure
$ waf build install
$ cd ifw-sup
$ waf configure
$ waf build install
$ cd ifw-calob
$ waf configure
$ waf build install
Project Template¶
This template will provide a sample configuration for an instrument project. Developers can adapt it to their own instruments. Examples in the documentation will refer to this template so it is recommended to download it from GitLab.
Go to the ESO Gitlab site and download the tar file of the template: Template release
After unpacking the template, you should see the following:
$ tree ifw-templates
ifw-templates
└── project
├── cookiecutter.json
├── {{cookiecutter.project_name}}
└── hooks
The instructions how to use this template can be found in next chapter ( Getting Started ).