# Scores Catalog A `Score` is a declarative description of a desired state. Find the Score you need and add it to your `harmony!` block's `scores` array. - [Scores Catalog](#scores-catalog) - [Application Deployment](#application-deployment) - [OKD / Kubernetes Cluster Setup](#okd-kubernetes-cluster-setup) - [Cluster Services & Management](#cluster-services-management) - [Monitoring & Alerting](#monitoring-alerting) - [Infrastructure & Networking (Bare Metal)](#infrastructure-networking-bare-metal) - [Infrastructure & Networking (Cluster)](#infrastructure-networking-cluster) - [Tenant Management](#tenant-management) - [Utility](#utility) ## Application Deployment Scores for deploying and managing end-user applications. - **ApplicationScore**: The primary score for deploying a web application. Describes the application, its framework, and the features it requires (e.g., monitoring, CI/CD). - **HelmChartScore**: Deploys a generic Helm chart to a Kubernetes cluster. - **ArgoHelmScore**: Deploys an application using an ArgoCD Helm chart. - **LAMPScore**: A specialized score for deploying a classic LAMP (Linux, Apache, MySQL, PHP) stack. ## OKD / Kubernetes Cluster Setup This collection of Scores is used to provision an entire OKD cluster from bare metal. They are typically used in order. - **OKDSetup01InventoryScore**: Discovers and catalogs the physical hardware. - **OKDSetup02BootstrapScore**: Configures the bootstrap node, renders iPXE files, and kicks off the SCOS installation. - **OKDSetup03ControlPlaneScore**: Renders iPXE configurations for the control plane nodes. - **OKDSetupPersistNetworkBondScore**: Configures network bonds on the nodes and port channels on the switches. - **OKDSetup04WorkersScore**: Renders iPXE configurations for the worker nodes. - **OKDSetup06InstallationReportScore**: Runs post-installation checks and generates a report. - **OKDUpgradeScore**: Manages the upgrade process for an existing OKD cluster. ## Cluster Services & Management Scores for installing and managing services _inside_ a Kubernetes cluster. - **K3DInstallationScore**: Installs and configes a local K3D (k3s-in-docker) cluster. Used by `K8sAnywhereTopology`. - **CertManagerHelmScore**: Deploys the `cert-manager` Helm chart. - **ClusterIssuerScore**: Configures a `ClusterIssuer` for `cert-manager`, (e.g., for Let's Encrypt). - **K8sNamespaceScore**: Ensures a Kubernetes namespace exists. - **K8sDeploymentScore**: Deploys a generic `Deployment` resource to Kubernetes. - **K8sIngressScore**: Configures an `Ingress` resource for a service. ## Monitoring & Alerting Scores for configuring observability, dashboards, and alerts. - **ApplicationMonitoringScore**: A generic score to set up monitoring for an application. - **ApplicationRHOBMonitoringScore**: A specialized score for setting up monitoring via the Red Hat Observability stack. - **HelmPrometheusAlertingScore**: Configures Prometheus alerts via a Helm chart. - **K8sPrometheusCRDAlertingScore**: Configures Prometheus alerts using the `PrometheusRule` CRD. - **PrometheusAlertScore**: A generic score for creating a Prometheus alert. - **RHOBAlertingScore**: Configures alerts specifically for the Red Hat Observability stack. - **NtfyScore**: Configures alerts to be sent to a `ntfy.sh` server. ## Infrastructure & Networking (Bare Metal) Low-level scores for managing physical hardware and network services. - **DhcpScore**: Configures a DHCP server. - **OKDDhcpScore**: A specialized DHCP configuration for the OKD bootstrap process. - **OKDBootstrapDhcpScore**: Configures DHCP specifically for the bootstrap node. - **DhcpHostBindingScore**: Creates a specific MAC-to-IP binding in the DHCP server. - **DnsScore**: Configures a DNS server. - **OKDDnsScore**: A specialized DNS configuration for the OKD cluster (e.g., `api.*`, `*.apps.*`). - **StaticFilesHttpScore**: Serves a directory of static files (e.g., a documentation site) over HTTP. - **TftpScore**: Configures a TFTP server, typically for serving iPXE boot files. - **IPxeMacBootFileScore**: Assigns a specific iPXE boot file to a MAC address in the TFTP server. - **OKDIpxeScore**: A specialized score for generating the iPXE boot scripts for OKD. - **OPNsenseShellCommandScore**: Executes a shell command on an OPNsense firewall. ## Infrastructure & Networking (Cluster) Network services that run inside the cluster or as part of the topology. - **LoadBalancerScore**: Configures a general-purpose load balancer. - **OKDLoadBalancerScore**: Configures the high-availability load balancers for the OKD API and ingress. - **OKDBootstrapLoadBalancerScore**: Configures the load balancer specifically for the bootstrap-time API endpoint. - **K8sIngressScore**: Configures an Ingress controller or resource. - [HighAvailabilityHostNetworkScore](../../harmony/src/modules/okd/host_network.rs): Configures network bonds on a host and the corresponding port-channels on the switch stack for high-availability. ## Tenant Management Scores for managing multi-tenancy within a cluster. - **TenantScore**: Creates a new tenant (e.g., a namespace, quotas, network policies). - **TenantCredentialScore**: Generates and provisions credentials for a new tenant. ## Utility Helper scores for discovery and inspection. - **LaunchDiscoverInventoryAgentScore**: Launches the agent responsible for the `OKDSetup01InventoryScore`. - **DiscoverHostForRoleScore**: A utility score to find a host matching a specific role in the inventory. - **InspectInventoryScore**: Dumps the discovered inventory for inspection.