General Rules
- Create the credential inside the project that owns the resources
- Keep a record of the application credential ID and secret when they are generated
- Apply the path and method rules exactly as written
UNI Attribution Credentials
The OpenStack agent uses three UNI APIs to materialise resource attribution. It authenticates with the UNI mTLS client certificate issued by the UNI deployment. The certificate Secret is delivered to Fleet Manager through Vault and mounted at/etc/uni-certs; private key material must not be stored in Helm values, a
ConfigMap, or a checked-in file.
The UNI API owners must approve the service account and final read-only role
before the certificate is issued. The account should be restricted to the
deployment’s region or organisation wherever the UNI API supports that boundary:
The deployment configuration supplies the three UNI base URLs and the name of
the Kubernetes Secret containing these keys:
The UNI deployment owns certificate creation, Vault publication, and rotation.
Fleet Manager owns consumption and must not copy the values into repository
configuration or expose them in logs.
Before production rollout, the API owner and Fleet Manager operator must sign
off the access review and perform one non-production certificate rotation exercise:
- Issue a replacement certificate with the same approved read-only role.
- Publish it to the environment-scoped Vault path and verify the ExternalSecret updates the mounted Secret.
- Verify the three read paths and attribution lookups in non-production.
- Revoke the previous certificate and record the result in the deployment notes.
Ironic Instance Overview
Fleet Manager routes Ironic API calls to two separate Ironic instances:- Overcloud — manages GPU_COMPUTE and CPU_BAREMETAL nodes. Always required.
- Undercloud — manages CPU_HYPERVISOR nodes. Only add if the deployment has FM-managed hypervisor hardware; the OpenStack agent skips the undercloud automatically when no devices at that site map to it.
Create the Credentials
Fleet Manager consumes credentials by reading aclouds.yaml file from 1Password as a
document. Each credential uses this shape:
Endpoints behind a private CA
Addcacert_pem — the CA certificate inline — to any cloud whose endpoints present a
certificate signed by a private CA. Omit it otherwise; a cloud that names no CA verifies
against the public roots. The inline form exists because a clouds.yaml delivered as a
1Password document has no file on disk for the standard cacert path to point at.
Introduced for sys2-lon14, the first dual-stack deployment, whose OpenStack endpoints are
served by a one-off self-signed CA.
Overcloud credentials (always required)
Source the overcloud OpenStack admin credentials:clouds.yaml with overcloud as the cloud name and upload to 1Password:
Undercloud credentials (only for deployments with CPU_HYPERVISOR nodes)
Source the undercloud OpenStack admin credentials:clouds.yaml with undercloud as the cloud name and upload to 1Password:
SLURM credentials
Upload the SLURM credential:Sentinel Operator Credentials
Sentinel OpenStack access is operator/debug access. Store these read-only credentials in the operators vault, not the runtime service-credential vault:10.x) are not reachable from an operator laptop, so Sentinel
does not carry credentials for them.
Keep runtime service credentials separate:
clouds.yaml and stores it as the
[DEPLOYMENT_NAME]-sentinel-openstack-overcloud document. It does not print the
one-time Keystone secret unless --print is explicitly passed.
Sentinel overcloud read-only profile
Use this profile for theovercloud Sentinel credential.
Every rule is
method: GET — that is the read-only safety boundary, and it holds
even though the credential carries the admin role. Admin is required because the
overcloud baremetal and placement APIs are admin-scoped: a project reader/member
cannot see nodes or resource providers. /** matches every path in the service,
which covers ironicclient’s trailing-slash collection requests (GET /v1/nodes/,
which a single-segment /v1/* rule misses — Keystone would reject
openstack baremetal node list with a 401) and avoids surprise 401s on unlisted
read sub-resources during an investigation.fleetctl openstack wrappers for
OpenStack mutations; use the real OpenStack CLI so Keystone remains the enforcement point.
Project-Prep Admin Credential
Thedeployment-standup openstack application-credential-create command creates this credential
programmatically from the Fleet Manager code. Use this section only when creating the same
credential manually in Horizon or with the OpenStack CLI.
This credential lets deployment standup create the Fleet Manager project, grant the configured
member role, and prepare Nova, Cinder, and Neutron quotas.
project_prep_access_rules.yaml and apply it when creating the
project-prep admin credential:
Admin Project: Bare Metal and Placement
These permissions are required for Fleet Manager workflows that manage bare-metal inventory through Ironic. Custom traits (e.g.CUSTOM_CUSTOMER_READY) are written via the Ironic
node-traits API and also written directly to Placement in time-sensitive flows (quarantine,
release, enrolment) where waiting for Nova’s resource sync interval is not acceptable.
admin_access_rules.yaml and apply it when creating each Ironic credential.
For the overcloud (and undercloud if applicable):
Slurm Project: Nova
These permissions are required for the SLURM-side compute integration and Image Node workflows.slurm_access_rules.yaml and then
running:
Where These Credentials Are Used
These credentials feed the wider deployment flow:- site rollout and secret bootstrap
- Ironic enrolment and node maintenance operations
- Ironic node trait updates (CUSTOM_CUSTOMER_READY etc.)
- Placement inventory and trait reads
- Node unenrolment (Ironic teardown, Placement RP deletion, Nova deployed-instance check)
- SLURM-side compute lifecycle actions