# Copyright 2017 AT&T Intellectual Property. All other 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. #################### # # bootstrap_seed.yaml - Site server design definition for physical layer # #################### # version the schema in this file so consumers can rationally parse it --- apiVersion: 'v1.0' kind: Region metadata: name: sitename date: 17-FEB-2017 description: Sample site design author: sh8121@att.com spec: # Not sure if we have site wide data that doesn't fall into another 'Kind' --- apiVersion: 'v1.0' kind: NetworkLink metadata: name: oob region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 1 attributes. Primary key is 'name'. These settings will generally be things the switch and server have to agree on spec: bonding: mode: none mtu: 1500 linkspeed: 100full trunking: mode: none default_network: oob --- # pxe is a bit of 'magic' indicating the link config used when PXE booting # a node. All other links indicate network configs applied when the node # is deployed. apiVersion: 'v1.0' kind: NetworkLink metadata: name: pxe region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 1 attributes. Primary key is 'name'. These settings will generally be things the switch and server have to agree on spec: bonding: mode: none mtu: 1500 linkspeed: auto # Is this link supporting multiple layer 2 networks? # none is a port-based VLAN identified by default_network # tagged is is using 802.1q VLAN tagging. Untagged packets will default to default_netwokr trunking: mode: none # use name, will translate to VLAN ID default_network: pxe --- apiVersion: 'v1.0' kind: NetworkLink metadata: name: gp region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 1 attributes. These CIs will generally be things the switch and server have to agree on # pxe is a bit of 'magic' indicating the link config used when PXE booting # a node. All other links indicate network configs applied when the node # is deployed. spec: # If this link is a bond of physical links, how is it configured # 802.3ad # active-backup # balance-rr # Can add support for others down the road bonding: mode: 802.3ad # For LACP (802.3ad) xmit hashing policy: layer2, layer2+3, layer3+4, encap3+4 hash: layer3+4 # 802.3ad specific options peer_rate: slow mon_rate: default up_delay: default down_delay: default mtu: 9000 linkspeed: auto # Is this link supporting multiple layer 2 networks? trunking: mode: tagged default_network: mgmt --- apiVersion: 'v1.0' kind: Network metadata: name: oob region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 2/3 attributes. Primarily CIs used for configuring server interfaces spec: allocation: static cidr: 172.16.100.0/24 ranges: - type: static start: 172.16.100.15 end: 172.16.100.254 dns: domain: ilo.sitename.att.com servers: 172.16.100.10 --- apiVersion: 'v1.0' kind: Network metadata: name: pxe region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 2/3 attributes. Primarily CIs used for configuring server interfaces spec: # Layer 2 VLAN segment id, could support other segmentations. Optional vlan_id: '99' # How are addresses assigned? allocation: dhcp # MTU for this VLAN interface, if not specified it will be inherited from the link mtu: 1500 # Network address cidr: 172.16.0.0/24 # Desribe IP address ranges ranges: - type: dhcp start: 172.16.0.5 end: 172.16.0.254 # DNS settings for this network dns: # Domain addresses on this network will be registered under domain: admin.sitename.att.com # DNS servers that a server using this network as its default gateway should use servers: 172.16.0.10 --- apiVersion: 'v1.0' kind: Network metadata: name: mgmt region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 2/3 attributes. Primarily CIs used for configuring server interfaces spec: vlan_id: '100' # How are addresses assigned? allocation: static # Allow MTU to be inherited from link the network rides on mtu: 1500 # Network address cidr: 172.16.1.0/24 # Desribe IP address ranges ranges: - type: static start: 172.16.1.15 end: 172.16.1.254 # Static routes to be added for this network routes: - subnet: 0.0.0.0/0 # A blank gateway would leave to a static route specifying # only the interface as a source gateway: 172.16.1.1 metric: 10 # DNS settings for this network dns: # Domain addresses on this network will be registered under domain: mgmt.sitename.example.com # DNS servers that a server using this network as its default gateway should use servers: 172.16.1.9,172.16.1.10 --- apiVersion: 'v1.0' kind: Network metadata: name: private region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 2/3 attributes. Primarily CIs used for configuring server interfaces spec: vlan_id: '101' allocation: static mtu: 9000 cidr: 172.16.2.0/24 # Desribe IP address ranges ranges: # Type can be reserved (not used for baremetal), static (all explicit # assignments should fall here), dhcp (will be used by a DHCP server on this network) - type: static start: 172.16.2.15 end: 172.16.2.254 dns: domain: priv.sitename.example.com servers: 172.16.2.9,172.16.2.10 --- apiVersion: 'v1.0' kind: Network metadata: name: public region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 2/3 attributes. Primarily CIs used for configuring server interfaces spec: vlan_id: '102' # How are addresses assigned? allocation: static # MTU size for the VLAN interface mtu: 1500 cidr: 172.16.3.0/24 # Desribe IP address ranges ranges: - type: static start: 172.16.3.15 end: 172.16.3.254 routes: - subnet: 0.0.0.0/0 gateway: 172.16.3.1 metric: 9 dns: domain: sitename.example.com servers: 8.8.8.8 --- apiVersion: 'v1.0' kind: HostProfile metadata: name: default region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 2/3 attributes. Primarily CIs used for configuring server interfaces # No magic to this host_profile, it just provides a way to specify # sitewide settings. If it is absent from a node's inheritance chain # then these values will NOT be applied spec: # OOB (iLO, iDRAC, etc...) settings. Should prefer open standards such # as IPMI over vender-specific when possible. oob: type: ipmi # OOB networking should be preconfigured, but we can include a network # definition for validation or enhancement (DNS registration) network: oob account: admin credential: admin # Specify storage layout of base OS. Ceph out of scope storage: # How storage should be carved up: lvm (logical volumes), flat # (single partition) layout: lvm # Info specific to the boot and root disk/partitions bootdisk: # Device will specify an alias defined in hwdefinition.yaml device: primary_boot # For LVM, the size of the partition added to VG as a PV # For flat, the size of the partition formatted as ext4 root_size: 50g # The /boot partition. If not specified, /boot will in root boot_size: 2g # Info for additional partitions. Need to balance between # flexibility and complexity partitions: - name: logs device: primary_boot # Partition uuid if needed part_uuid: 84db9664-f45e-11e6-823d-080027ef795a size: 10g # Optional, can carve up unformatted block devices mountpoint: /var/log fstype: ext4 mount_options: defaults # Filesystem UUID or label can be specified. UUID recommended fs_uuid: cdb74f1c-9e50-4e51-be1d-068b0e9ff69e fs_label: logs # Platform (Operating System) settings platform: image: ubuntu_16.04_hwe kernel_params: default # Additional metadata to apply to a node metadata: # Base URL of the introspection service - may go in curtin data introspection_url: http://172.16.1.10:9090 --- apiVersion: 'v1.0' kind: HostProfile metadata: name: k8-node region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 2/3 attributes. Primarily CIs used for configuring server interfaces spec: # host_profile inheritance allows for deduplication of common CIs # Inheritance is additive for CIs that are lists of multiple items # To remove an inherited list member, prefix the primary key value # with '!'. host_profile: defaults # Hardware profile will map hardware specific details to the abstract # names uses in the host profile as well as specify hardware specific # configs. A viable model should be to build a host profile without a # hardware_profile and then for each node inherit the host profile and # specify a hardware_profile to map that node's hardware to the abstract # settings of the host_profile hardware_profile: HPGen9v3 # Network interfaces. interfaces: # Keyed on device_name # pxe is a special marker indicating which device should be used for pxe boot - device_name: pxe # The network link attached to this network_link: pxe # Slaves will specify aliases from hwdefinition.yaml slaves: - prim_nic01 # Which networks will be configured on this interface networks: - name: pxe - device_name: bond0 network_link: gp # If multiple slaves are specified, but no bonding config # is applied to the link, design validation will fail slaves: - prim_nic01 - prim_nic02 # If multiple networks are specified, but no trunking # config is applied to the link, design validation will fail networks: - name: mgmt - name: private metadata: # Explicit tag assignment tags: - 'test' # MaaS supports key/value pairs. Not sure of the use yet owner_data: foo: bar --- apiVersion: 'v1.0' kind: HostProfile metadata: name: k8-node-public region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 2/3 attributes. Primarily CIs used for configuring server interfaces spec: host_profile: k8-node interfaces: - device_name: bond0 networks: # This is additive, so adds a network to those defined in the host_profile # inheritance chain - name: public --- apiVersion: 'v1.0' kind: BaremetalNode metadata: name: controller01 region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 2/3 attributes. Primarily CIs used for configuring server interfaces spec: host_profile: k8-node-public # the hostname for a server, could be used in multiple DNS domains to # represent different interfaces interfaces: - device_name: bond0 networks: # '!' prefix for the value of the primary key indicates a record should be removed - name: '!private' # Addresses assigned to network interfaces addressing: # Which network the address applies to. If a network appears in addressing # that isn't assigned to an interface, design validation will fail - network: pxe # The address assigned. Either a explicit IPv4 or IPv6 address # or dhcp or slaac address: dhcp - network: mgmt address: 172.16.1.20 - network: public address: 172.16.3.20 metadata: tags: - os_ctl rack: rack01 --- apiVersion: 'v1.0' kind: BaremetalNode metadata: name: compute01 region: sitename date: 17-FEB-2017 author: sh8121@att.com description: Describe layer 2/3 attributes. Primarily CIs used for configuring server interfaces spec: host_profile: k8-node addressing: - network: pxe address: dhcp - network: mgmt address: 172.16.1.21 - network: private address: 172.16.2.21