summaryrefslogtreecommitdiffstats
path: root/scenarios/templates/sdf-template.yaml
blob: 2f0121bee849a8b717399b03aa90aec6b968cb66 (plain)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
---
##############################################################################
# Copyright (c) 2017 Huawei and others.
# ulrich.kleber@huawei.com
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################

##############################################################################
# Description:
# This is the template for all scenario descriptor files (sdf)
# Every OPNFV scenario is described in an sdf.yaml located in the
# scenarios folder in Octopus repo.
# The sdf is provided by the scenario owner and consumed by CI, deployment
# tools and test frameworks.
#
# Main sections:
#
# metadata (owner, history, description)
# list of components (names, versions, submodules)
# deployment options (HA/NOHA, hardware&virtualization, installers,
#                     configurations)
# other prerequisites (e.g. memory requirement more than pharos spec)
#
# More details can be found in the scenario lifecycle document.
##############################################################################

##############################################################################
# scenario meta-data    # Metadata describing this sdf.yaml file and the
#                         scenario history and purpose.
scenario-metadata:
  name: SDF-Template            # mandatory
  # This is a free name.
  # For Generic scenarios, the main distiguishing components can be included in
  # the name. The name will be approved by TSC when the generic scenario is
  # established. Examples: OS-ODL-OVSNSH, OS-ONOS, OS-ODL-FDIO,
  # OS-OVSBasic, OS-FDIOBasic, ...
  # For specific scenarios, the name should characterize the main
  # feature that is implemented here. Examples: Bgpvpn, Netvirt-gbp-vpp,
  # Dpdk-bar, Onos-sfc, ...
  # Final rules for naming will be set by the lifecycle document and TSC
  # approval.
  title: "SDF template"         # mandatory
  # descriptive text title maximum 10-12 words telling the main purpose
  generic-scenario: false       # optional, default = false
  version: 1.0.6                # mandatory
  # version number of the sdf, three digits separated with dots
  creation-date: 2017-05-09    # mandatory
  # creation of this sdf file version
  # Please add a clear description of the purpose of the scenario, including
  # the main benefits and major features (mandatory).
  # If applicable, the parent scenario should be mentioned.
  opnfv-release: euphrates      # mandatory
  # the first opnfv release, the scenario was introduced
  opnfv-version:
    - begins: 5.1.0             # mandatory
    # the first opnfv version, the scenario was released with
    - ends: 7.3.0               # optional
    # the last opnfv version that supports this scenario. Typically the features
    # of the scenario should have been merged to generic scenarios then
  owner: Ulrich Kleber, ulrich.kleber@huawei.com  # mandatory
# author of this file and thus owner of the scenario
# Add additional contact persons e.g. from installers or major components

##############################################################################

##############################################################################
# components
# All components/submodules/features in the list shall be deployed
components:                     # mandatory section
  # In this section all components are listed together with their version.
  # For some components in addtion submodules or optional features can
  # be listed.
  - sdn-controller:             # optional, default = no sdn controller
    # most important categories here are: sdn-controller, cloud-controller,
    # storage, virtual-switching, dataplane, nfvo, vnfm, but new categories
    # can be introduced any time.
    # Every component to be deployed should be listed with such a section.
    # If the component has submodules or optional features, they also need
    # to be listed.
    type: opendaylight        # mandatory, other options e.g.onos, ocl, ovn
    release: boron            # either release or version or both must be given
    # upstream version, human readable release name
    version: 5.0.1
    # exact semantic version including patch level
    # Normally installers will not be able to pick exact semantic versions, but
    # if the scenario requires specific versions, this can be checked offline.
    # Following syntax variants can be allowed as well:
    #     version: 5.*.*
    #     version: ">5.0.3"
    features:                 # optional
      # additional feature configurations as recognized by the installers.
      - odl_l2
      - sfc
      - bgpvpn

  - storage:                 # optional
      type: ceph

  - cloud-controller:        # seems to me mandatory
      type: openstack        # other option could be kubernetes
      release: ocata         # either release or version or both must be given
      version: 15.0.0
      # An OPNFV version can go only with one openstack version.
      # Typically installers cannot pick different openstack version,
      # but this can be checked offline.
      modules:                  # optional
        # Installers have a basic set of modules that are deployed by
        # default. Those can be listed optional. Scenario owners can
        # list additional optional modules with their name as on
        # https://wiki.openstack.org/software/project-navigator, but
        # with lower case and dashes, Examples: tacker, kuryr, horizon,
        # vitrage, chef-openstack, openstack-charms, etc.
        # Independent of big tent, modules can be used if installers
        # support their deployment.
        - nova
        - cinder
        - horizon
        - glance
        - heat
        - neutron:
            features:   # In some cases features need to be listed specifically
              - bgpvpn  # listing service plugins as neutron features makes
        # it easier for installers, they don't need to take this
        # information from the features field in the sdn-controller.
        - aodh
        - tacker
        - congress

  - virtual-switching:      # optional
      # showing with this example how to include a separate
      # configuration file for this
      type: ovs
      release: xx           # either release or version or both must be given
      version: 2.6.1
      features:             # optional
        - vsperf:
            file: scenarios/ovs-config.yaml
# this file then should contain additional configurations to use like
# hugepage-size, iommu, ...
# it will be treated like a C #include statement.
# Please note, the template cannot show all possible options here. There will be
# more in an additional document.
# Correct usage of the keywords/options will be enforced by a schema.
# Also note that some component related deployment information will be
# in the options section.
##############################################################################

##############################################################################
# deployment options
# In this section, CI will select one of the listed options and needs to pass
# the information to the installer via a parameter or environment.
deployment-options:             # mandatory
  deployment-types:             # at least one section must be provided
    - baremetal:
      architecture: x86_64
      features:                 # optional
        - dpdk
        - other
    # $$$$ Discussion open whether we need features here after adding
    # them in roles section
    - baremetal:
      architecture: arm64
    - virtual:
      # $$$$ Discussion open whether this is necessary here.
      architecture: x86_64
      features:
        - xyz

  # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  # Discussion open how to specify the distribution of components on nodes.
  # Three proposals:
  # 1. specify availability options ha, noha by placing functions on nodes
  # 2. specify roles like compute-node, controller-node and only their number,
  #    thus avoid coupling with hostnames and more flexible mapping to different
  #    sizes of PODs.
  # 3. Leave it to installers and just specify whether ha or noha are supported
  # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  # Proposal 1:
  availability:                 # mandatory
    # here the configuration for a HA and NONHA deployment is described.
    # It is similar to what compass has in host section (minus the POD info),
    # or fuel in the dea-override-config or dha-override-config
    - ha:                       # minimum one of ha or noha must be specified
        nodes:                  # a description like this is mandatory
          - name: [host1, host2, host3]  # avoid to list the same multiple times
            roles:
              # took this from compass. Is it sufficient?
              - openstack-controller
              - odl
              - ceph-adm
              - ceph-mon
          - name: [host4, host 5]
            roles:
              - openstack-compute
              - ceph-osd
    - noha:
        hosts:
          - name: host1
            roles:
              - openstack-controller
              - odl
              - ceph-adm
              - ceph-mon
          - name: host2
            roles:
              - openstack-compute
              - ceph-osd
          - name: host3
            roles:
              - openstack-compute
              - ceph-osd

  # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  # Proposal 2:
  roles:              # mandatory
    - controller-node:
        components:   # list all components that are deployed here.
          - openstack: control
          - opendaylight
          - ceph: [ceph-adm, ceph-mon]
          - ovs
    - compute-node:
        components:
          - openstack: compute
          - ceph: ceph-osd
          - ovs
        hardware-features:
          - dpdk
    - jump-host:      # some scenarios, e.g. MANO might deploy components here

  role-distribution:  # mandatory
    - ha:
        controller-node: 3
        compute-node: 2
        jump-host: 1
    - noha:
        controller-node: 1
        compute-node: 4
        jump-host: 1

  # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  # Proposal 3:
  # no specification of nodes/roles here. ha, noha are defined by installers

  deployment-tools:             # mandatory
    # In the section for each deployment tool, the combinations of the
    # first three options have to be listed. CI can pick any of the sections.
    - fuel:                     # at least one section
        cpu: intel             # optional, default = intel
        pod: baremetal
        availability: ha
    - fuel:
        cpu: intel
        pod: virtual
        availability: ha
    - fuel:
        cpu: intel
        pod: virtual
        availability: noha
    - fuel:
        cpu: arm
        pod: baremetal
        availability: noha
    - compass:
        cpu: intel
        pod: baremetal
        availability: ha
    - joid:
        cpu: intel
        pod: baremetal
        availability: ha

##############################################################################

##############################################################################
# Prerequisites
# This section will list additional prerequisites. Currently there is only
# one case where a scenario has additional prerequisites to the Pharos spec.
# Open-O deployment requires 64GB of memory while Pharos spec requires 32GB.
# In general it should be preferred to issue such requirements to pharos
# using the pharos change request process, but in some cases in might be
# better to specify additional prerequisites.
# Another use case for these prerequisites will be usage of specilized
# hardware, e.g. for acceleration. This needs further study.

prerequisites:                  # The section can be empty or omitted.
  - controller-node:            # Prerequisites might be different
      RAM: 128GB                # optional, just to give examples
      cpu: dual-core
      features:                 # optional, see example below
  - compute-node:
      RAM: 128GB
      cpu: dual-core
      features:
        - dpdk
  - jumphost:                   # Prerequisites can be given also for jumphost
      RAM: 128GB
      cpu: dual-core

##############################################################################