Changes between Version 37 and Version 38 of HPC_deploy


Ignore:
Timestamp:
2016-12-23T15:10:45+01:00 (7 years ago)
Author:
Pieter Neerincx
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • HPC_deploy

    v37 v38  
    8181The locations where we store source code, deployed apps, their accompanying module files, etc. are documented in the [wiki:HPC_storage#Software Storage SOP]. We use the [https://www.tacc.utexas.edu/research-development/tacc-projects/lmod Lua based module system (Lmod)] to make software transparently available on all machines at runtime. Details on how to install and configure !EasyBuild, Lmod and our environment sync script on a new cluster can be found in our [https://github.com/molgenis/depad-utils/blob/master/hpc-2.x/README.md depad-utils GitHub repo].
    8282
    83 !EasyBuild comes with !EasyConfigs for many of our apps of interest ''out of the box''; These files are stored
    84 * On our machines in a sub sub sub directory of where !EasyBuild was installed - Latest stable release we deployed.[[BR]]
    85   The easiest way to find this directory is to load !EasyBuild and search for an app like this:
     83==== Locations of !EasyConfig files to deploy software with !EasyBuild ====
     841. !EasyBuild comes with !EasyConfigs for many of our apps of interest ''out of the box''; These files are stored
     85   * On our machines in a sub sub sub directory of where !EasyBuild was installed.[[BR]]
     86     The easiest way to find this directory is to load !EasyBuild and search for an app with {{{-S}}} like this:
    8687{{{
    8788$> module load EasyBuild
     
    106107== temporary directory /tmp/eb-JHpvCj has been removed.
    107108}}}
    108 * On [https://github.com/hpcugent/easybuild-easyconfigs/tree/master/easybuild/easyconfigs https://github.com/hpcugent/easybuild-easyconfigs/tree/master/easybuild/easyconfigs] - Latest and greatest from the source.
    109 * On our machines in {{{/apps/sources/EasyBuild/custom/}}} - Bleeding edge home made !EasyConfigs that were not yet committed to and pull-merged into the !GitHub repos.
     109   * On [https://github.com/hpcugent/easybuild-easyconfigs/tree/master/easybuild/easyconfigs https://github.com/hpcugent/easybuild-easyconfigs/tree/master/easybuild/easyconfigs] for the latest and greatest from the source.
     1101. Custom EasyConfigs not yet pull-merged into the !GitHub repos from [http://www.ugent.be/hpc/en HPC Ugent] are stored in a fork from this repo at:
     111{{{
     112https://github.com/molgenis/easybuild-easyconfigs.git
     113}}}
     114   If it ain't on GitHub your EasyConfig does not exist and software centrally deployed in /apps without EasyConfig on GitHub is subject to removal without warning!
     115   We use the standard way of working with GitHub repo's, so:
     116   1. Create an online fork @ GitHub
     117   2. Clone your own online GitHub fork in for example your home dir on the cluster
     118   3. When adding/modifying EasyConfigs commit followed by a push to your own fork.
     119      Never push to the blessed master @ https://github.com/molgenis/easybuild-easyconfigs.git!
     120   4. Create a pull request to get your changes into the blessed master.
     121      Creating a pull request to get your changes directly into the main repo from UGent is off course also an option,
     122      but may require more patience to have your pull request processed.
     123   5. We do plan to create pull requests from the github.com/molgenis to the source @ github.com/hpcugent ...
     124   In pseudo code:
     125{{{
     126#
     127# After creating your online fork @ GitHub, login on a cluster
     128# and clone your GitHub repo supplemented with our custom EasyConfigs.
     129#
     130$> cd ${HOME}
     131$> mkdir git
     132$> cd git
     133$> git clone https://github.com/${your_github_account}/easybuild-easyconfigs.git
     134$> cd easybuild-easyconfigs
     135$> git remote add blessed https://github.com/molgenis/easybuild-easyconfigs.git
     136$> git remote set-url --push blessed non.existing.domain
     137
     138#
     139# Now you can deploy a tool; for example version v16.11.1 of our cluster-utils with EasyBuild
     140#
     141$> ml EasyBuild
     142$> eb --robot \
     143      --robot-paths="${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/:" \
     144      --software=cluster-utils,v16.11.1
     145
     146#
     147# Software which needs to be compiled and requires a toolchain can be deployed with:
     148#
     149$> ml EasyBuild
     150$> eb --robot \
     151     --robot-paths="${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/:" \
     152     --software=${name},${version} \
     153     --toolchain=foss,2015b
     154}}}
     155   Note that the **foss 2015b** toolchain is still our default. We will most likely skip 2016a and move to 2016b during scheduled maintenance of summer 2017.
     156
     157==== Creating a new !EasyConfig ====
    110158
    111159If there is no existing !EasyConfig, we have to create one ourselves.
     
    151199==== 0. Make sure perms are correct ====
    152200
    153 Either use umask before you start:
     201use umask **before** you start:
    154202{{{
    155203umask 0002
    156204}}}
    157 or use
    158 {{{
    159 chmod g+rwX,o+rX,o-w /apps/software/.....   /apps/modules/.....
    160 }}}
    161 after deploying, but **before** [#UpdateCacheAndSync running the hpc-environment-sync.bash script]!
    162205
    163206==== 1. Find existing !EasyConfig or create a new one ====
    164  * To search for existing !EasyConfigs in both the default robot search path as well as in our dir for custom !EasyConfigs:
     207 * To search for existing !EasyConfigs in both the default robot search path as well as in your fork of our custom !EasyConfigs git repo cloned into your home dir:
    165208{{{
    166209$> module load EasyBuild
    167210$> module list
    168 $> eb --robot-paths=:/apps/sources/EasyBuild/custom/ -S MySearchTerm
     211$> eb --robot-paths="${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/:" -S MySearchTerm
    169212}}}
    170213 * When no suitable !EasyConfig is present, create your own:
    171214{{{
    172 $> cd /apps/sources/EasyBuild/custom/
    173 $> touch MyEasyConfig-1.2.3.eb
    174 }}}
    175    Make sure to name the *.eb file exactly the same as the name of the eventually installed ''module'' and its ''version''.
     215$> cd ${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/
     216$> touch m/MyEasyConfig-1.2.3.eb
     217}}}
     218   Make sure to name the *.eb file exactly the same as the name of the eventually installed ''module'' and its ''version''. When a toolchain is used this must be included in the file name. E.g.:
     219{{{
     220$> touch m/MyEasyConfig-1.2.3-foss-2015b.eb
     221}}}
    176222
    177223==== 2. Installing the software ====
    178 Enable the ''robot'' option for automatic dependency resolution and **append** our dir for custom !EasyConfigs to the search path to make !EasyBuild search for deps in first the default and second our custom dir in that order of precedence.
     224Enable the ''robot'' option for automatic dependency resolution and **prepend** our custom !EasyConfigs repo to the search path to make !EasyBuild search for deps in our custom !EasyConfigs repo first.
    179225{{{
    180226$> module load EasyBuild
    181227$> module list
    182 $> eb --robot --robot-paths=:/apps/sources/EasyBuild/custom/ /path/to/MyEasyConfig-1.2.3.eb
     228$> eb --robot \
     229      --robot-paths="${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/:" \
     230      --software=MyEasyConfig,1.2.3 \
     231      --toolchain=foss,2015b
    183232}}}
    184233
     
    270319A: By default !EasyBuild will refuse to overwrite an existing installation. Modules that have been deployed and are used for production should never be modified: deploy a new version instead. During debugging/testing it may be necessary to overwrite a module though; I that case you can force install using ''-f'' like this:
    271320{{{
    272 $> eb -f --robot --robot-paths=:/apps/sources/EasyBuild/custom/ /path/to/MyEasyConfig-1.2.3.eb
     321$> eb -f --robot --robot-paths="${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/:" --software=MyEasyConfig,1.2.3 --toolchain=foss,2015b
    273322}}}
    274323==== Q: I've updated the source code for an app, but when I try to re-deploy with !EasyBuild nothing changes; What is wrong? ====