Browse Source

Initial set of Airship deployment manifests

- global/type manifests
 - airship-seaworthy site manifests

Change-Id: I5951bba063e6447ff0d2e1b40d9711209919f7d1
changes/62/592062/6
Kaspars Skels 3 years ago
parent
commit
cf1f2af877
250 changed files with 22956 additions and 0 deletions
  1. +10
    -0
      global/common/layering-policy.yaml
  2. +8
    -0
      global/common/schemas/pegleg/Script/v1.yaml
  3. +19
    -0
      global/common/schemas/pegleg/SiteDefinition/v1.yaml
  4. +14
    -0
      global/common/secrets/passphrases/private_docker_key.yaml
  5. +11
    -0
      global/common/secrets/publickey/airship_ssh_public_key.yaml
  6. +26
    -0
      global/v4.0/baremetal/bootactions/airship-target.yaml
  7. +33
    -0
      global/v4.0/baremetal/bootactions/promjoin.yaml
  8. +39
    -0
      global/v4.0/deployment/deployment-strategy.yaml
  9. +114
    -0
      global/v4.0/profiles/genesis.yaml
  10. +19
    -0
      global/v4.0/profiles/hardware/generic.yaml
  11. +108
    -0
      global/v4.0/profiles/host/cp.yaml
  12. +60
    -0
      global/v4.0/profiles/host/dp.yaml
  13. +144
    -0
      global/v4.0/profiles/kubernetes-host.yaml
  14. +12
    -0
      global/v4.0/schemas/armada/Chart/v1.yaml
  15. +12
    -0
      global/v4.0/schemas/armada/ChartGroup/v1.yaml
  16. +12
    -0
      global/v4.0/schemas/armada/Manifest/v1.yaml
  17. +163
    -0
      global/v4.0/schemas/drydock/BaremetalNode/v1.yaml
  18. +93
    -0
      global/v4.0/schemas/drydock/BootAction/v1.yaml
  19. +49
    -0
      global/v4.0/schemas/drydock/HardwareProfile/v1.yaml
  20. +161
    -0
      global/v4.0/schemas/drydock/HostProfile/v1.yaml
  21. +70
    -0
      global/v4.0/schemas/drydock/Network/v1.yaml
  22. +47
    -0
      global/v4.0/schemas/drydock/NetworkLink/v1.yaml
  23. +35
    -0
      global/v4.0/schemas/drydock/Rack/v1.yaml
  24. +71
    -0
      global/v4.0/schemas/drydock/Region/v1.yaml
  25. +645
    -0
      global/v4.0/schemas/pegleg/AccountCatalogue/v1.yaml
  26. +116
    -0
      global/v4.0/schemas/pegleg/CommonAddresses/v1.yaml
  27. +15
    -0
      global/v4.0/schemas/pegleg/CommonSoftwareConfig/v1.yaml
  28. +143
    -0
      global/v4.0/schemas/pegleg/EndpointCatalogue/v1.yaml
  29. +1066
    -0
      global/v4.0/schemas/pegleg/SoftwareVersions/v1.yaml
  30. +16
    -0
      global/v4.0/schemas/promenade/Docker/v1.yaml
  31. +141
    -0
      global/v4.0/schemas/promenade/Genesis/v1.yaml
  32. +137
    -0
      global/v4.0/schemas/promenade/HostSystem/v1.yaml
  33. +31
    -0
      global/v4.0/schemas/promenade/Kubelet/v1.yaml
  34. +121
    -0
      global/v4.0/schemas/promenade/KubernetesNetwork/v1.yaml
  35. +47
    -0
      global/v4.0/schemas/promenade/KubernetesNode/v1.yaml
  36. +43
    -0
      global/v4.0/schemas/promenade/PKICatalog/PKICatalog.yaml
  37. +80
    -0
      global/v4.0/schemas/shipyard/DeploymentConfiguration/v1.yaml
  38. +73
    -0
      global/v4.0/schemas/shipyard/DeploymentStrategy/v1.yaml
  39. +128
    -0
      global/v4.0/scripts/configure-ip-rules.yaml
  40. +168
    -0
      global/v4.0/software/charts/kubernetes/container-networking/calico.yaml
  41. +15
    -0
      global/v4.0/software/charts/kubernetes/container-networking/chart-group.yaml
  42. +136
    -0
      global/v4.0/software/charts/kubernetes/container-networking/etcd.yaml
  43. +155
    -0
      global/v4.0/software/charts/kubernetes/core/apiserver.yaml
  44. +15
    -0
      global/v4.0/software/charts/kubernetes/core/chart-group.yaml
  45. +136
    -0
      global/v4.0/software/charts/kubernetes/core/controller-manager.yaml
  46. +93
    -0
      global/v4.0/software/charts/kubernetes/core/scheduler.yaml
  47. +13
    -0
      global/v4.0/software/charts/kubernetes/dns/chart-group.yaml
  48. +146
    -0
      global/v4.0/software/charts/kubernetes/dns/coredns.yaml
  49. +13
    -0
      global/v4.0/software/charts/kubernetes/etcd/chart-group.yaml
  50. +137
    -0
      global/v4.0/software/charts/kubernetes/etcd/etcd.yaml
  51. +13
    -0
      global/v4.0/software/charts/kubernetes/haproxy/chart-group.yaml
  52. +109
    -0
      global/v4.0/software/charts/kubernetes/haproxy/haproxy.yaml
  53. +13
    -0
      global/v4.0/software/charts/kubernetes/ingress/chart-group.yaml
  54. +86
    -0
      global/v4.0/software/charts/kubernetes/ingress/ingress.yaml
  55. +14
    -0
      global/v4.0/software/charts/kubernetes/proxy/chart-group.yaml
  56. +90
    -0
      global/v4.0/software/charts/kubernetes/proxy/kubernetes-proxy.yaml
  57. +28
    -0
      global/v4.0/software/charts/osh-infra/dependencies.yaml
  58. +142
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-ceph-config/ceph-config.yaml
  59. +13
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-ceph-config/chart-group.yaml
  60. +14
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-dashboards/chart-group.yaml
  61. +251
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-dashboards/grafana.yaml
  62. +126
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-dashboards/kibana.yaml
  63. +13
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-ingress-controller/chart-group.yaml
  64. +55
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-ingress-controller/ingress.yaml
  65. +14
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-logging/chart-group.yaml
  66. +186
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-logging/elasticsearch.yaml
  67. +171
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-logging/fluent-logging.yaml
  68. +13
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-mariadb/chart-group.yaml
  69. +77
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-mariadb/mariadb.yaml
  70. +17
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-monitoring/chart-group.yaml
  71. +129
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-monitoring/nagios.yaml
  72. +68
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-monitoring/prometheus-alertmanager.yaml
  73. +77
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-monitoring/prometheus-kube-state-metrics.yaml
  74. +65
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-monitoring/prometheus-node-exporter.yaml
  75. +80
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-monitoring/prometheus.yaml
  76. +13
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-openstack-exporter/chart-group.yaml
  77. +95
    -0
      global/v4.0/software/charts/osh-infra/osh-infra-openstack-exporter/prometheus-openstack-exporter.yaml
  78. +28
    -0
      global/v4.0/software/charts/osh/dependencies.yaml
  79. +142
    -0
      global/v4.0/software/charts/osh/openstack-ceph-config/ceph-config.yaml
  80. +13
    -0
      global/v4.0/software/charts/osh/openstack-ceph-config/chart-group.yaml
  81. +14
    -0
      global/v4.0/software/charts/osh/openstack-cinder/chart-group.yaml
  82. +287
    -0
      global/v4.0/software/charts/osh/openstack-cinder/cinder.yaml
  83. +95
    -0
      global/v4.0/software/charts/osh/openstack-cinder/rabbitmq.yaml
  84. +18
    -0
      global/v4.0/software/charts/osh/openstack-compute-kit/chart-group.yaml
  85. +48
    -0
      global/v4.0/software/charts/osh/openstack-compute-kit/libvirt.yaml
  86. +95
    -0
      global/v4.0/software/charts/osh/openstack-compute-kit/neutron-rabbitmq.yaml
  87. +334
    -0
      global/v4.0/software/charts/osh/openstack-compute-kit/neutron.yaml
  88. +95
    -0
      global/v4.0/software/charts/osh/openstack-compute-kit/nova-rabbitmq.yaml
  89. +403
    -0
      global/v4.0/software/charts/osh/openstack-compute-kit/nova.yaml
  90. +62
    -0
      global/v4.0/software/charts/osh/openstack-compute-kit/openvswitch.yaml
  91. +14
    -0
      global/v4.0/software/charts/osh/openstack-glance/chart-group.yaml
  92. +296
    -0
      global/v4.0/software/charts/osh/openstack-glance/glance.yaml
  93. +95
    -0
      global/v4.0/software/charts/osh/openstack-glance/rabbitmq.yaml
  94. +14
    -0
      global/v4.0/software/charts/osh/openstack-heat/chart-group.yaml
  95. +297
    -0
      global/v4.0/software/charts/osh/openstack-heat/heat.yaml
  96. +95
    -0
      global/v4.0/software/charts/osh/openstack-heat/rabbitmq.yaml
  97. +13
    -0
      global/v4.0/software/charts/osh/openstack-horizon/chart-group.yaml
  98. +114
    -0
      global/v4.0/software/charts/osh/openstack-horizon/horizon.yaml
  99. +13
    -0
      global/v4.0/software/charts/osh/openstack-ingress-controller/chart-group.yaml
  100. +55
    -0
      global/v4.0/software/charts/osh/openstack-ingress-controller/ingress.yaml

+ 10
- 0
global/common/layering-policy.yaml View File

@ -0,0 +1,10 @@
---
schema: deckhand/LayeringPolicy/v1
metadata:
schema: metadata/Control/v1
name: layering-policy
data:
layerOrder:
- global
- type
- site

+ 8
- 0
global/common/schemas/pegleg/Script/v1.yaml View File

@ -0,0 +1,8 @@
---
schema: deckhand/DataSchema/v1
metadata:
schema: metadata/Control/v1
name: pegleg/Script/v1
data:
$schema: http://json-schema.org/schema#
type: string

+ 19
- 0
global/common/schemas/pegleg/SiteDefinition/v1.yaml View File

@ -0,0 +1,19 @@
---
schema: deckhand/DataSchema/v1
metadata:
schema: metadata/Control/v1
name: pegleg/SiteDefinition/v1
data:
$schema: http://json-schema.org/schema#
type: object
properties:
revision:
type: string
pattern: '^v.+$'
site_type:
type: string
required:
- revision
- site_type
additionalProperties: false

+ 14
- 0
global/common/secrets/passphrases/private_docker_key.yaml View File

@ -0,0 +1,14 @@
---
schema: deckhand/Passphrase/v1
metadata:
schema: metadata/Document/v1
name: private_docker_key
layeringDefinition:
abstract: false
layer: global
storagePolicy: cleartext
# sample key for potential private docker registry
# see Docker documentation for info on how to generate the key
# base64 of password123
data: cGFzc3dvcmQxMjM=
...

+ 11
- 0
global/common/secrets/publickey/airship_ssh_public_key.yaml View File

@ -0,0 +1,11 @@
---
schema: deckhand/PublicKey/v1
metadata:
schema: metadata/Document/v1
name: airship_ssh_public_key
layeringDefinition:
abstract: false
layer: global
storagePolicy: cleartext
data: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyb6CDrai3VcFW1ew5ikf7IDSpqfFyrJNLI1DPyd28vcy6D1oFXdELYK7DsXzVCgV7YNDiKpneXMBTJ/Mr/aZi9K3eVvtRp1HAK3y6ycx9KRfyfMVAU0aT3xMOpE5xS/xTH8HNRbOSszp0woVYKhncpkumHweji7wbLKm/WxsggIoGDjn29KIoRhpo96tWz/DBsoU1pIHTMoZNyHW2aYWEx6kOzTEmhxL0LkKv7+A/2HJuLnqcXoQH9jl3kRQDyikNlSw2T3gQV3I8m0od/lEf98MZb1Yv9GrlDCmnUPXAJ2HQaWaVaPPpGcBW7veOZlLfeulwD4zlo6P6JW1SZaat airship@seaworthy
...

+ 26
- 0
global/v4.0/baremetal/bootactions/airship-target.yaml View File

@ -0,0 +1,26 @@
---
schema: 'drydock/BootAction/v1'
metadata:
schema: 'metadata/Document/v1'
name: airship-target
storagePolicy: 'cleartext'
layeringDefinition:
abstract: false
layer: global
data:
signaling: false
assets:
- path: /etc/systemd/system/airship.target
type: unit
permissions: '444'
data: |
[Unit]
Description=Airshipt bootaction target
After=multi-user.target cloud-init.target
[Install]
WantedBy=graphical.target
data_pipeline:
- utf8_decode
...

+ 33
- 0
global/v4.0/baremetal/bootactions/promjoin.yaml View File

@ -0,0 +1,33 @@
---
schema: 'drydock/BootAction/v1'
metadata:
schema: 'metadata/Document/v1'
name: promjoin-systemd-unit
storagePolicy: 'cleartext'
layeringDefinition:
abstract: false
layer: global
labels:
application: 'drydock'
data:
signaling: false
assets:
- path: /etc/systemd/system/promjoin.service
type: unit
permissions: '444'
data: |
[Unit]
Description=Promenade Initialization Service
After=network-online.target local-fs.target cloud-init.target
ConditionPathExists=!/var/lib/prom.done
[Service]
Type=oneshot
ExecStart=/opt/promjoin.sh
[Install]
WantedBy=airship.target
data_pipeline:
- utf8_decode
...

+ 39
- 0
global/v4.0/deployment/deployment-strategy.yaml View File

@ -0,0 +1,39 @@
---
# The global deployment strategy assumes nodes are marked with node_tags
# of masters and workers.
schema: shipyard/DeploymentStrategy/v1
metadata:
schema: metadata/Document/v1
name: deployment-strategy
layeringDefinition:
abstract: false
layer: global
labels:
name: deployment-strategy-global
storagePolicy: cleartext
data:
groups:
- name: masters
critical: true
depends_on: []
selectors:
- node_names: []
node_labels: []
node_tags:
- masters
rack_names: []
success_criteria:
percent_successful_nodes: 100
- name: workers
critical: true
depends_on:
- masters
selectors:
- node_names: []
node_labels: []
node_tags:
- workers
rack_names: []
success_criteria:
percent_successful_nodes: 60
...

+ 114
- 0
global/v4.0/profiles/genesis.yaml View File

@ -0,0 +1,114 @@
---
schema: promenade/Genesis/v1
metadata:
schema: metadata/Document/v1
name: genesis-global
layeringDefinition:
abstract: true
layer: global
labels:
name: genesis-global
storagePolicy: cleartext
substitutions:
# Software versions for bootstrapping phase
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .images.ucp.armada.api
dest:
path: .images.armada
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .images.ucp.armada.tiller
dest:
path: .images.helm.tiller
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .images.kubernetes.apiserver.apiserver
dest:
path: .images.kubernetes.apiserver
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .images.kubernetes.controller-manager.controller_manager
dest:
path: .images.kubernetes.controller-manager
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .images.kubernetes.etcd.etcd
dest:
path: .images.kubernetes.etcd
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .images.kubernetes.scheduler.scheduler
dest:
path: .images.kubernetes.scheduler
# Site-specific configuration
- src:
schema: pegleg/CommonAddresses/v1
name: common-addresses
path: .genesis.hostname
dest:
path: .hostname
- src:
schema: pegleg/CommonAddresses/v1
name: common-addresses
path: .genesis.ip
dest:
path: .ip
# Command prefix
- src:
schema: pegleg/CommonAddresses/v1
name: common-addresses
path: .kubernetes.service_cidr
dest:
path: .apiserver.command_prefix[1]
pattern: SERVICE_CIDR
- src:
schema: pegleg/CommonAddresses/v1
name: common-addresses
path: .kubernetes.service_node_port_range
dest:
path: .apiserver.command_prefix[2]
pattern: SERVICE_NODE_PORT_RANGE
data:
apiserver:
command_prefix:
- /apiserver
- --service-cluster-ip-range=SERVICE_CIDR
- --service-node-port-range=SERVICE_NODE_PORT_RANGE
- --authorization-mode=Node,RBAC
- --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds
- --endpoint-reconciler-type=lease
armada:
target_manifest: cluster-bootstrap
labels:
dynamic:
- beta.kubernetes.io/fluentd-ds-ready=true
- calico-etcd=enabled
- ceph-mds=enabled
- ceph-mon=enabled
- ceph-osd=enabled
- ceph-rgw=enabled
- ceph-mgr=enabled
- kube-dns=enabled
- kube-ingress=enabled
- kubernetes-apiserver=enabled
- kubernetes-controller-manager=enabled
- kubernetes-etcd=enabled
- kubernetes-scheduler=enabled
- promenade-genesis=enabled
- ucp-control-plane=enabled
- maas-control-plane=enabled
- node-exporter=enabled
files:
- path: /var/lib/anchor/calico-etcd-bootstrap
content: "# placeholder for triggering calico etcd bootstrapping\n# this file will be deleted"
mode: 0644

+ 19
- 0
global/v4.0/profiles/hardware/generic.yaml View File

@ -0,0 +1,19 @@
---
schema: 'drydock/HardwareProfile/v1'
metadata:
schema: 'metadata/Document/v1'
name: DELL_HP_Generic
layeringDefinition:
abstract: false
layer: global
storagePolicy: cleartext
data:
vendor: Dell
generation: '8'
hw_version: '3'
bios_version: '2.2.3'
boot_mode: bios
bootstrap_protocol: pxe
pxe_interface: 0
device_aliases: {}
...

+ 108
- 0
global/v4.0/profiles/host/cp.yaml View File

@ -0,0 +1,108 @@
---
schema: drydock/HostProfile/v1
metadata:
schema: metadata/Document/v1
name: cp-global
storagePolicy: cleartext
labels:
hosttype: cp-global
layeringDefinition:
abstract: true
layer: global
substitutions:
- dest:
path: .oob.credential
src:
schema: deckhand/Passphrase/v1
name: ipmi_admin_password
path: .
data:
oob:
type: 'ipmi'
network: 'oob'
account: 'root'
storage:
physical_devices:
sda:
labels:
bootdrive: 'true'
partitions:
- name: 'root'
size: '30g'
bootable: true
filesystem:
mountpoint: '/'
fstype: 'ext4'
mount_options: 'defaults'
- name: 'boot'
size: '1g'
filesystem:
mountpoint: '/boot'
fstype: 'ext4'
mount_options: 'defaults'
- name: 'var'
size: '>300g'
filesystem:
mountpoint: '/var'
fstype: 'ext4'
mount_options: 'defaults'
platform:
image: 'xenial'
kernel: 'hwe-16.04'
metadata:
owner_data:
control-plane: enabled
ucp-control-plane: enabled
openstack-control-plane: enabled
openstack-heat: enabled
openstack-keystone: enabled
openstack-rabbitmq: enabled
openstack-dns-helper: enabled
openstack-mariadb: enabled
openstack-nova-control: enabled
openstack-etcd: enabled
openstack-mistral: enabled
openstack-memcached: enabled
openstack-glance: enabled
openstack-horizon: enabled
openstack-cinder-control: enabled
openstack-cinder-volume: control
openstack-neutron: enabled
openvswitch: enabled
ucp-barbican: enabled
ceph-bootstrap: enabled
ceph-mon: enabled
ceph-mgr: enabled
ceph-osd: enabled
ceph-mds: enabled
ceph-rgw: enabled
ucp-maas: enabled
kube-dns: enabled
kubernetes-apiserver: enabled
kubernetes-controller-manager: enabled
kubernetes-etcd: enabled
kubernetes-scheduler: enabled
tiller-helm: enabled
kube-etcd: enabled
calico-policy: enabled
calico-node: enabled
calico-etcd: enabled
ucp-armada: enabled
ucp-drydock: enabled
ucp-deckhand: enabled
ucp-shipyard: enabled
IAM: enabled
ucp-promenade: enabled
prometheus-server: enabled
prometheus-client: enabled
fluentd: enabled
influxdb: enabled
kibana: enabled
elasticsearch-client: enabled
elasticsearch-master: enabled
elasticsearch-data: enabled
postgresql: enabled
kube-ingress: enabled
beta.kubernetes.io/fluentd-ds-ready: 'true'
node-exporter: enabled
...

+ 60
- 0
global/v4.0/profiles/host/dp.yaml View File

@ -0,0 +1,60 @@
---
schema: drydock/HostProfile/v1
metadata:
schema: metadata/Document/v1
name: dp-global
labels:
hosttype: dp-global
layeringDefinition:
abstract: true
layer: global
storagePolicy: cleartext
substitutions:
- dest:
path: .oob.credential
src:
schema: deckhand/Passphrase/v1
name: ipmi_admin_password
path: .
data:
oob:
type: 'ipmi'
network: 'oob'
account: 'root'
storage:
physical_devices:
sda:
labels:
bootdrive: 'true'
partitions:
- name: 'root'
size: '30g'
bootable: true
filesystem:
mountpoint: '/'
fstype: 'ext4'
mount_options: 'defaults'
- name: 'boot'
size: '1g'
filesystem:
mountpoint: '/boot'
fstype: 'ext4'
mount_options: 'defaults'
- name: 'var'
size: '>300g'
filesystem:
mountpoint: '/var'
fstype: 'ext4'
mount_options: 'defaults'
platform:
image: 'xenial'
kernel: 'hwe-16.04'
metadata:
owner_data:
openstack-nova-compute: enabled
openvswitch: enabled
contrail-vrouter: kernel
openstack-libvirt: kernel
beta.kubernetes.io/fluentd-ds-ready: 'true'
node-exporter: enabled
...

+ 144
- 0
global/v4.0/profiles/kubernetes-host.yaml View File

@ -0,0 +1,144 @@
---
schema: promenade/HostSystem/v1
metadata:
schema: metadata/Document/v1
name: host-system
layeringDefinition:
abstract: false
layer: global
storagePolicy: cleartext
substitutions:
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .files.kubelet
dest:
path: .files[0].tar_url
# Initial CoreDNS image (used during node Genesis and node join)
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .images.kubernetes.coredns.coredns
dest:
path: .images.coredns
# Initial CoreDNS image (used during node Genesis and node join)
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .images.kubernetes.haproxy.haproxy
dest:
path: .images.haproxy
# Operational tools
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .images.ucp.armada.helm
dest:
path: .images.helm.helm
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .images.kubernetes.kubectl
dest:
path: .images.kubernetes.kubectl
# System packages
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .packages.named.docker
dest:
path: .packages.required.docker
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .packages.named.socat
dest:
path: .packages.required.socat
- src:
schema: pegleg/SoftwareVersions/v1
name: software-versions
path: .packages.unnamed
dest:
path: .packages.additional
# Docker authorization
- src:
schema: deckhand/Passphrase/v1
path: .
name: private_docker_key
dest:
path: .files[2].content
pattern: DH_SUB_PRIVATE_DOCKER_KEY
data:
files:
- path: /opt/kubernetes/bin/kubelet
tar_path: kubernetes/node/bin/kubelet
mode: 0555
- path: /etc/logrotate.d/json-logrotate
mode: 0444
content: |-
/var/lib/docker/containers/*/*-json.log
{
compress
copytruncate
create 0644 root root
weekly
dateext
dateformat -%Y%m%d-%s
maxsize 100M
missingok
notifempty
su root root
rotate 1
}
- path: /var/lib/kubelet/.dockercfg
mode: 0400
# NOTE: Sample key, this repo does not exist
content: |-
{
"https://private.registry.com": {
"auth": "DH_SUB_PRIVATE_DOCKER_KEY"
}
}
packages:
repositories:
- deb http://apt.dockerproject.org/repo ubuntu-xenial main
keys:
- |-
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBFWln24BEADrBl5p99uKh8+rpvqJ48u4eTtjeXAWbslJotmC/CakbNSqOb9o
ddfzRvGVeJVERt/Q/mlvEqgnyTQy+e6oEYN2Y2kqXceUhXagThnqCoxcEJ3+KM4R
mYdoe/BJ/J/6rHOjq7Omk24z2qB3RU1uAv57iY5VGw5p45uZB4C4pNNsBJXoCvPn
TGAs/7IrekFZDDgVraPx/hdiwopQ8NltSfZCyu/jPpWFK28TR8yfVlzYFwibj5WK
dHM7ZTqlA1tHIG+agyPf3Rae0jPMsHR6q+arXVwMccyOi+ULU0z8mHUJ3iEMIrpT
X+80KaN/ZjibfsBOCjcfiJSB/acn4nxQQgNZigna32velafhQivsNREFeJpzENiG
HOoyC6qVeOgKrRiKxzymj0FIMLru/iFF5pSWcBQB7PYlt8J0G80lAcPr6VCiN+4c
NKv03SdvA69dCOj79PuO9IIvQsJXsSq96HB+TeEmmL+xSdpGtGdCJHHM1fDeCqkZ
hT+RtBGQL2SEdWjxbF43oQopocT8cHvyX6Zaltn0svoGs+wX3Z/H6/8P5anog43U
65c0A+64Jj00rNDr8j31izhtQMRo892kGeQAaaxg4Pz6HnS7hRC+cOMHUU4HA7iM
zHrouAdYeTZeZEQOA7SxtCME9ZnGwe2grxPXh/U/80WJGkzLFNcTKdv+rwARAQAB
tDdEb2NrZXIgUmVsZWFzZSBUb29sIChyZWxlYXNlZG9ja2VyKSA8ZG9ja2VyQGRv
Y2tlci5jb20+iQI4BBMBAgAiBQJVpZ9uAhsvBgsJCAcDAgYVCAIJCgsEFgIDAQIe
AQIXgAAKCRD3YiFXLFJgnbRfEAC9Uai7Rv20QIDlDogRzd+Vebg4ahyoUdj0CH+n
Ak40RIoq6G26u1e+sdgjpCa8jF6vrx+smpgd1HeJdmpahUX0XN3X9f9qU9oj9A4I
1WDalRWJh+tP5WNv2ySy6AwcP9QnjuBMRTnTK27pk1sEMg9oJHK5p+ts8hlSC4Sl
uyMKH5NMVy9c+A9yqq9NF6M6d6/ehKfBFFLG9BX+XLBATvf1ZemGVHQusCQebTGv
0C0V9yqtdPdRWVIEhHxyNHATaVYOafTj/EF0lDxLl6zDT6trRV5n9F1VCEh4Aal8
L5MxVPcIZVO7NHT2EkQgn8CvWjV3oKl2GopZF8V4XdJRl90U/WDv/6cmfI08GkzD
YBHhS8ULWRFwGKobsSTyIvnbk4NtKdnTGyTJCQ8+6i52s+C54PiNgfj2ieNn6oOR
7d+bNCcG1CdOYY+ZXVOcsjl73UYvtJrO0Rl/NpYERkZ5d/tzw4jZ6FCXgggA/Zxc
jk6Y1ZvIm8Mt8wLRFH9Nww+FVsCtaCXJLP8DlJLASMD9rl5QS9Ku3u7ZNrr5HWXP
HXITX660jglyshch6CWeiUATqjIAzkEQom/kEnOrvJAtkypRJ59vYQOedZ1sFVEL
MXg2UCkD/FwojfnVtjzYaTCeGwFQeqzHmM241iuOmBYPeyTY5veF49aBJA1gEJOQ
TvBR8Q==
=Fm3p
-----END PGP PUBLIC KEY BLOCK-----
...

+ 12
- 0
global/v4.0/schemas/armada/Chart/v1.yaml View File

@ -0,0 +1,12 @@
---
schema: 'deckhand/DataSchema/v1'
metadata:
schema: metadata/Control/v1
name: armada/Chart/v1
labels:
application: armada
data:
$schema: 'http://json-schema.org/schema#'
type: 'object'
additionalProperties: true
...

+ 12
- 0
global/v4.0/schemas/armada/ChartGroup/v1.yaml View File

@ -0,0 +1,12 @@
---
schema: 'deckhand/DataSchema/v1'
metadata:
schema: metadata/Control/v1
name: armada/ChartGroup/v1
labels:
application: armada
data:
$schema: 'http://json-schema.org/schema#'
type: 'object'
additionalProperties: true
...

+ 12
- 0
global/v4.0/schemas/armada/Manifest/v1.yaml View File

@ -0,0 +1,12 @@
---
schema: 'deckhand/DataSchema/v1'
metadata:
schema: metadata/Control/v1
name: armada/Manifest/v1
labels:
application: armada
data:
$schema: 'http://json-schema.org/schema#'
type: 'object'
additionalProperties: true
...

+ 163
- 0
global/v4.0/schemas/drydock/BaremetalNode/v1.yaml View File

@ -0,0 +1,163 @@
---
schema: 'deckhand/DataSchema/v1'
metadata:
schema: metadata/Control/v1
name: drydock/BaremetalNode/v1
labels:
application: drydock
data:
$schema: 'http://json-schema.org/schema#'
type: 'object'
properties:
addressing:
type: 'array'
items:
type: 'object'
properties:
address:
type: 'string'
network:
type: 'string'
oob:
type: 'object'
properties:
type:
type: 'string'
network:
type: 'string'
account:
type: 'string'
credetial:
type: 'string'
additionalProperties: true
storage:
type: 'object'
properties:
physical_devices:
type: 'object'
additionalProperties:
type: 'object'
properties:
labels:
type: 'object'
additionalProperties:
type: 'string'
volume_group:
type: 'string'
partitions:
type: 'array'
items:
type: 'object'
properties:
name:
type: 'string'
size:
type: 'string'
part_uuid:
type: 'string'
volume_group:
type: 'string'
labels:
type: 'object'
additionalProperties:
type: 'string'
bootable:
type: 'boolean'
volume_group:
type: 'string'
filesystem:
type: 'object'
properties:
mountpoint:
type: 'string'
fstype:
type: 'string'
mount_options:
type: 'string'
fs_uuid:
type: 'string'
fs_label:
type: 'string'
additionalProperties: false
additionalProperties: false
volume_groups:
type: 'object'
additionalProperties:
type: 'object'
properties:
vg_uuid:
type: 'string'
logical_volumes:
type: 'array'
items:
type: 'object'
properties:
name:
type: 'string'
lv_uuid:
type: 'string'
size:
type: 'string'
filesystem:
type: 'object'
properties:
mountpoint:
type: 'string'
fstype:
type: 'string'
mount_options:
type: 'string'
fs_uuid:
type: 'string'
fs_label:
type: 'string'
platform:
type: 'object'
properties:
image:
type: 'string'
kernel:
type: 'string'
kernel_params:
type: 'object'
additionalProperties: true
additionalProperties: false
metadata:
type: 'object'
properties:
tags:
type: 'array'
items:
type: 'string'
owner_data:
type: 'object'
additionalProperties:
type: 'string'
rack:
type: 'string'
boot_mac:
type: 'string'
additionalProperties: false
host_profile:
type: 'string'
hardware_profile:
type: 'string'
primary_network:
type: 'string'
interfaces:
type: 'object'
additionalProperties:
type: 'object'
properties:
device_link:
type: 'string'
slaves:
type: 'array'
items:
type: 'string'
networks:
type: 'array'
items:
type: 'string'
additionalProperties: false
...

+ 93
- 0
global/v4.0/schemas/drydock/BootAction/v1.yaml View File

@ -0,0 +1,93 @@
---
schema: 'deckhand/DataSchema/v1'
metadata:
schema: metadata/Control/v1
name: drydock/BootAction/v1
labels:
application: drydock
data:
$schema: 'http://json-schema.org/schema#'
type: 'object'
additionalProperties: false
properties:
signaling:
type: 'boolean'
assets:
type: 'array'
items:
type: 'object'
additionalProperties: false
properties:
path:
type: 'string'
pattern: '^/.+'
location:
type: 'string'
type:
type: 'string'
enum:
- 'unit'
- 'file'
- 'pkg_list'
data:
type: 'string'
location_pipeline:
type: 'array'
items:
type: 'string'
enum:
- 'template'
data_pipeline:
type: 'array'
items:
type: 'string'
enum:
- 'base64_encode'
- 'template'
- 'base64_decode'
- 'utf8_encode'
- 'utf8_decode'
permissions:
type: 'string'
pattern: '\d{3}'
required:
- 'type'
node_filter:
type: 'object'
additionalProperties: false
properties:
filter_set_type:
type: 'string'
enum:
- 'intersection'
- 'union'
filter_set:
type: 'array'
items:
type: 'object'
additionalProperties: false
properties:
filter_type:
type: 'string'
enum:
- 'intersection'
- 'union'
node_names:
type: 'array'
items:
type: 'string'
node_tags:
type: 'array'
items:
type: 'string'
node_labels:
type: 'object'
additionalProperties: true
rack_names:
type: 'array'
items:
type: 'string'
rack_labels:
type: 'object'
additionalProperties: true
...

+ 49
- 0
global/v4.0/schemas/drydock/HardwareProfile/v1.yaml View File

@ -0,0 +1,49 @@
---
schema: 'deckhand/DataSchema/v1'
metadata:
schema: metadata/Control/v1
name: drydock/HardwareProfile/v1
labels:
application: drydock
data:
$schema: 'http://json-schema.org/schema#'
type: 'object'
properties:
vendor:
type: 'string'
generation:
type: 'string'
hw_version:
type: 'string'
bios_version:
type: 'string'
boot_mode:
type: 'string'
enum:
- 'bios'
- 'uefi'
bootstrap_protocol:
type: 'string'
enum:
- 'pxe'
- 'usb'
- 'hdd'
pxe_interface:
type: 'number'
device_aliases:
type: 'object'
additionalProperties: true
cpu_sets:
type: 'object'
additionalProperties:
type: 'string'
hugepages:
type: 'object'
additionalProperties:
type: 'object'
propertes:
size:
type: 'string'
count:
type: 'number'
additionalProperties: false

+ 161
- 0
global/v4.0/schemas/drydock/HostProfile/v1.yaml View File

@ -0,0 +1,161 @@
---
schema: 'deckhand/DataSchema/v1'
metadata:
schema: metadata/Control/v1
name: drydock/HostProfile/v1
labels:
application: drydock
data:
$schema: 'http://json-schema.org/schema#'
type: 'object'
properties:
oob:
type: 'object'
properties:
type:
type: 'string'
network:
type: 'string'
account:
type: 'string'
credetial:
type: 'string'
additionalProperties: true
storage:
type: 'object'
properties:
physical_devices:
type: 'object'
additionalProperties:
type: 'object'
properties:
labels:
type: 'object'
additionalProperties:
type: 'string'
volume_group:
type: 'string'
partitions:
type: 'array'
items:
type: 'object'
properties:
name:
type: 'string'
size:
type: 'string'
part_uuid:
type: 'string'
volume_group:
type: 'string'
labels:
type: 'object'
additionalProperties:
type: 'string'
bootable:
type: 'boolean'
volume_group:
type: 'string'
filesystem:
type: 'object'
properties:
mountpoint:
type: 'string'
fstype:
type: 'string'
mount_options:
type: 'string'
fs_uuid:
type: 'string'
fs_label:
type: 'string'
additionalProperties: false
additionalProperties: false
volume_groups:
type: 'object'
additionalProperties:
type: 'object'
properties:
vg_uuid:
type: 'string'
logical_volumes:
type: 'array'
items:
type: 'object'
properties:
name:
type: 'string'
lv_uuid:
type: 'string'
size:
type: 'string'
filesystem:
type: 'object'
properties:
mountpoint:
type: 'string'
fstype:
type: 'string'
mount_options:
type: 'string'
fs_uuid:
type: 'string'
fs_label:
type: 'string'
platform:
type: 'object'
properties:
image:
type: 'string'
kernel:
type: 'string'
kernel_params:
type: 'object'
additionalProperties: true
additionalProperties: false
metadata:
type: 'object'
properties:
tags:
type: 'array'
items:
type: 'string'
owner_data:
type: 'object'
additionalProperties:
type: 'string'
rack:
type: 'string'
boot_mac:
type: 'string'
additionalProperties: false
host_profile:
type: 'string'
hardware_profile:
type: 'string'
primary_network:
type: 'string'
interfaces:
type: 'object'
additionalProperties:
type: 'object'
properties:
device_link:
type: 'string'
slaves:
type: 'array'
items:
type: 'string'
networks:
type: 'array'
items:
type: 'string'
sriov:
type: 'object'
properties:
vf_count:
type: 'number'
trustmode:
type: 'boolean'
additionalProperties: false
...

+ 70
- 0
global/v4.0/schemas/drydock/Network/v1.yaml View File

@ -0,0 +1,70 @@
---
schema: 'deckhand/DataSchema/v1'
metadata:
schema: metadata/Control/v1
name: drydock/Network/v1
labels:
application: drydock
data:
$schema: 'http://json-schema.org/schema#'
type: 'object'
properties:
cidr:
type: 'string'
ranges:
type: 'array'
items:
type: 'object'
properties:
type:
type: 'string'
start:
type: 'string'
format: 'ipv4'
end:
type: 'string'
format: 'ipv4'
additionalProperties: false
dns:
type: 'object'
properties:
domain:
type: 'string'
servers:
type: 'string'
additionalProperties: false
dhcp_relay:
type: 'object'
properties:
self_ip:
type: 'string'
format: 'ipv4'
upstream_target:
type: 'string'
format: 'ipv4'
additionalProperties: false
mtu:
type: 'number'
vlan:
type: 'string'
routedomain:
type: 'string'
routes:
type: 'array'
items:
type: 'object'
properties:
subnet:
type: 'string'
gateway:
type: 'string'
format: 'ipv4'
metric:
type: 'number'
routedomain:
type: 'string'
additionalProperties: false
labels:
type: 'object'
additionalProperties: true
additionalProperties: false

+ 47
- 0
global/v4.0/schemas/drydock/NetworkLink/v1.yaml View File

@ -0,0 +1,47 @@
---
schema: 'deckhand/DataSchema/v1'
metadata:
schema: metadata/Control/v1
name: drydock/NetworkLink/v1
labels:
application: drydock
data:
$schema: 'http://json-schema.org/schema#'
type: 'object'
properties:
bonding:
type: 'object'
properties:
mode:
type: 'string'
hash:
type: 'string'
peer_rate:
type: 'string'
mon_rate:
type: 'number'
up_delay:
type: 'number'
down_delay:
type: 'number'
additionalProperties: false
mtu:
type: 'number'
linkspeed:
type: 'string'
trunking:
type: 'object'
properties:
mode:
type: 'string'
default_network:
type: 'string'
additionalProperties: false
allowed_networks:
type: 'array'
items:
type: 'string'
labels:
type: 'object'
additionalProperties: true
additionalProperties: false

+ 35
- 0
global/v4.0/schemas/drydock/Rack/v1.yaml View File

@ -0,0 +1,35 @@
---
schema: 'deckhand/DataSchema/v1'
metadata:
schema: metadata/Control/v1
name: drydock/Rack/v1
labels:
application: drydock
data:
$schema: 'http://json-schema.org/schema#'
type: 'object'
properties:
tor_switches:
type: 'object'
properties:
mgmt_ip:
type: 'string'
format: 'ipv4'
sdn_api_uri:
type: 'string'
format: 'uri'
location:
type: 'object'
properties:
clli:
type: 'string'
grid:
type: 'string'
local_networks:
type: 'array'
items:
type: 'string'
labels:
type: 'object'
additionalProperties: true
additionalProperties: false

+ 71
- 0
global/v4.0/schemas/drydock/Region/v1.yaml View File

@ -0,0 +1,71 @@
---
schema: 'deckhand/DataSchema/v1'
metadata:
schema: metadata/Control/v1
name: drydock/Region/v1
labels:
application: drydock
data:
$schema: 'http://json-schema.org/schema#'
type: 'object'
properties:
tag_definitions:
type: 'array'
items:
type: 'object'
properties:
tag:
type: 'string'
definition_type:
type: 'string'
enum:
- 'lshw_xpath'
definition:
type: 'string'
additionalProperties: false
authorized_keys:
type: 'array'
items:
type: 'string'
repositories:
# top level is class (e.g. apt, rpm)
type: 'object'
properties:
remove_unlisted:
type: 'boolean'
additionalPropties:
type: 'object'
properties:
repo_type:
type: 'string'
pattern: 'apt|rpm'
url:
type: 'string'
distributions:
type: 'array'
items:
type: 'string'
subrepos:
type: 'array'
items:
type: 'string'
components:
type: 'array'
items:
type: 'string'
gpgkey:
type: 'string'
arches:
type: 'array'
items:
type: 'string'
options:
type: 'object'
additionalProperties:
type: 'string'
additionalProperties: false
required:
- 'repo_type'
- 'url'
- 'arches'
additionalProperties: false

+ 645
- 0
global/v4.0/schemas/pegleg/AccountCatalogue/v1.yaml View File

@ -0,0 +1,645 @@
---
schema: 'deckhand/DataSchema/v1'
metadata:
schema: metadata/Control/v1
name: pegleg/AccountCatalogue/v1
data:
$schema: 'http://json-schema.org/schema#'
type: object
properties:
ucp:
type: object
properties:
postgres:
type: object
properties:
admin:
type: object
properties:
username:
type: string
oslo_db:
type: object
properties:
admin:
type: object
properties:
username:
type: string
oslo_messaging:
type: object
properties:
admin:
type: object
properties:
username:
type: string
keystone:
type: object
properties:
admin:
type: object
properties:
region_name:
type: string
username:
type: string
project_name:
type: string
user_domain_name:
type: string
project_domain_name:
type: string
oslo_messaging:
type: object
properties:
username:
type: string
oslo_db:
type: object
properties:
username:
type: string
database:
type: string
promenade:
type: object
properties:
keystone:
type: object
properties:
region_name:
type: string
role:
type: string
project_name:
type: string
project_domain_name:
type: string
user_domain_name:
type: string
username:
type: string
drydock:
type: object
properties:
keystone:
type: object
properties:
region_name:
type: string
role:
type: string
project_name:
type: string
project_domain_name:
type: string
user_domain_name:
type: string
username:
type: string
postgres:
type: object
properties:
username:
type: string
database:
type: string
shipyard:
type: object
properties:
keystone:
type: object
properties:
region_name:
type: string
role:
type: string
project_name:
type: string
project_domain_name:
type: string
user_domain_name:
type: string
username:
type: string
postgres:
type: object
properties:
username:
type: string
database:
type: string
airflow:
type: object
properties:
postgres:
type: object
properties:
username:
type: string
database:
type: string
oslo_messaging:
type: object
properties:
username:
type: string
maas:
type: object
properties:
admin:
type: object
properties:
username:
type: string
email:
type: string
postgres:
type: object
properties:
username:
type: string
database:
type: string
barbican:
type: object
properties:
keystone:
type: object
properties:
region_name:
type: string
role:
type: string
project_name:
type: string
project_domain_name:
type: string
user_domain_name:
type: string
username:
type: string
oslo_db:
type: object
properties:
username:
type: string
database:
type: string
oslo_messaging:
type: object
properties:
username:
type: string
armada:
type: object
properties:
keystone:
type: object
properties:
project_domain_name:
type: string
project_name:
type: string
region_name:
type: string
role:
type: string
user_domain_name:
type: string
username:
type: string
deckhand:
type: object
properties:
keystone:
type: object
properties:
region_name:
type: string
role:
type: string
project_name:
type: string
project_domain_name:
type: string
user_domain_name:
type: string
username:
type: string
postgres:
type: object
properties:
username:
type: string
database:
type: string
ceph:
type: object
properties:
swift:
type: object
properties:
keystone:
type: object
properties:
role:
type: string
region_name:
type: string
username:
type: string
project_name:
type: string
user_domain_name:
type: string
project_domain_name:
type: string
osh:
type: object
properties:
keystone:
type: object
properties:
admin:
type: object
properties:
region_name:
type: string
username:
type: string
project_name:
type: string
user_domain_name:
type: string
project_domain_name:
type: string
oslo_messaging:
type: object
properties:
admin:
type: object
properties:
username:
type: string
keystone:
type: object
properties:
username:
type: string
oslo_db:
type: object
properties:
username:
type: string
database:
type: string
cinder:
type: object
properties:
cinder:
type: object
properties:
role:
type: string
region_name:
type: string
username:
type: string
project_name:
type: string
user_domain_name:
type: string
project_domain_name:
type: string
oslo_messaging:
type: object
properties:
admin:
type: object
properties:
username:
type: string
cinder:
type: object
properties:
username:
type: string