Adaptations for OVS-DPDK blueprint
[yaml_builds.git] / site_type / ovsdpdk-a13 / templates / baremetal / nodes.j2
diff --git a/site_type/ovsdpdk-a13/templates/baremetal/nodes.j2 b/site_type/ovsdpdk-a13/templates/baremetal/nodes.j2
new file mode 100644 (file)
index 0000000..04280bf
--- /dev/null
@@ -0,0 +1,219 @@
+---
+# # Drydock BaremetalNode resources for a specific rack are stored in this file.
+# #
+# # NOTE: For new sites, you should complete the networks/physical/networks.yaml
+# # file before working on this file.
+# #
+# # In this file, you should make the number of `drydock/BaremetalNode/v1`
+# # resources equal the number of bare metal nodes you have, either by deleting
+# # excess BaremetalNode definitions (if there are too many), or by copying and
+# # pasting the last BaremetalNode in the file until you have the correct number
+# # of baremetal nodes (if there are too few).
+# #
+# # Then in each file, address all additional NEWSITE-CHANGEME markers to update
+# # the data in these files with the right values for your new site.
+# #
+# # *NOTE: The Genesis node is counted as one of the control plane nodes. Note
+# # that the Genesis node does not appear on this bare metal list, because the
+# # procedure to reprovision the Genesis host with MaaS has not yet been
+# # implemented. Therefore there will be only three bare metal nodes in this file
+# # with the 'masters' tag, as the genesis roles are assigned in a difference
+# # place (profiles/genesis.yaml).
+# # NOTE: The host profiles for the control plane are further divided into two
+# # variants: primary and secondary. The only significance this has is that the
+# # "primary" nodes are active Ceph nodes, whereas the "secondary" nodes are Ceph
+# # standby nodes. For Ceph quorum, this means that the control plane split will
+# # be 3 primary + 1 standby host profile, and the Genesis node counts toward one
+# # of the 3 primary profiles. Other control plane services are not affected by
+# # primary vs secondary designation.
+# #
+# # TODO: Include the hostname naming convention
+# #
+# schema: 'drydock/BaremetalNode/v1'
+# metadata:
+  # schema: 'metadata/Document/v1'
+  # # NEWSITE-CHANGEME: Replace with the hostname of the first node in the rack,
+  # # after (excluding) genesis.
+  # name: cab23-r720-12
+  # layeringDefinition:
+    # abstract: false
+    # layer: site
+  # storagePolicy: cleartext
+# data:
+  # # NEWSITE-CHANGEME: The IPv4 address assigned to each logical network on this
+  # # node. In the reference Airship deployment, this is all logical Networks defined
+  # # in networks/physical/networks.yaml. IP addresses are manually assigned, by-hand.
+  # # (what could possibly go wrong!) The instructions differ for each logical
+  # # network, which are laid out below.
+  # addressing:
+    # # The iDrac/iLo IP of the node. It's important that this match up with the
+    # # node's hostname above, so that the rack number and node position encoded
+    # # in the hostname are accurate and matching the node that IPMI operations
+    # # will be performed against (for poweron, poweroff, PXE boot to wipe disk or
+    # # reconfigure identity, etc - very important to get right for these reasons).
+    # # These addresses should already be assigned to nodes racked and stacked in
+    # # the environment; these are not addresses which MaaS assigns.
+    # - network: oob
+      # address: 10.23.104.12
+    # # The IP of the node on the PXE network. Refer to the static IP range
+    # # defined for the PXE network in networks/physical/networks.yaml. Begin allocating
+    # # IPs from this network, starting with the second IP (inclusive) from the
+    # # allocation range of this subnet (Genesis node will have the first IP).
+    # # Ex: If the start IP for the PXE "static" network is 10.23.20.11, then
+    # # genesis will have 10.23.20.11, this node will have 10.23.20.12, and
+    # # so on with incrementing IP addresses with each additional node.
+    # - network: pxe
+      # address: 10.23.20.12
+    # # Genesis node gets first IP, all other nodes increment IPs from there
+    # # within the allocation range defined for the network in
+    # # networks/physical/networks.yaml
+    # - network: oam
+      # address: 10.23.21.12
+    # # Genesis node gets first IP, all other nodes increment IPs from there
+    # # within the allocation range defined for the network in
+    # # networks/physical/networks.yaml
+    # - network: storage
+      # address: 10.23.23.12
+    # # Genesis node gets first IP, all other nodes increment IPs from there
+    # # within the allocation range defined for the network in
+    # # networks/physical/networks.yaml
+    # - network: overlay
+      # address: 10.23.24.12
+    # # Genesis node gets first IP, all other nodes increment IPs from there
+    # # within the allocation range defined for the network in
+    # # networks/physical/networks.yaml
+    # - network: calico
+      # address: 10.23.22.12
+  # # NEWSITE-CHANGEME: Set the host profile for the node.
+  # # Note that there are different host profiles depending if this is a control
+  # # plane vs data plane node, and different profiles that map to different types
+  # # hardware. Control plane host profiles are further broken down into "primary"
+  # # and "secondary" profiles (refer to the Notes section at the top of this doc).
+  # # Select the host profile that matches up to your type of
+  # # hardware and function. E.g., the r720 here refers to Dell R720 hardware, the
+  # # 'cp' refers to a control plane profile, and the "primary" means it will be
+  # # an active member in the ceph quorum. Refer to profiles/host/ for the list
+  # # of available host profiles specific to this site (otherwise, you may find
+  # # a general set of host profiles at the "type" or "global" layers/folders.
+  # # If you have hardware that is not on this list of profiles, you may need to
+  # # create a new host profile for that hardware.
+  # # Regarding control plane vs other data plane profiles, refer to the notes at
+  # # the beginning of this file. There should be one control plane node per rack,
+  # # including Genesis. Note Genesis won't actually be listed in this file as a
+  # # BaremetalNode, but the rest are.
+  # # This is the second "primary" control plane node after Genesis.
+  # host_profile: cp_r720-primary
+  # metadata:
+    # tags:
+      # # NEWSITE-CHANGEME: See previous comment. Apply 'masters' tag for control
+      # # plane node, and 'workers' tag for data plane hosts.
+      # - 'masters'
+    # # NEWSITE-CHANGEME: Refer to site engineering package or other supporting
+    # # documentation for the specific rack name. This should be a rack name that
+    # # is meaningful to data center personnel (i.e. a rack they could locate if
+    # # you gave them this rack designation).
+    # rack: cab23
+# ...
+{% for server in yaml.masters %}
+{% if loop.index > 1 %}
+---
+{% endif %}
+schema: 'drydock/BaremetalNode/v1'
+metadata:
+  schema: 'metadata/Document/v1'
+  # NEWSITE-CHANGEME: The next node's hostname
+  name: {{server.name}}
+  layeringDefinition:
+    abstract: false
+    layer: site
+  storagePolicy: cleartext
+data:
+  # NEWSITE-CHANGEME: The next node's IPv4 addressing
+  addressing:
+    - network: oob
+      address: {{server.oob}}
+    - network: pxe
+      address: {{server.pxe}}
+    - network: oam
+      address: {{server.host}}
+    - network: storage
+      address: {{server.storage}}
+    - network: overlay
+      address: {{server.neutron}}
+    - network: calico
+      address: {{server.ksn}}
+    - network: dpdk
+      address: {{server.vxlan}}
+  # NEWSITE-CHANGEME: The next node's host profile
+{% if loop.index < 3 %}
+  host_profile: cp_r720-primary
+{% else %}
+  host_profile: cp_r720-secondary
+{% endif %}
+  metadata:
+    # NEWSITE-CHANGEME: The next node's rack designation
+    rack: cab23
+    # NEWSITE-CHANGEME: The next node's role desigatnion
+    tags:
+      - 'masters'
+{% if 'platform' in yaml %}
+  platform:
+    kernel_params:
+{% for key, value in yaml.platform.kernel_params.items() %}
+      {{key}}: '{{value}}'
+{% endfor %}
+{% if 'vcpu_pin_set' in yaml.platform %}
+      isolcpus: '{{yaml.platform.vcpu_pin_set}}'
+{% endif %}
+{% endif %}
+...
+{% endfor %}
+{% if 'workers' in yaml %}{% for server in yaml.workers %}
+---
+schema: 'drydock/BaremetalNode/v1'
+metadata:
+  schema: 'metadata/Document/v1'
+  # NEWSITE-CHANGEME: The next node's hostname
+  name: cab23-r720-14
+  layeringDefinition:
+    abstract: false
+    layer: site
+  storagePolicy: cleartext
+data:
+  # NEWSITE-CHANGEME: The next node's IPv4 addressing
+  addressing:
+    - network: oob
+      address: {{server.oob}}
+    - network: pxe
+      address: {{server.pxe}}
+    - network: oam
+      address: {{server.host}}
+    - network: storage
+      address: {{server.storage}}
+    - network: overlay
+      address: {{server.neutron}}
+    - network: calico
+      address: {{server.ksn}}
+    - network: dpdk
+      address: {{server.vxlan}}
+  # NEWSITE-CHANGEME: The next node's host profile
+  # This is the third "primary" control plane profile after genesis
+  host_profile: dp_r720
+  metadata:
+    # NEWSITE-CHANGEME: The next node's rack designation
+    rack: cab23
+    # NEWSITE-CHANGEME: The next node's role desigatnion
+    tags:
+      - 'workers'
+{% if 'platform' in yaml %}
+  platform:
+    kernel_params:
+{% for key, value in yaml.platform.kernel_params.items() %}
+      {{key}}: '{{value}}'
+{% endfor %}
+{% if 'vcpu_pin_set' in yaml.platform %}
+      isolcpus: '{{yaml.platform.vcpu_pin_set}}'
+{% endif %}
+{% endif %}
+...
+{% endfor %}{% endif %}