Add custom role for realtime compute

This change introduces the ComputeRealTime role, that can be used
Create an initial version of a custom role for real-time compute
nodes.

Partially Implements: blueprint tripleo-realtime

Change-Id: I935cf8a74415b28f50eac041d6d3f92dc1ec1391
This commit is contained in:
Sven Anderson 2018-01-08 13:40:21 +01:00
parent 6228dd53d3
commit 06bab12f5a
3 changed files with 103 additions and 0 deletions

View File

@ -0,0 +1,33 @@
# A Heat environment that can be used to deploy a real-time compute node
# Deploying a real-time compute node requires enabling hugepages for the
# overcloud nodes, which is done by default for the ComputeRealTime role.
# However, the CPU pinnings (IsolCpusList and NovaVcpuPinSet) need to be set in
# an environment file like this, according to the hardware used for the
# real-time compute nodes.
# Also the hugepages parameters in KernelArgs should be set accordingly
# the memory of the real-time compute nodes.
# It's also possible to overwrite the default values for other parameters like
# TunedProfileName and ComputeRealTimeImage here.
parameter_defaults:
## Only uncomment this line to overwrite the default image name
#ComputeRealTimeImage: "overcloud-realtime-compute"
ComputeRealTimeParameters:
## Host configuration Parameters
## You must change these values accordingly to your hardware
IsolCpusList: "2,3" # Logical CPUs list to be isolated from the host process (applied via cpu-partitioning tuned).
# It is mandatory to provide isolated cpus for tuned to achive optimal performance.
# Example: "3-8,12-15,18"
NovaVcpuPinSet: "2,3" # Cores to pin Nova instances to. For maximum performance, select cores
# on the same NUMA node(s) selected for previous settings.
## Space separated kernel args to configure hugepage. Deploying real-time
## requires enabling hugepages for the overcloud compute nodes.
## Adapt the hugepages according to the memory of the real-time compute nodes.
KernelArgs: "default_hugepagesz=1G hugepagesz=1G hugepages=16"
## Only uncomment these lines to overwrite the defaults
#TunedProfileName: "realtime-virtual-host"

View File

@ -0,0 +1,64 @@
###############################################################################
# Role: ComputeRealTime #
###############################################################################
- name: ComputeRealTime
description: |
Compute role that is optimized for real-time behaviour. When using this role
it is mandatory that an overcloud-realtime-compute image is available and
the role specific parameters IsolCpusList and NovaVcpuPinSet are set
accordingly to the hardware of the real-time compute nodes.
CountDefault: 1
networks:
- InternalApi
- Tenant
- Storage
HostnameFormatDefault: '%stackname%-computerealtime-%index%'
disable_upgrade_deployment: True
ImageDefault: overcloud-realtime-compute
RoleParametersDefault:
TunedProfileName: "realtime-virtual-host"
KernelArgs: "" # these must be set in an environment file or similar
IsolCpusList: "" # according to the hardware of real-time nodes
NovaVcpuPinSet: "" #
ServicesDefault:
- OS::TripleO::Services::Aide
- OS::TripleO::Services::AuditD
- OS::TripleO::Services::CACerts
- OS::TripleO::Services::CephClient
- OS::TripleO::Services::CephExternal
- OS::TripleO::Services::CertmongerUser
- OS::TripleO::Services::Collectd
- OS::TripleO::Services::ComputeCeilometerAgent
- OS::TripleO::Services::ComputeNeutronCorePlugin
- OS::TripleO::Services::ComputeNeutronL3Agent
- OS::TripleO::Services::ComputeNeutronMetadataAgent
- OS::TripleO::Services::ComputeNeutronOvsAgent
- OS::TripleO::Services::Docker
- OS::TripleO::Services::Fluentd
- OS::TripleO::Services::Ipsec
- OS::TripleO::Services::Iscsid
- OS::TripleO::Services::Kernel
- OS::TripleO::Services::LoginDefs
- OS::TripleO::Services::MySQLClient
- OS::TripleO::Services::NeutronBgpVpnBagpipe
- OS::TripleO::Services::NeutronLinuxbridgeAgent
- OS::TripleO::Services::NeutronVppAgent
- OS::TripleO::Services::NovaCompute
- OS::TripleO::Services::NovaLibvirt
- OS::TripleO::Services::NovaMigrationTarget
- OS::TripleO::Services::Ntp
- OS::TripleO::Services::ContainersLogrotateCrond
- OS::TripleO::Services::OpenDaylightOvs
- OS::TripleO::Services::Rhsm
- OS::TripleO::Services::RsyslogSidecar
- OS::TripleO::Services::Securetty
- OS::TripleO::Services::SensuClient
- OS::TripleO::Services::SkydiveAgent
- OS::TripleO::Services::Snmp
- OS::TripleO::Services::Sshd
- OS::TripleO::Services::Timezone
- OS::TripleO::Services::TripleoFirewall
- OS::TripleO::Services::TripleoPackages
- OS::TripleO::Services::Vpp
- OS::TripleO::Services::OVNController
- OS::TripleO::Services::OVNMetadataAgent

View File

@ -682,6 +682,12 @@ def validate(filename, param_map):
'OS::TripleO::Services::NeutronLinuxbridgeAgent']
retval = validate_with_compute_role_services(filename, tpl, exclude)
if filename.startswith('./roles/ComputeRealTime.yaml'):
exclude = [
'OS::TripleO::Services::Tuned',
]
retval = validate_with_compute_role_services(filename, tpl, exclude)
if filename.startswith('./roles/Hci'):
retval = validate_hci_role(filename, tpl)