Grid‘5000

Installation

Connect to a Grid‘5000 frontend of your choice. Then, refer to the Getting Started section to install Enos.

If the virtualenv module is missing:

$ pip install virtualenv --user     # Install virtualenv
$ export PATH=~/.local/bin/:${PATH} # Put it into your path

Basic configuration

The provider relies on cluster names to group the wanted resources. For example the following is a valid resources description:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
---
provider:
  type: g5k
  job_name: 'enos-jenkins'
  walltime: '02:00:00'
        
resources:
  paravance:
    compute: 1
    network: 1
    control: 1

# This will describe the topology of your services
inventory: inventories/inventory.sample

registry:
  type: internal

# Enos Customizations
enable_monitoring: no

# Kolla parameters
kolla_repo: https://git.openstack.org/openstack/kolla-ansible
kolla_ref: stable/queens

# Vars : globals.yml
kolla:
  kolla_base_distro: centos
  kolla_install_type: source
  enable_heat: no

Deployment

We suggest you to run the deployment from a dedicated node (especially for large deployment). For now the recommended way to do so is to reserve one node prior of your reservation. In the case of an interactive deployment:

frontend$ oarsub -I -l 'walltime=2:00:00'
node$ source venv/bin/activate
node$ <edit configuration>
node$ enos deploy

Note

You’ll need to configure the access to the Grid‘5000 API by setting the following in your ~/.execo.conf.py :
# ~/.execo.conf.py
g5k_configuration = {
    'api_username': "your username",
    'api_verify_ssl_cert': False
}

Default provider configuration

The provider comes with the following default options:

DEFAULT_CONFIG = {
    'job_name': 'Enos',             # Job name in oarstat/gant
    'walltime': '02:00:00',         # Reservation duration time
    'env_name': 'debian9-x64-nfs',  # Environment to deploy
    'reservation': '',           # Reservation date
    'job_type': 'deploy',           # deploy, besteffort, ...
    'queue': 'default'              # default, production, testing
}

They can be overriden in the configuration file.

Advanced Configuration

The following is equivalent to the basic configuration but allows for a finer grained definition of the resources and associated roles.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
provider:
  type: g5k
  job_name: 'enos-jenkins'
  walltime: '02:00:00'
  role_distribution: debug
  resources:
    machines: 
      - role: control
        nodes: 1
        cluster: paravance
        primary_network: int-net
        secondary_networks: [ext-net]
      - role: compute
        nodes: 1
        cluster: paravance
        primary_network: int-net
        secondary_networks: [ext-net]
      - role: network
        nodes: 1
        cluster: paravance
        primary_network: int-net
        secondary_networks: [ext-net]
    networks:
      - id: int-net
        site: rennes
        type: kavlan
        role: network_interface
      - id: ext-net
        site: rennes
        type: kavlan
        role: neutron_external_interface
        
inventory: inventories/inventory.sample

registry:
  type: internal

kolla_repo: https://git.openstack.org/openstack/kolla-ansible
kolla_ref: stable/queens
kolla:
  kolla_base_distro: centos
  kolla_install_type: source
  enable_heat: no

Reservation

In order to reserve in advance the ressources needed by your deployment you can set the reservation key to the desired sart date. And launch enos deploy.

# Reserve the 29. February 2020 at 19:00:00 for 14 hours
provider:
  type: g5k
  ...
  reservation: 2020-02-29 19:00:00
  walltime: 14:00:00
  ...

EnOS will wait for the job to start. You can keep the process running in the background (e.g using a screen). Alternatively you can stop it (once the reservation is done) and relaunch it later with the exact same configuration file. For this purpose you can leverage the -f options of EnOS.