Equipments Positioning How-To

This document explains how-to define in RacksDB the positions of your infrastructure’s equipments in the racks.

For learning purpose, consider this example infrastructure named « tiger » with equipments distributed in 2 racks R01 and R02:

Equipments positioning example

In RacksDB, the equipments are declared by rack. Then, for each rack, the equipments are declared grouped in sets of similar and consecutive equipments. In this example, 6 sets can be identified:

Equipments positioning sets

In the first rack R01:

  • set 1 with 40 dense nodes cn[001-040] (1u height and half rack width).

  • set 2 with 5 classic nodes cn[101-104] (1u height and full rack width).

  • set 3 with 2 fat nodes srv[001-002] (2u height and full rack width).

In the second rack R02:

  • set 4 with 28 blade nodes cn[201-228] (5u height and 1/7th rack width).

  • set 5 with 4 network switches sw[001-004] (1u height and full rack width).

  • set 6 with 1 NAS nas001 (2u height and full rack width).

Each set has its specific equipments type. All these equipment types must be initially declared in the Types object of the database, with their individual dimensions. For this example, this can be declared this way:

types:

  # nodes
  nodes:
  - id: dense # node type for set 1
    height: 1u
    width: 1/2 # half rack width
  - id: classic # node type for set 2
    height: 1u
    width: full
  - id: fat # node type for set 3
    height: 2u
    width: full
  - id: blade # node type for set 4
    height: 5u
    width: 1/7 # 7 blades can be installed in the width of the rack

  # network equipments
  network:
  - id: racksw # network equipment type for set 5
    height: 1u
    model: Rack switch

  # storage equipments
  storage:
  - id: nas # storage equipment type for set 6
    height: 2u
    model: 2U NAS
Many required properties of NodeType, NetworkEquipmentType and StorageEquipmentType objects have been voluntarily discarded of this snippet (ex: CPU, storage devices, network interfaces) for focusing on dimensions and positions matters.
The default width of NetworkEquipmentType and StorageEquipmentType is full and corresponds to the example. This is the reason why it is not explicitely defined in the snippet.

At this stage, the dimensions of every single type of equipment is specified in RacksDB. Then, the infrastructure with all its equipments actually present must be declared, as an Infrastructure object.

First, define the infrastructure’s name and description:

name: tiger
description: Tiger cluster

For every set of equipments, the slot of the rack used by the 1st equipment in the set must be determined. This slot number defines the position of all the equipments in the set.

RacksDB considers this first equipment in the set is located on the left side of the rack, starting from this slot. Then it fills the rows from left to right, and then from bottom to top, in z-like pattern, with all consecutive equipments in the set, considering the individual dimensions of their respective type. If the equipment type width is the full rack width, equipments are just stacked up.

This logic is represented in this schema:

Equipments positioning expansion

In RackDB, racks slots are numbered from bottom to top, starting from 0.

In rack R01:

  • In set 1, the 1st equipment is located in slot 2.

  • In set 2, the 1st equipment is located in slot 24.

  • In set 3, the 1st equipment is located in slot 30

In rack R02:

  • In set 4, the 1st equipment is located in slot 2

  • In set 5, the 1st equipment is located in slot 26

  • In set 6, the 1st equipment is located in slot 35

In RacksDB database, this infrastructure layout can be declared this way, for rack R1-01:

…
layout:
- rack: R01 # 1st rack
  nodes:
  - name: cn[001-040] # set 1: 40 denses nodes starting from slot 2
    type: dense
    slot: 2
  - name: cn[100-104] # set 2: 4 classic nodes starting from slot 24
    type: classic
    slot: 24
  - name: srv[001-002] # set 3: 2 fat nodes starting from slot 30
    type: fat
    slot: 30
…

And for rack R1-A02:

…
- rack: R02 # 2nd rack
  nodes:
  - name: cn[201-228] # set 4: 28 blade nodes starting from slot 2
    type: blade
    slot: 2
  network:
  - name: sw[001-004] # set 5: 4 rack switches starting from slot 26
    type: racksw
    slot: 26
  storage:
  - name: nas001 # set 6: 1 NAS in slot 35
    type: nas
    slot: 35

After this in-depth look over this example, you are probably now able to specify the positions of your infrastructures' equipments in RacksDB!

If you feel the layout of your equipments cannot be specified in RacksDB in a consistent and natural manner, please file an issue on project code tracker. We would be happy to consider your specificities.
Show complete types and infrastructure YAML example
types:

  # nodes
  nodes:
  - id: dense # node type for set 1
    height: 1u
    width: 1/2 # half rack width
    model: Dense node of 1U height and half rack width
    cpus:
      sockets: 2
      model: Intel Xeon Silver 4316
      cores: 20
    ram:
      dimm: 4
      size: 32GB
  - id: classic # node type for set 2
    height: 1u
    width: full
    model: Classic node of 1U height
    cpus:
      sockets: 2
      model: Intel Xeon Silver 4316
      cores: 20
    ram:
      dimm: 4
      size: 32GB
  - id: fat # node type for set 3
    height: 2u
    width: full
    model: Large node of 2U height
    cpus:
      sockets: 2
      model: Intel Xeon Silver 4316
      cores: 20
    ram:
      dimm: 4
      size: 32GB
  - id: blade # node type for set 4
    height: 5u
    width: 1/7 # 7 blades can be installed in the width of the rack
    model: Blade node
    cpus:
      sockets: 2
      model: Intel Xeon Silver 4316
      cores: 20
    ram:
      dimm: 4
      size: 32GB

  # network equipments
  network:
  - id: racksw # network equipment type for set 5
    height: 1u
    model: Rack switch

  # storage equipments
  storage:
  - id: nas # storage equipment type for set 6
    height: 2u
    model: 2U NAS

infrastructures:
- name: tiger
  description: Tiger cluster
  layout:
  - rack: R01 # 1st rack
    nodes:
    - name: cn[001-040] # set 1: 40 denses nodes starting from slot 2
      type: dense
      slot: 2
    - name: cn[100-104] # set 2: 4 classic nodes starting from slot 24
      type: classic
      slot: 24
    - name: srv[001-002] # set 3: 2 fat nodes starting from slot 30
      type: fat
      slot: 30
  - rack: R02 # 2nd rack
    nodes:
    - name: cn[201-228] # set 4: 28 blade nodes starting from slot 2
      type: blade
      slot: 2
    network:
    - name: sw[001-004] # set 5: 4 rack switches starting from slot 26
      type: racksw
      slot: 26
    storage:
    - name: nas001 # set 6: 1 NAS in slot 35
      type: nas
      slot: 35
This full example is not a complete valid RacksDB database, it notably misses essential RackType and Datacenter objects. Please refer to the quickstart guide examples section for ready to use examples.