====== 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) | +-------+-------------------------------+ | | Ansible Inventory named | +-------+-------------------------------+ 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.