You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/release-notes/osism-10.md
+111Lines changed: 111 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,9 +28,120 @@ independently of it.
28
28
29
29
| Release | Release Date |
30
30
|:--------|:---------------|
31
+
| 10.2.0 | 14.August |
31
32
| 10.1.0 | 16. June 2026 |
32
33
| 10.0.0 | 22. March 2026 |
33
34
35
+
## 10.2.0
36
+
37
+
* All OpenStack service images have been rebuilt. An upgrade of OpenStack services is recommended.
38
+
39
+
* The infrastructure service images (MariaDB, RabbitMQ, ..) have been rebuilt. An upgrade is recommended.
40
+
41
+
* The network service images (OVN, OVS) have been rebuilt. An upgrade is recommended.
42
+
43
+
* The monitoring service images (Prometheus & all Prometheus exporters) have been rebuilt. An upgrade is recommended.
44
+
45
+
* The logging service images (OpenSearch, Fluentd) have been rebuilt. An upgrade is recommended.
46
+
47
+
### Rook removed as a Ceph deployment option
48
+
49
+
Rook never moved beyond a technical preview in OSISM and was never exercised in the nightly pipelines. It has been removed completely: the `rook` and `rook_operator` roles, the vendored Helm charts, the `kubernetes-rook*` playbooks in osism-kubernetes, the `rook` install type in cephclient, and the related node label defaults are all gone. If you deployed rook for Ceph via osism-kubernetes, deploy it directly from the upstream project instead; OSISM no longer provides an integration for it.
50
+
51
+
### FRR
52
+
53
+
- The new `frr_version_lock` variable defaults to `true` and pins the installed `frr` package (`apt-mark hold` on Debian/Ubuntu, `dnf versionlock` on the RedHat family), so a plain `apt-get upgrade` can no longer pull in a new frr version and restart the daemon unexpectedly. On existing Debian/Ubuntu deployments, the package is put on hold the next time the role runs. Set `frr_version_lock: false` to keep the previous, unpinned behavior.
54
+
- The `frr_leaf`, `frr_loadbalancer` and `frr_loadbalancer_external_uplink` templates hardcoded `maximum-paths 2`. With four or more uplinks, FRR then only installed two of the available ECMP paths, which didn't always match the paths the switches picked for return traffic and could break connections. The hardcoded value is gone; FRR now uses its built-in default of 256 paths. Set the new `frr_maximum_paths` variable to limit the number of paths again.
55
+
- Set `frr_exporter_enable: true` to run `prometheus-frr-exporter` alongside FRR on Debian-family hosts (binds to `127.0.0.1:9342` by default, configurable via `frr_exporter_host`/`frr_exporter_port`). Off by default, and not available on the RedHat family.
56
+
57
+
### Configuration repository updates now preserve local files
58
+
59
+
`osism apply configuration` force-checks out the configuration repository, which used to discard local modifications to tracked files. In a monorepo setup (NetBox as a directory instead of a submodule), this reset `netbox/settings.toml` to the repository placeholder on every update, dropping the local NetBox URL and API token and breaking manager-to-NetBox communication until it was fixed manually.
60
+
61
+
Set `configuration_git_preserve_files` to keep specific files intact across an update:
62
+
63
+
```yaml
64
+
configuration_git_preserve_files:
65
+
- netbox/settings.toml
66
+
```
67
+
68
+
The default is an empty list, so existing deployments are unaffected until you opt in.
69
+
70
+
### OpenStack services
71
+
72
+
- Keystone's `OIDCXForwardedHeaders` Apache directive can now list multiple forwarded headers. Previously the value was wrapped in quotes that made Apache treat the whole list as one argument, so only a single header could effectively be configured.
73
+
- A new playbook fully removes a disabled RabbitMQ service, including its container, data volume, host configuration and HAProxy frontend, none of which upstream's teardown ever cleaned up:
74
+
75
+
```bash
76
+
osism apply purge-rabbitmq
77
+
```
78
+
79
+
This is destructive: all messages, queues, vhosts and cluster state are lost permanently, and it needs an explicit confirmation flag.
80
+
- `nova_libvirt`: libvirtd's connection limits were raised (`max_client_requests` 5 to 20, `max_workers` 20 to 50, tunable via `libvirt_max_client_requests`/`libvirt_max_workers`), fixing intermittent instance build failures under concurrent builds. `virtlogd` now runs alongside `libvirtd` and rotates guest console logs instead of letting them grow unbounded. Existing instances need a hard reboot to pick up the new console handler.
81
+
- A deploy-time check now verifies the `nova_libvirt` image ships the helper script current kolla-ansible requires before deploying. If you upgrade kolla-ansible ahead of pulling a matching `nova_libvirt` image, the deploy now fails fast with a clear message instead of leaving the container unable to start.
82
+
- RabbitMQ: draining a single-node cluster now uses `stop_app` instead of `drain`, which never worked on single-node setups.
83
+
- OpenSearch Dashboards logs are now included in logrotate; they previously accumulated unbounded under `/var/log/kolla/opensearch-dashboards/`.
84
+
- `nova-compute`now starts correctly after `/var/lib/nova` has been wiped, for example after reprovisioning a compute host.
85
+
- Cinder: a NetApp NVMe/TCP multipath fix so `initialize_connection` returns all available target portals.
86
+
- The experimental `kolla-mariadb-ng`, `kolla-rabbitmq-ng` and `kolla-loadbalancer-ng` playbooks and their client-side roles were removed; they never moved beyond a tech preview. `osism apply mariadb`, `rabbitmq` and `loadbalancer` already run the regular, actively maintained plays.
87
+
88
+
#### Security fixes
89
+
90
+
- Keystone: fixed unauthorized EC2 credential creation and deletion (CVE-2026-33551) and an RBAC policy bypass (CVE-2026-42999), plus further CVE patches.
91
+
- Nova: instance creation no longer accepts forged internal scheduler hints (CVE-2026-46448), and the websocket proxy no longer mutates its allowed-origins config from request Host headers (OSSN-0101).
92
+
- Neutron: fixed cross-project access to router conntrack helpers and floating IP port forwarding (OSSN-0102), and non-admin users onboarding subnets of networks they don't own (CVE-2026-55707).
93
+
- Designate: fixed split-horizon DNS query pool scoping, zones scheduled to non-default pools now require TSIG keys, and a cross-tenant zone-ownership bypass was closed.
94
+
95
+
### CLI and manager service
96
+
97
+
- New `osism openstack` command passes any subcommand straight through to the OpenStack CLI using the credentials from your configuration repository, so a separate openstack container is no longer needed to reach the encrypted `secure.yml`. Defaults to the `admin` cloud; override with `--cloud`.
98
+
- New `osism reset facts` command clears the cached Ansible facts in Redis, useful when troubleshooting stale or incorrect facts. Use `-l/--limit` to scope it to specific hosts or groups. It only clears the cache and asks for no confirmation; the cache rebuilds on the next fact-gathering run.
99
+
- `osism baremetal list`gained a `UUID` column so nodes can be cross-referenced with Ironic logs.
100
+
- `osism baremetal clean`gained `--metadata-only`, which runs only the `erase_device_metadata` clean step. Use it as a workaround on hardware where secure erase fails and blocks the metadata-erase fallback.
101
+
- Octavia amphora image import now falls back to aria2 plus glance-direct after a single failed web-download attempt instead of retrying the slow source repeatedly, and the task timeout was raised to accommodate it.
102
+
- `osism manage images --cloud`now defaults to the `admin` profile from `clouds.yml`, so a bare `osism manage images` no longer fails with a missing-cloud error.
103
+
- `status`and `loadbalancer` commands now detect the correct MariaDB superuser on ProxySQL-sharded clusters, fixing authentication failures there.
104
+
- Baremetal commands (validation, deployment, config drive creation, provisioning, burn-in, cleaning, maintenance, power state, deletion) now return a non-zero exit code on failure instead of always succeeding, and `redfish list` no longer connects with empty credentials due to a lookup bug.
105
+
- `osism configuration sync`forwards option-like arguments and the log format correctly again, `osism task revoke` no longer crashes on an unpacked task id, and `osism service`/`osism worker` reject unknown types instead of producing malformed commands.
106
+
- `CELERY_BROKER_URL`and `CELERY_RESULT_BACKEND` environment variables can now override the Redis-derived Celery broker/result backend URLs. Ansible facts freshness checks no longer produce permanent stale warnings for localhost.
107
+
108
+
### Inventory reconciler
109
+
110
+
- New Ceph extractor: set `ceph_parameters` in a device's NetBox custom field or config context to have the reconciler resolve and write the enriched Ceph device variables to `999-netbox-ceph.yml`.
111
+
- `accept-ra`is now disabled on BGP-unnumbered leaf connections, so nodes no longer install IPv6 routes from router advertisements into the kernel. On these links, routes should come from BGP only.
112
+
- Netplan/FRR defaults derived purely from a device's config context are no longer silently dropped when interface auto-generation itself produces no output before the config-context merge.
113
+
- The routed metalbox dnsmasq writer now guards against an unresolved out-of-band interface, preventing a broken `metalbox,None,None` configuration from being emitted.
114
+
- Reconciler runs no longer deadlock when `/run.sh` produces more output than the pipe buffer holds.
115
+
116
+
### SONiC
117
+
118
+
- ZTP firmware installs now fetch a per-device image built from the switch's serial number instead of one fixed image for all switches. `sync sonic` creates and reconciles a matching per-serial symlink from `sonic_parameters.version` in NetBox to the right firmware image.
119
+
- SNMP, gNMI and SSH access to SONiC switches' control plane is now restricted to the out-of-band management network via generated ACLs. Previously, front-panel interfaces could also reach these services, including TCP/22.
120
+
- The config generator now regenerates the default VRF's BGP entries again, restoring EVPN route advertisement for the default VRF, which had silently stopped working.
121
+
- Several interface-speed and breakout detection bugs were fixed: speeds are now normalized to Mbps consistently between NetBox and SONiC detection, 4x10G breakouts on `EthernetX`-named interfaces are no longer dropped, and native low-speed ports are no longer misdetected as breakouts.
122
+
- A failed SONiC configuration reload is now reported as a failure instead of being swallowed.
123
+
124
+
### NTP validation is now stricter
125
+
126
+
The NTP check (`validate-ntp`) moved into a dedicated role and, in doing so, closed a gap in the synchronization check: a `chronyd` that never synchronized to any source used to pass all of its assertions. Hosts whose `chronyd` never synchronized now correctly fail validation. Thresholds are configurable via `chrony_max_stratum`, `chrony_max_system_clock_deviation` and `chrony_max_upper_clock_error_bound`.
127
+
128
+
### Notable changes
129
+
130
+
- Remote SSH key fetches (`key: "github"` or a `https://` URL) for the `user` role now run on the Ansible controller by default instead of on the target host, so keys can be installed even when the target has no outbound internet access. Set `user_fetch_keys_delegate_to` to change where the fetch runs, and `user_fetch_keys_allowed_hosts` (default `github.com`) to allow additional key servers.
131
+
- `smartd`can now manage `/etc/smartd.conf` directly via `smartd_devices`/`smartd_configure`, useful when the default `DEVICESCAN` line finds no devices, for example behind a RAID controller.
132
+
- `dnsdist`backend servers accept arbitrary `newServer()` parameters and the ACL is configurable via `dnsdist_acls`. Configuration changes now restart the service, which previously required a manual restart to take effect.
133
+
- `squid` can run with Docker host networking via `squid_network_mode: host`, avoiding manual SNAT rules in routed setups. The default stays `bridge`.
134
+
- The manager, NetBox and stepca containers are now recreated after pulling a new image, fixing rolling-tag deployments where a new image was pulled but the container kept running the old one. NetBox no longer restarts while its initial database migration is still running.
135
+
- `cephclient`and `openstackclient` images now track the deployed Ceph/OpenStack series automatically instead of a frozen default version.
136
+
- The `thanos_sidecar` role, its deploy playbook and inventory group were removed; this integration is retired.
137
+
- RabbitMQ node address resolution was rewritten to go through Ansible's own host-context templating on the controller instead of a hand-written resolver, fixing lookups for VLAN interfaces such as `bond0.100`, hosts without a working Python interpreter, and `internal_interface` not falling back to `console_interface` when unset.
138
+
- NetBox device lookups now query the correct `ipam.ip_addresses` endpoint (previously a non-existent `dcim.addresses`) and match the `primary` filter keyword as a whole word, so a site named e.g. `primary-region` is no longer matched by substring. Maintenance/provision/power-state updates now correctly report failure instead of always succeeding when the underlying device update fails.
139
+
- Ceph rolling upgrades on reef and squid no longer intermittently fail during the mon quorum check, which now probes the live monmap instead of a recomputed address.
140
+
- Image tags for dnsmasq, gnmic, pgautoupgrade, scaphandre, stepca, opentelemetry_collector and substation are now wired into the images template, so pinned release versions reach the deployed containers instead of drifting to each role's own default tag.
141
+
- The sshd hardening role now creates the privilege-separation directory before validating `sshd_config`, fixing a failure on hosts where it didn't already exist.
142
+
- The `nginx` and `registry` container images are no longer part of OSISM's image set; the last, orphaned references to them in the image and manager environment templates were removed.
143
+
- Several bundled Ansible collections and roles moved to new major versions: community.general (11 to 13), community.mysql (4 to 5), and the CIS hardening role ubuntu22_cis (2 to 3). If you call their modules directly from custom overlays or playbooks, check each project's changelog for breaking changes.
0 commit comments