159 lines
5.1 KiB
ReStructuredText
159 lines
5.1 KiB
ReStructuredText
..
|
|
Copyright 2018 AT&T Intellectual Property.
|
|
All Rights Reserved.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
not use this file except in compliance with the License. You may obtain
|
|
a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
License for the specific language governing permissions and limitations
|
|
under the License.
|
|
|
|
Definition Artifact Layout
|
|
==========================
|
|
|
|
The definition artifacts are stored in the below directory structure. This
|
|
structure is used only to assist humans in maintaining the data. When the
|
|
documents are consumed by the Airship services, they are viewed as a flat set
|
|
of all documents.::
|
|
|
|
deployment_files/deployment_files
|
|
|- /global
|
|
| |- /common
|
|
| | |- {definition library}
|
|
| |- /v1.0
|
|
| |- {definition library}
|
|
|- /type
|
|
| |- /production
|
|
| | |- /v1.0
|
|
| | |- {definition library}
|
|
| |- /cicd
|
|
| | |- /v1.0
|
|
| | |- {definition library}
|
|
| |- /labs
|
|
| |- /v1.0
|
|
| |- {definition library}
|
|
|- /site
|
|
|- /{sitename}
|
|
|- site_definition.yaml
|
|
|- {definition library}
|
|
|
|
The root-level listings of ``global``, ``type`` and ``site``
|
|
are the layers as listed in the Deckhand
|
|
_LayeringPolicy https://airship-deckhand.readthedocs.io/en/latest/layering.html
|
|
document. The process of choosing the definition libraries
|
|
to compose the actual design for a site is described below.
|
|
|
|
site_definition.yaml
|
|
--------------------
|
|
|
|
The site_definition.yaml file is what selects the definition libraries
|
|
to use for a site. Additional metadata can be added to this file as needed
|
|
to meet requirements.::
|
|
|
|
---
|
|
schema: pegleg/SiteDefinition/v1
|
|
metadata:
|
|
layeringDefinition:
|
|
abstract: false
|
|
layer: 'site'
|
|
name: 'mtn13b.1'
|
|
schema: metadata/Document/v1
|
|
storagePolicy: cleartext
|
|
data:
|
|
revision: 'v1.0'
|
|
site_type: 'cicd'
|
|
|
|
The ``revision`` field is used
|
|
to select the definition libraries in the ``global`` layer. This
|
|
layer will be composed of a union of documents in the ``common``
|
|
definition library and the definition library
|
|
for the ``revision``. The ``revision`` field and
|
|
the ``site_type`` fields select the definition library from the
|
|
``type`` layer. And the ``site`` layer is defined by the single
|
|
definition library under the sitename.
|
|
|
|
Definition Library Layout
|
|
=========================
|
|
|
|
The definition library layout is replicated in each location that the
|
|
site definition contains a set of documents.::
|
|
|
|
{library root}
|
|
|- /schemas
|
|
| |- /{namespace}
|
|
| |- /{kind}
|
|
| |- {version}.yaml
|
|
|
|
|
|- /profiles
|
|
| |- /hardware
|
|
| |- /host
|
|
|
|
|
|- /pki
|
|
| |- kubernetes-nodes.yaml
|
|
|
|
|
|- /secrets
|
|
| |- /certifcate-authorities
|
|
| |- /certificates
|
|
| |- /keypairs
|
|
| |- /passphrases
|
|
|
|
|
|- /software
|
|
| |- /charts
|
|
| | |- /{chart collection}
|
|
| | | |- dependencies.yaml
|
|
| | | |- /{chartgroup}
|
|
| | | |- chart-group.yaml
|
|
| | | |- {chart1}.yaml
|
|
| | | |- {chart2}.yaml
|
|
| | |
|
|
| | |- /{chart collection}
|
|
| | |- dependencies.yaml
|
|
| | |- /{chartgroup}
|
|
| | |- chart-group.yaml
|
|
| | |- {chart1}.yaml
|
|
| | |- {chart2}.yaml
|
|
| |
|
|
| |- /config
|
|
| | |- Docker.yaml
|
|
| | |- Kubelet.yaml
|
|
| | |- versions.yaml
|
|
| |
|
|
| |- /manifests
|
|
| |- bootstrap.yaml
|
|
| |- site.yaml
|
|
|
|
|
|- /networks
|
|
| |- /physical
|
|
| | |- sitewide.yaml
|
|
| | |- rack1.yaml
|
|
| |
|
|
| |- KubernetesNetwork.yaml
|
|
| |- common-addresses.yaml
|
|
|
|
|
|- /baremetal
|
|
|- rack1.yaml
|
|
|- rack2.yaml
|
|
|
|
* Schemas - The schemas should all be sourced from the Airship
|
|
service repositories. Care should be taken that the schemas
|
|
included in the site definition are taken from the version of
|
|
the service being deployed in the site.
|
|
* Software
|
|
* /config/versions.yaml will contain a manifest of all the
|
|
chart, image and package versions. These should be substituted
|
|
into all other documents that define version information.
|
|
* dependencies.yaml - Contains Armada chart definitions that are
|
|
only utilized as dependencies for other charts (e.g. helm-toolkit)
|
|
* Chart collection - Loose organization of chart groups
|
|
such as 'kubernetes', 'ucp', 'osh'
|
|
* Physical networks and baremetal nodes can be split into files
|
|
in whatever way makes sense. The best practice here to define
|
|
them by racks is only a suggestion.
|
|
|