Skip to content

Commit c097a02

Browse files
authored
Merge branch 'stackhpc/2025.1' into ansible-directories
2 parents 901ca38 + 7b8b3aa commit c097a02

File tree

18 files changed

+827
-111
lines changed

18 files changed

+827
-111
lines changed

.automation

.github/workflows/multinode-inputs.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ class OSRelease:
1717
@dataclass
1818
class OpenStackRelease:
1919
version: str
20-
previous_version: str
2120
os_releases: t.List[OSRelease]
2221

2322

@@ -34,11 +33,12 @@ class Scenario:
3433
UBUNTU_NOBLE = OSRelease("ubuntu", "noble", "ubuntu")
3534
# NOTE(upgrade): Add supported releases here.
3635
OPENSTACK_RELEASES = [
37-
OpenStackRelease("2023.1", "zed", [ROCKY_9, UBUNTU_JAMMY]),
38-
OpenStackRelease("2024.1", "2023.1", [ROCKY_9, UBUNTU_JAMMY]),
39-
OpenStackRelease("2025.1", "2024.1", [ROCKY_9, UBUNTU_NOBLE]),
36+
OpenStackRelease("2023.1", [ROCKY_9, UBUNTU_JAMMY]),
37+
OpenStackRelease("2024.1", [ROCKY_9, UBUNTU_JAMMY]),
38+
OpenStackRelease("2025.1", [ROCKY_9, UBUNTU_NOBLE]),
4039
]
4140
NEUTRON_PLUGINS = ["ovs", "ovn"]
41+
VERSION_HIERARCHY = ["zed", "2023.1", "2024.1", "2025.1"]
4242

4343

4444
def main() -> None:
@@ -52,13 +52,20 @@ def random_scenario() -> Scenario:
5252
openstack_release = random.choice(OPENSTACK_RELEASES)
5353
os_release = random.choice(openstack_release.os_releases)
5454
neutron_plugin = random.choice(NEUTRON_PLUGINS)
55-
upgrade = 'major' if random.random() > 0.6 else 'none'
55+
upgrade = "major" if random.random() > 0.6 else "none"
5656
return Scenario(openstack_release, os_release, neutron_plugin, upgrade)
5757

5858

5959
def generate_inputs(scenario: Scenario) -> t.Dict[str, str]:
6060
branch = get_branch(scenario.openstack_release.version)
61-
previous_branch = get_branch(scenario.openstack_release.previous_version)
61+
previous_branch = get_branch(
62+
VERSION_HIERARCHY[
63+
VERSION_HIERARCHY.index(scenario.openstack_release.version) - 1
64+
]
65+
)
66+
terraform_kayobe_multinode_version = get_tkm_version(
67+
scenario.openstack_release.version
68+
)
6269
inputs = {
6370
"os_distribution": scenario.os_release.distribution,
6471
"os_release": scenario.os_release.release,
@@ -67,6 +74,7 @@ def generate_inputs(scenario: Scenario) -> t.Dict[str, str]:
6774
"upgrade": scenario.upgrade,
6875
"stackhpc_kayobe_config_version": branch,
6976
"stackhpc_kayobe_config_previous_version": previous_branch,
77+
"terraform_kayobe_multinode_version": terraform_kayobe_multinode_version,
7078
}
7179
return inputs
7280

@@ -75,6 +83,13 @@ def get_branch(version: str) -> str:
7583
return f"stackhpc/{version}"
7684

7785

86+
def get_tkm_version(version: str) -> str:
87+
if version in ["zed", "2023.1"]:
88+
return "ea61ea1730e179e05e8f0e58b759267664c555e7"
89+
else:
90+
return "main"
91+
92+
7893
def write_output(name: str, value: str) -> None:
7994
print(f"{name}={value}")
8095

.github/workflows/stackhpc-multinode-periodic.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ jobs:
1919
upgrade: ${{ steps.generate-inputs.outputs.upgrade }}
2020
stackhpc_kayobe_config_version: ${{ steps.generate-inputs.outputs.stackhpc_kayobe_config_version }}
2121
stackhpc_kayobe_config_previous_version: ${{ steps.generate-inputs.outputs.stackhpc_kayobe_config_previous_version }}
22+
terraform_kayobe_multinode_version: ${{ steps.generate-inputs.outputs.terraform_kayobe_multinode_version }}
2223
steps:
2324
- name: Checkout
2425
uses: actions/checkout@v4
@@ -45,6 +46,7 @@ jobs:
4546
upgrade: ${{ needs.generate-inputs.outputs.upgrade }}
4647
stackhpc_kayobe_config_version: ${{ needs.generate-inputs.outputs.stackhpc_kayobe_config_version }}
4748
stackhpc_kayobe_config_previous_version: ${{ needs.generate-inputs.outputs.stackhpc_kayobe_config_previous_version }}
49+
terraform_kayobe_multinode_version: ${{ needs.generate-inputs.outputs.terraform_kayobe_multinode_version }}
4850
enable_slack_alert: true
4951
secrets: inherit
5052
if: github.repository == 'stackhpc/stackhpc-kayobe-config'

doc/source/configuration/cloudkitty.rst

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,13 @@ storage backend. Set the following in ``kolla.yml``:
2222
kolla_enable_influxdb: false
2323
2424
Set Prometheus as the backend for both the collector and fetcher, and
25-
Elasticsearch as the storage backend. Note that our fork of CloudKitty is
26-
patched so that the CloudKitty Elasticsearch V2 storage backend will also work
27-
with an OpenSearch cluster. Proper support for the V2 OpenSearch storage
28-
backend is still pending in Kolla-Ansible `here
29-
<https://review.opendev.org/c/openstack/kolla-ansible/+/898555>`__. Set the
30-
following in ``kolla/globals.yml``:
25+
OpenSearch as the storage backend. Set the following in ``kolla/globals.yml``:
3126

3227
.. code-block:: yaml
3328
3429
cloudkitty_collector_backend: prometheus
3530
cloudkitty_fetcher_backend: prometheus
36-
cloudkitty_storage_backend: elasticsearch
31+
cloudkitty_storage_backend: opensearch
3732
3833
The default collection period is one hour, which is likely too long for most
3934
systems as CloudKitty charges by the **entire** collection period if any usage

doc/source/configuration/openbao.rst

Lines changed: 44 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,13 @@ Setup OpenBao on the seed node
7878

7979
1. Run secret-store-deploy-seed.yml custom playbook
8080

81-
.. code-block::bash
81+
.. code-block:: bash
8282
8383
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/secret-store/secret-store-deploy-seed.yml
8484
8585
2. Encrypt generated certs/keys with ansible-vault (use proper location of vault password file)
8686

87-
.. code-block::bash
87+
.. code-block:: bash
8888
8989
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/openbao/OS-TLS-INT.pem
9090
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/openbao/seed-openbao-keys.json
@@ -97,7 +97,7 @@ Setup OpenBao on the seed node
9797
9898
Or if environments are being used
9999

100-
.. code-block::bash
100+
.. code-block:: bash
101101
102102
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/openbao/OS-TLS-INT.pem
103103
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/openbao/seed-openbao-keys.json
@@ -111,24 +111,38 @@ Setup OpenBao on the seed node
111111
Setup OpenBao HA on the overcloud hosts
112112
---------------------------------------
113113

114-
1. Run secret-store-deploy-overcloud.yml custom playbook
114+
1. If using a walled garden, ensure ``no_proxy`` is configured to include the first controller's internal network IP. Append it to the list if necessary.
115115

116-
.. code-block::bash
116+
.. code-block:: yaml
117+
:caption: ``inventory/group_vars/overcloud/proxy.yml``
118+
119+
---
120+
no_proxy:
121+
- "{{ lookup('vars', internal_net_name ~ '_ips')[groups.controllers.0] }}"
122+
123+
.. code-block:: bash
124+
125+
kayobe overcloud host configure -t proxy
126+
127+
2. Run secret-store-deploy-overcloud.yml custom playbook
128+
129+
.. code-block:: bash
117130
118131
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/secret-store/secret-store-deploy-overcloud.yml
119132
120-
2. Encrypt overcloud openbao keys (use proper location of vault password file)
133+
3. Encrypt overcloud openbao keys (use proper location of vault password file)
121134

122-
.. code-block::bash
135+
.. code-block:: bash
123136
124137
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/openbao/overcloud-openbao-keys.json
125138
126139
# For Hashicorp Vault
127140
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/vault/overcloud-vault-keys.json
128141
142+
129143
Or if environments are being used
130144

131-
.. code-block::bash
145+
.. code-block:: bash
132146
133147
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/openbao/overcloud-openbao-keys.json
134148
@@ -145,7 +159,7 @@ cannot be unsealed with an expired certificate.
145159

146160
1. Delete the old certificate:
147161

148-
.. code-block::bash
162+
.. code-block:: bash
149163
150164
rm $KAYOBE_CONFIG_PATH/openbao/overcloud.crt
151165
@@ -154,7 +168,7 @@ cannot be unsealed with an expired certificate.
154168
155169
Or if environments are being used
156170

157-
.. code-block::bash
171+
.. code-block:: bash
158172
159173
rm $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/openbao/overcloud.crt
160174
@@ -163,13 +177,13 @@ cannot be unsealed with an expired certificate.
163177
164178
2. Generate a new certificate (and key):
165179

166-
.. code-block::bash
180+
.. code-block:: bash
167181
168182
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/secret-store/secret-store-deploy-seed.yml
169183
170184
3. Encrypt generated key with ansible-vault (use proper location of vault password file)
171185

172-
.. code-block::bash
186+
.. code-block:: bash
173187
174188
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/openbao/overcloud.key
175189
@@ -178,7 +192,7 @@ cannot be unsealed with an expired certificate.
178192
179193
Or if environments are being used
180194

181-
.. code-block::bash
195+
.. code-block:: bash
182196
183197
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/openbao/overcloud.key
184198
@@ -188,13 +202,13 @@ cannot be unsealed with an expired certificate.
188202
4. Copy the new certificate to the overcloud hosts. Note, if the old
189203
certificate has expired this will fail on the unseal step.
190204

191-
.. code-block::bash
205+
.. code-block:: bash
192206
193207
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/secret-store/secret-store-deploy-overcloud.yml
194208
195209
5. Restart the containers to use the new certificate:
196210

197-
.. code-block::bash
211+
.. code-block:: bash
198212
199213
kayobe overcloud host command run --command "docker restart openbao" -l controllers
200214
@@ -203,7 +217,7 @@ cannot be unsealed with an expired certificate.
203217
204218
6. If sealed, unseal OpenBao:
205219

206-
.. code-block::bash
220+
.. code-block:: bash
207221
208222
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/secret-store/secret-store-unseal-overcloud.yml
209223
@@ -230,19 +244,19 @@ For test and development purposes it is possible to use OpenBao as a CA for the
230244

231245
1. Run the playbook
232246

233-
.. code-block::bash
247+
.. code-block:: bash
234248
235249
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/secret-store/secret-store-generate-test-external-tls.yml
236250
237251
2. Use ansible-vault to encrypt the PEM bundle in $KAYOBE_CONFIG_PATH/kolla/certificates/haproxy.pem. Commit the PEM bundle to the kayobe configuration.
238252

239-
.. code-block::bash
253+
.. code-block:: bash
240254
241255
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/kolla/certificates/haproxy.pem
242256
243257
Or if environments are being used
244258

245-
.. code-block::bash
259+
.. code-block:: bash
246260
247261
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/kolla/certificates/haproxy.pem
248262
@@ -251,19 +265,19 @@ Create the internal TLS certificates
251265

252266
1. Run the playbook
253267

254-
.. code-block::bash
268+
.. code-block:: bash
255269
256270
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/secret-store/secret-store-generate-internal-tls.yml
257271
258272
2. Use ansible-vault to encrypt the PEM bundle in $KAYOBE_CONFIG_PATH/kolla/certificates/haproxy-internal.pem. Commit the PEM bundle and root CA to the kayobe configuration.
259273

260-
.. code-block::bash
274+
.. code-block:: bash
261275
262276
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/kolla/certificates/haproxy-internal.pem
263277
264278
Or if environments are being used
265279

266-
.. code-block::bash
280+
.. code-block:: bash
267281
268282
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/kolla/certificates/haproxy-internal.pem
269283
@@ -272,19 +286,19 @@ Create the backend TLS and RabbitMQ TLS certificates
272286

273287
1. Run the playbook
274288

275-
.. code-block::bash
289+
.. code-block:: bash
276290
277291
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/secret-store/secret-store-generate-backend-tls.yml
278292
279293
2. Use ansible-vault to encrypt the keys in $KAYOBE_CONFIG_PATH/kolla/certificates/<controller>-key.pem. Commit the certificates and keys to the kayobe configuration.
280294

281-
.. code-block::bash
295+
.. code-block:: bash
282296
283297
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/kolla/certificates/<controller>-key.pem
284298
285299
Or if environments are being used
286300

287-
.. code-block::bash
301+
.. code-block:: bash
288302
289303
ansible-vault encrypt --vault-password-file ~/vault.pass $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/kolla/certificates/<controller>-key.pem
290304
@@ -425,12 +439,12 @@ Enable the required TLS variables in kayobe and kolla
425439
It is important that you are only using admin endpoints for keystone. If
426440
any admin endpoints exist for other services, they must be deleted e.g.
427441

428-
.. code-block::bash
442+
.. code-block:: bash
429443
430444
openstack endpoint list --interface admin -f value | \
431445
awk '!/keystone/ {print $1}' | xargs openstack endpoint delete
432446
433-
.. code-block::bash
447+
.. code-block:: bash
434448
435449
kayobe overcloud service deploy
436450
@@ -442,7 +456,7 @@ Enable the required TLS variables in kayobe and kolla
442456
443457
Restart the nova-compute container on all hypervisors:
444458

445-
.. code-block::bash
459+
.. code-block:: bash
446460
447461
kayobe overcloud host command run --command "systemctl restart kolla-nova_compute-container.service" --become --show-output -l compute
448462
@@ -475,7 +489,7 @@ Create required configuration in OpenBao
475489

476490
1. Run secret-store-deploy-barbican.yml custom playbook
477491

478-
.. code-block::bash
492+
.. code-block:: bash
479493
480494
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/secret-store/secret-store-deploy-barbican.yml
481495
@@ -513,6 +527,6 @@ Configure Barbican
513527
Deploy Barbican
514528
---------------
515529

516-
.. code-block::bash
530+
.. code-block:: bash
517531
518532
kayobe overcloud service deploy -kt barbican

doc/source/configuration/walled-garden.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ proxy:
7979
- "{{ ('http://' ~ docker_registry) | urlsplit('hostname') if docker_registry else '' }}"
8080
- "{{ lookup('vars', admin_oc_net_name ~ '_ips')[groups.seed.0] }}"
8181
- "{{ lookup('vars', admin_oc_net_name ~ '_ips')[inventory_hostname] }}"
82+
- "{{ lookup('vars', internal_net_name ~ '_ips')[groups.controllers.0] }}"
8283
- "{{ kolla_external_fqdn }}"
8384
- "{{ kolla_internal_fqdn }}"
8485

doc/source/operations/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ This guide is for operators of the StackHPC Kayobe configuration project.
2222
tempest
2323
upgrading-openstack
2424
upgrading-ceph
25+
ubuntu-noble

0 commit comments

Comments
 (0)