Skip to content

Commit f5d03f6

Browse files
ricolinCopilot
andcommitted
fix: restore local molecule AIO execution via tox
The Zuul migration in 5afd0ea rewrote molecule/aio/molecule.yml to use the Molecule v25+ schema (top-level 'ansible:' key) and moved critical variables into .zuul.yaml job definitions. This broke local execution via 'tox -e molecule-aio-ovn' because tox.ini pins molecule==24.9.0 which does not recognize the v25 schema. This commit restores local AIO builds by: - Reverting molecule/aio/molecule.yml to the v24-compatible schema (provisioner/driver/platforms/verifier) - Adding molecule/aio/group_vars/all/aio.yml with variables previously only defined in .zuul.yaml (ceph_fsid, ceph_conf_overrides, kube_vip settings, single-replica overrides, etc.) - Symlink molecule/aio/group_vars/all/molecule.yml to shared defaults - Symlink molecule/aio/host_vars to molecule/default/host_vars Zuul jobs are unaffected because ATMOSPHERE_ANSIBLE_VARS_PATH redirects inventory links to Zuul's own vars directory, bypassing the local group_vars entirely. Co-authored-by: Copilot <[email protected]>
1 parent 6c38217 commit f5d03f6

5 files changed

Lines changed: 245 additions & 11 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ molecule/*/group_vars/*
55
!molecule/*/group_vars/all
66
molecule/*/group_vars/all/*
77
!molecule/*/group_vars/all/molecule.yml
8+
!molecule/aio/group_vars/all/aio.yml
89
molecule/*/host_vars/*
910
!molecule/*/host_vars/.gitkeep
1011

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
# Variables from .zuul.yaml (atmosphere-molecule) needed for local execution
2+
ceph_fsid: 4837cbf8-4f90-4300-b3f6-726c9b9f89b4
3+
ceph_conf_overrides:
4+
- section: global
5+
option: mon allow pool size one
6+
value: true
7+
- section: global
8+
option: osd crush chooseleaf type
9+
value: 0
10+
- section: mon
11+
option: auth allow insecure global id reclaim
12+
value: false
13+
ceph_osd_devices:
14+
- "/dev/ceph-{{ inventory_hostname_short }}-osd0/data"
15+
- "/dev/ceph-{{ inventory_hostname_short }}-osd1/data"
16+
- "/dev/ceph-{{ inventory_hostname_short }}-osd2/data"
17+
kube_vip_interface: "{{ ansible_facts['default_ipv4'].interface }}"
18+
kube_vip_address: 172.17.0.100
19+
kubernetes_hostname: "{{ ansible_facts['default_ipv4'].address }}"
20+
cilium_helm_values:
21+
operator:
22+
replicas: 1
23+
ceph_csi_rbd_helm_values:
24+
provisioner:
25+
replicaCount: 1
26+
27+
# Variables from .zuul.yaml (atmosphere-molecule-aio) needed for local execution
28+
ceph_version: 18.2.7
29+
kubernetes_keepalived_interface: br-mgmt
30+
csi_driver: local-path-provisioner
31+
valkey_helm_values:
32+
replica:
33+
replicaCount: 1
34+
ingress_nginx_helm_values:
35+
controller:
36+
config:
37+
worker-processes: 2
38+
percona_xtradb_cluster_spec:
39+
allowUnsafeConfigurations: true
40+
pxc:
41+
size: 1
42+
haproxy:
43+
size: 1
44+
keystone_helm_values:
45+
pod:
46+
replicas:
47+
api: 1
48+
barbican_helm_values:
49+
pod:
50+
replicas:
51+
api: 1
52+
rook_ceph_cluster_radosgw_spec:
53+
metadataPool:
54+
failureDomain: osd
55+
dataPool:
56+
failureDomain: osd
57+
gateway:
58+
instances: 1
59+
glance_helm_values:
60+
conf:
61+
glance:
62+
DEFAULT:
63+
workers: 2
64+
glance_store:
65+
rbd_store_replication: 1
66+
pod:
67+
replicas:
68+
api: 1
69+
glance_images:
70+
- name: cirros
71+
url: http://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img
72+
min_disk: 1
73+
disk_format: raw
74+
container_format: bare
75+
is_public: true
76+
staffeln_helm_values:
77+
pod:
78+
replicas:
79+
api: 1
80+
conductor: 1
81+
cinder_helm_values:
82+
conf:
83+
ceph:
84+
pools:
85+
backup:
86+
replication: 1
87+
cinder.volumes:
88+
replication: 1
89+
cinder:
90+
DEFAULT:
91+
osapi_volume_workers: 2
92+
pod:
93+
replicas:
94+
api: 1
95+
scheduler: 1
96+
placement_helm_values:
97+
conf:
98+
placement_api_uwsgi:
99+
uwsgi:
100+
processes: 2
101+
pod:
102+
replicas:
103+
api: 1
104+
ovn_helm_values:
105+
conf:
106+
auto_bridge_add:
107+
br-ex: null
108+
pod:
109+
replicas:
110+
ovn_ovsdb_nb: 1
111+
ovn_ovsdb_sb: 1
112+
ovn_northd: 1
113+
coredns_helm_values:
114+
replicaCount: 1
115+
nova_helm_values:
116+
conf:
117+
nova:
118+
DEFAULT:
119+
osapi_compute_workers: 2
120+
metadata_workers: 2
121+
conductor:
122+
workers: 2
123+
scheduler:
124+
workers: 2
125+
pod:
126+
replicas:
127+
api_metadata: 1
128+
osapi: 1
129+
conductor: 1
130+
scheduler: 1
131+
novncproxy: 1
132+
spiceproxy: 1
133+
neutron_helm_values:
134+
conf:
135+
neutron:
136+
DEFAULT:
137+
api_workers: 2
138+
rpc_workers: 2
139+
metadata_workers: 2
140+
pod:
141+
replicas:
142+
server: 1
143+
rpc_server: 1
144+
heat_helm_values:
145+
conf:
146+
heat:
147+
DEFAULT:
148+
num_engine_workers: 2
149+
heat_api:
150+
workers: 2
151+
heat_api_cfn:
152+
workers: 2
153+
heat_api_cloudwatch:
154+
workers: 2
155+
pod:
156+
replicas:
157+
api: 1
158+
cfn: 1
159+
cloudwatch: 1
160+
engine: 1
161+
octavia_helm_values:
162+
conf:
163+
octavia:
164+
controller_worker:
165+
workers: 2
166+
octavia_api_uwsgi:
167+
uwsgi:
168+
processes: 2
169+
pod:
170+
replicas:
171+
api: 1
172+
worker: 1
173+
housekeeping: 1
174+
magnum_helm_values:
175+
conf:
176+
magnum:
177+
api:
178+
workers: 2
179+
conductor:
180+
workers: 2
181+
pod:
182+
replicas:
183+
api: 1
184+
conductor: 1
185+
magnum_image_disk_format: qcow2
186+
magnum_images: "[ {{ _magnum_images[-1] }} ]"
187+
manila_helm_values:
188+
conf:
189+
manila:
190+
DEFAULT:
191+
osapi_share_workers: 2
192+
pod:
193+
replicas:
194+
api: 1
195+
scheduler: 1
196+
horizon_helm_values:
197+
pod:
198+
replicas:
199+
server: 1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../default/group_vars/all/molecule.yml

molecule/aio/host_vars

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../default/host_vars

molecule/aio/molecule.yml

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,46 @@
1-
# Copyright (c) 2025 VEXXHOST, Inc.
2-
# SPDX-License-Identifier: Apache-2.0
1+
# Copyright (c) 2024 VEXXHOST, Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License"); you may
4+
# not use this file except in compliance with the License. You may obtain
5+
# a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12+
# License for the specific language governing permissions and limitations
13+
# under the License.
314

4-
ansible:
5-
cfg:
15+
dependency:
16+
name: galaxy
17+
driver:
18+
name: default
19+
options:
20+
managed: False
21+
ansible_connection_options:
22+
ansible_become: "true"
23+
ansible_connection: local
24+
platforms:
25+
- name: instance
26+
groups:
27+
- controllers
28+
- cephs
29+
- computes
30+
provisioner:
31+
name: ansible
32+
env:
33+
DOCKER_TIMEOUT: 600
34+
config_options:
635
defaults:
736
callbacks_enabled: ansible.posix.profile_tasks
8-
connection:
9-
pipelining: true
10-
executor:
11-
backend: ansible-playbook
12-
args:
13-
ansible_playbook:
14-
- --inventory=${MOLECULE_PROJECT_DIRECTORY}/inventory.yaml
37+
tags:
38+
run: ${ATMOSPHERE_ANSIBLE_TAGS-all}
39+
options:
40+
skip-tags: "${ATMOSPHERE_ANSIBLE_SKIP_TAGS-molecule-notest,notest}"
41+
inventory:
42+
links:
43+
host_vars: "${ATMOSPHERE_ANSIBLE_VARS_PATH-$MOLECULE_SCENARIO_DIRECTORY}/host_vars"
44+
group_vars: "${ATMOSPHERE_ANSIBLE_VARS_PATH-$MOLECULE_SCENARIO_DIRECTORY}/group_vars"
45+
verifier:
46+
name: ansible

0 commit comments

Comments
 (0)