This page describes a new configuration system that will be added to VCL that can be used to dynamically configure deployed systems.

Database Schema


config:

  • id - id of record
  • name - name of record
  • ownerid - owner of this record (reference to user.id)
  • configtypeid - type of record (reference to configtype.id)
  • data - any data associated with this (ex. puppet manifest)
  • optional - 0/1 - when this config is mapped to something, can the user specify to apply it or not

configtype:

  • id - id of record
  • name - name of record
  • moduleid - id of module that handles this type of record (reference to module.id)initial types: puppet, subimage, shellcommand, perlfunction, software
    configvariable:
  • id - id of record
  • name - name of record
  • configid - config this is associated with (reference to config.id)
  • value - default value of this variable
  • required - 0/1 - when mapped to something, is this variable always applied
  • ask - 0/1 - will the user be prompted for a value for this variable, or will the default value always be used
  • key - string in config.data to replace with the value of this variable
  • datatype - enum(int, multiint, string) - type of this variable so that the frontend knows how to validate it
    There are some initial, special names:
    • subimage - used for clusters, specifies a subimage to be deployed; when deployed, configinstancevariable.value will be reservation.id of the subimage
    • min - used in conjunction with subimage to specify a minimum number of those subimages
    • max - used in conjunction with subimage to specify a maximum number of those subimages
    • runbefore - used to relate to other configs to specify that this should be run before the ones specified in 'value'
    • runafter - used to relate to other configs to specify that this should be run after the ones specified in 'value'
    • getdata - ??

configinstance:This is similar to the config table, but is for deployed systems.* id - id of record

  • reservationid - reservation this is associated with (references reservation.id)
  • configid - config entry being applied (references config.id)
  • status - new/processing/completed??

configinstancevariable:This is similar to the configvariable table, but is for deployed systems.* configinstanceid - config instance this is associated with (references configinstance.id)

  • configvariableid - config variable being applied (references configvariable.id)
  • value - similar to configvariable.value, but can be set by user to different value if configvariable.ask is set to 1

configmap:This is for mapping configs to various resources or other items in VCL.* configid - config being mapped (references config.id)

  • subid - id from specific resource table (ex. image.id)
  • configmaptypeid - type of resource or other item in VCL this is mapped to (references configmaptype.id)
  • affiliationid - allows configs to only be mapped for a specific affiliation, use the Global affilation to map to all (references affiliation.id)
  • disabled - 0/1 (a little complicated, normally 0) allows exceptions to a config being applied; set to 1 if a config would be mapped due to a general mapping, but want to disable for a specific instance (ex. if a config is applied for everything deployed by a certain provisioning module, but you don't want it applied for a certain image, you would have an entry in this table mapping it to the provisioning module with disabled set to 0, then you would also have an entry for the image with disabled set to 1)
  • stage - start_load/post_load/(others?) which stage in the provisioning process where this record should be applied

configmaptype:

  • id - id of this record
  • name - name of this record
    Initial types:
    • image
    • OStype
    • provisioning

Examples

Assigning a VLAN to an image

This example shows how to assign a VLAN to an image.

For this example, we'll use the following values from other tables:

  • module.id for handling VLAN config type: 67
  • image.id for the image in this example: 524
  • affiliation.id for the desired affiliation: 6
  • reservation.id for the image: 2748
  • user.id that owns the configs: 54

configtype:

id

name

moduleid

5

VLAN

67

config:

id

name

ownerid

configtypeid

data

optional

77

VLAN 30

54

5

30

0

configvariable:

id

name

configid

value

required

ask

key

datatype

486

VLAN

77

30

1

0

(empty)

int

configmaptype:

id

name

1

image

configmap:

configid

subid

configmaptypeid

affiliationid

disabled

stage

77

524

1

6

0

post_load

configinstance:

id

reservationid

configid

status

6854

2748

77

new

configinstancevariable:

configinstanceid

configvariableid

value

6854

486

30

Hadoop cluster with variable amount of slave nodes

This example shows how a hadoop cluster can be requested with 5-10 slave nodes. It can be useful to have the variable amount because 10 nodes may be desired, but you may want to cluster anyway if only 5 nodes are available or if 10 are requested, but 2 of them fail at deploy time.

For this example, we'll use the following values from other tables:

  • module.id for handling subimage config type: 58
  • image.id for the Hadoop master image: 453
  • image.id for the Hadoop slave image: 454
  • affiliation.id for the desired affiliation: 5
  • reservation.id for the Hadoop master image: 2351
  • reservation.id for the Hadoop slave images: 2352-2361
  • user.id that owns the configs: 9

configtype:

id

name

moduleid

2

subimage

58

config:

id

name

ownerid

configtypeid

data

optional

59

hadoop cluster

9

2

(empty)

0

configvariable:

id

name

configid

value

required

ask

key

datatype

146

subimage

59

454

1

0

(empty)

int

147

min

59

1

1

1

(empty)

int

148

max

59

50

1

1

(empty)

int

configmaptype:

id

name

1

image

configmap:

configid

subid

configmaptypeid

affiliationid

disabled

stage

59

453

1

5

0

start_load

configinstance:

id

reservationid

configid

status

5023

2351

59

new

configinstancevariable:

configinstanceid

configvariableid

value

5023

146

2352

5023

146

2353

5023

146

2354

5023

146

2355

5023

146

2356

5023

146

2357

5023

146

2358

5023

146

2359

5023

146

2360

5023

146

2361

5023

147

5

5023

148

10

SAS cluster

This example shows how to configure a SAS cluster of 3 nodes: meta, midtier, and apps so that they are all deployed and then started in the correct order.

For this example, we'll use the following values from other tables:

  • module.id for handling puppet config type: 57
  • module.id for handling subimage config type: 58
  • module.id for handling shellcommand config type: 59
  • image.id for the SAS meta image: 728
  • image.id for the SAS midtier image: 729
  • image.id for the SAS apps image: 730
  • affiliation.id for the desired affiliation: 7
  • reservation.id for the SAS meta image: 2466
  • reservation.id for the SAS midtier image: 2467
  • reservation.id for the SAS apps image: 2468
  • user.id that owns the configs: 15

configtype:

id

name

moduleid

1

puppet

57

2

subimage

58

3

shellcommand

59

config:

id

name

ownerid

configtypeid

data

optional

76

SAS apps

15

2

(empty)

0

77

SAS midtier

15

2

(empty)

0

78

SAS meta config

15

1

(puppet manifest)

0

79

SAS apps config

15

1

(puppet manifest)

0

80

SAS midtier config

15

1

(puppet manifest)

0

81

SAS meta start

15

3

(startup commands)

0

82

SAS apps start

15

3

(startup commands)

0

83

SAS midtier start

15

3

(startup commands)

0

configvariable:

id

name

configid

value

required

ask

key

datatype

268

subimage

76

729

1

0

(empty)

int

269

subimage

77

730

1

0

(empty)

int

270

runafter

78

268,269

1

0

(empty)

int

271

runafter

79

270

1

0

(empty)

int

272

runafter

80

271

1

0

(empty)

int

273

runafter

81

272

1

0

(empty)

int

274

runafter

82

273

1

0

(empty)

int

275

runafter

83

274

1

0

(empty)

int

configmaptype:

id

name

1

image

configmap:

configid

subid

configmaptypeid

affiliationid

disabled

stage

76

728

1

7

0

start_load

77

728

1

7

0

start_load

78

728

1

7

0

post_load

79

728

1

7

0

post_load

80

728

1

7

0

post_load

81

728

1

7

0

post_load

82

728

1

7

0

post_load

83

728

1

7

0

post_load

configinstance:

id

reservationid

configid

status

6005

2466

76

new

6006

2466

77

new

6007

2466

78

new

6008

2466

79

new

6009

2466

80

new

6010

2466

81

new

6011

2466

82

new

6012

2466

83

new

configinstancevariable:

configinstanceid

configvariableid

value

6005

268

2467

6006

269

2468

6007

270

6005,6006

6008

271

6007

6009

272

6008

6010

273

6009

6011

274

6010

6012

275

6011

  • No labels