Clouds

The DoE-Suite supports multiple _clouds_. A cloud refers to an environment in which servers are set up and configured. So far, we support AWS (aws), Euler (euler, ETH compute cluster), and clouds described by an Ansible inventory file.

Set the environment variable DOES_CLOUD to control the default cloud. On every invocation of the DoE-Suite, you can set the cloud environment, e.g., make run suite=XYZ id=new cloud=euler. For clouds described by an Ansible inventory file, the name of the inventory is the cloud name. Note, that if you started a suite on a cloud, than this suite run cannot switch to another cloud.

Supported clouds

Cloud

Description

aws

Amazon Web Services (EC2)

euler

Euler (ETHZ compute cluster)

<INV>

Ansible Inventory named <INV>

Cloud multiplexing

Doe-suite can load cloud-specific functionality depending on the active cloud.

For some roles, the DoE-Suite will look for the cloud specific {cloud}.yml file. If no such file exists, main.yml will be used as a fallback.

This cloud multiplexing is enabled for the following roles: - setup-suite - Any suite-cloud-* role - Any host-specific role, those in doe-suite-config/roles/setup-*.

Schedulers

We now have the concept of schedulers that handles the scheduling of jobs. The default scheduler is tsp which will be set-up on the OS by the DoE-Suite. In some cases, the cloud has its own scheduler, for example bsub or slurm in Euler. The variable _job_scheduler in doe-suite/src/group_vars/all is used to control which scheduler is used.

For ansible inventories, you can set the scheduler in the inventory file as a host variable: job_scheduler: slurm

We support the same type of multiplexing as for clouds. The Doe-Suite looks for the specific scheduler implementation in the following roles: - suite-scheduler-enqueue Enqueue the pending jobs - suite-scheduler-remove Remove a finished job (unused in slurm, bjobs, but used for tsp) - suite-scheduler-status Get status of a specific job

Adding new clouds

main represents all supported clouds except the ones that have a specific file.

In doe-suite-config/roles/**, rename main.yml to aws.yml

Add setup tasks for all cloud-related tasks: suite-cloud-* in the suite.