This directory contains an Ansible role (compatibility_layer) in the subdirectory roles which has
all functionality for installing the EESSI compatibility layer. It performs the following tasks:
- install Gentoo Prefix, if this has not been done yet;
- make symlinks to some host paths in order to fix issues with, for instance, user accounts and groups;
- add a given overlay to the installation;
- use the Portage configuration files from that overlay, if applicable, by making symlinks to them;
- install a given list of package sets;
- install a given list of additional packages;
- test the installation using ReFrame.
The playbook install.yml will execute this role on a given server.
Before running the playbook, make sure the following settings are correct, and override them if necessary. For the default values, see the defaults file.
| Variable | Description |
|---|---|
| custom_overlays | List of dictionaries of custom overlays that will be added. The dictionaries should have keys name, source and url, and optionally eclass-override. |
| Variable | Description |
|---|---|
| cvmfs_repository | Name of your CVMFS repository (used for the transaction) |
| Variable | Description |
|---|---|
| eessi_version | Compatibility layer version, which will, by default, be included in the gentoo_prefix_path and be used to install the right package_sets |
| gentoo_prefix_path | Path to the root of your Gentoo Prefix installation |
| gentoo_git_repo | URL to the git repository of the (official) Gentoo ebuild repository |
| gentoo_git_commit | Git commit hash of the Gentoo ebuild repository to be used for the bootstrap |
| prefix_required_space | Minimal amount of disk space that is required for the Gentoo Prefix bootstrap |
| prefix_user_defined_trusted_dirs | List of paths to the user defined trusted dirs for glibc |
| prefix_mask_packages | Contents of a package.mask file that should be used during the bootstrap |
| prefix_unmask_packages | Contents of a package.unmask file that should be used during the bootstrap |
| prefix_bootstrap_use_flags | Contents of package.use file to put in place after bootstrap stage 3 |
| prefix_use_builtin_bootstrap | Use the container's built-in bootstrap script? |
| prefix_custom_bootstrap_script | Dictionary with the local source and remote destination of the bootstrap script |
| prefix_source_options | Arguments to be passed to the Prefix bootstrap script |
| prefix_install | Prefix installation command |
| prefix_locales | List of locales to be generated |
| package_sets | List of package sets to be installed |
| prefix_packages | List of additional packages to be installed |
| prefix_remove_packages | List of packages to be removed after the bootstrap |
| reframe_venv | Path where a virtual environment will be created for the ReFrame installation |
| symlinks_to_host | List of paths that should get a symlink to the corresponding host path |
| Variable | Description |
|---|---|
| prefix_reprod_dir | Name of subdirectory for storing reproducibility information |
| prefix_packages_file | Filename for storing list of installed packages |
| prefix_metadata_json | Filename for storing metadata of build |
| Variable | Description |
|---|---|
| eessi_log_dir | Directory for storing the log files |
| prefix_build_log | Path to the Prefix installation log file |
| emerge_log | Path to the Emerge log file |
The playbook can be run using:
ansible-playbook -i hosts -b install.yml
The -b option will assume you can become root without a sudo password; if you do need to provide a password, also include -K. Furthermore, you have to supply a valid hosts file (here named hosts).
By default, the playbook will only run on the host listed in the cvmfsstratum0servers section of the supplied hosts file. So, your hosts file should at least have:
[cvmfsstratum0servers]
ip-or-hostname-of-your-stratum0 eessi_host_arch=x86_64 eessi_host_os=linux
The eessi_host_arch corresponds to the architecture of the machine that executes the playbook and for which this compatibility layer has to be built, e.g. x86_64, aarch64, or ppc64le.
Similarly, eessi_host_os should refer to the operating system of the machine, and should be set to either linux or macos.
Note that, by default, the bootstrap script from the root directory of this git repository will be used, unless you set prefix_use_builtin_bootstrap to yes
(in which case the bootstrap script included in the Prefix build container will be used).
A different bootstrap script can be used by changing prefix_custom_bootstrap_script.local to a local path.