Skip to content

Commit f850a2c

Browse files
committed
Merge stackhpc/xena into stackhpc/yoga
2 parents e18026b + cd52288 commit f850a2c

File tree

24 files changed

+407
-84
lines changed

24 files changed

+407
-84
lines changed

.github/workflows/stackhpc-container-image-build.yml

Lines changed: 88 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,83 @@ on:
1818
type: boolean
1919
required: false
2020
default: false
21-
distro:
22-
description: Container image OS distribution
23-
type: choice
21+
centos-stream-8:
22+
description: Build CentOS Stream 8 images?
23+
type: boolean
24+
required: false
25+
default: true
26+
ubuntu-focal:
27+
description: Build Ubuntu Focal 20.04 images?
28+
type: boolean
2429
required: false
25-
default: centos
26-
options:
27-
- centos
28-
- ubuntu
29-
- rocky
30+
default: true
31+
push:
32+
description: Whether to push images
33+
type: boolean
34+
required: false
35+
default: true
3036

3137
env:
3238
ANSIBLE_FORCE_COLOR: True
3339
jobs:
40+
generate-tag:
41+
name: Generate container image tag
42+
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
43+
runs-on: [self-hosted, stackhpc-kayobe-config-kolla-builder]
44+
permissions: {}
45+
outputs:
46+
kolla_tag: ${{ steps.kolla_tag.outputs.kolla_tag }}
47+
matrix: ${{ steps.set-matrix.outputs.matrix }}
48+
openstack_release: ${{ steps.openstack_release.outputs.openstack_release }}
49+
steps:
50+
- name: Checkout
51+
uses: actions/checkout@v3
52+
53+
- name: Determine OpenStack release
54+
id: openstack_release
55+
run: |
56+
BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' .gitreview)
57+
echo "openstack_release=${BRANCH}" | sed "s|stable/||" >> $GITHUB_OUTPUT
58+
59+
# Generate a tag to apply to all built container images.
60+
# Without this, each kayobe * container image build command would use a different tag.
61+
- name: Generate container image tag
62+
id: kolla_tag
63+
run: |
64+
echo "kolla_tag=$(date +${{ steps.openstack_release.outputs.openstack_release }}-%Y%m%dT%H%M%S)" >> $GITHUB_OUTPUT
65+
66+
# Dynamically define job matrix.
67+
# We need a separate matrix entry for each distribution, when the relevant input is true.
68+
# https://stackoverflow.com/questions/65384420/how-do-i-make-a-github-action-matrix-element-conditional
69+
- name: Generate build matrix
70+
id: set-matrix
71+
run: |
72+
comma=""
73+
echo -n "matrix={\"distro\": [" >> $GITHUB_OUTPUT
74+
if [[ ${{ inputs.centos-stream-8 }} == 'true' ]]; then
75+
echo -n "$comma\"centos\"" >> $GITHUB_OUTPUT
76+
comma=", "
77+
fi
78+
if [[ ${{ inputs.ubuntu-focal }} == 'true' ]]; then
79+
echo -n "$comma\"ubuntu\"" >> $GITHUB_OUTPUT
80+
comma=", "
81+
fi
82+
echo "]}" >> $GITHUB_OUTPUT
83+
84+
- name: Display container image tag
85+
run: |
86+
echo "${{ steps.kolla_tag.outputs.kolla_tag }}"
87+
3488
container-image-build:
3589
name: Build Kolla container images
3690
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
3791
runs-on: [self-hosted, stackhpc-kayobe-config-kolla-builder]
3892
timeout-minutes: 720
93+
permissions: {}
94+
strategy:
95+
matrix: ${{ fromJson(needs.generate-tag.outputs.matrix) }}
96+
needs:
97+
- generate-tag
3998
steps:
4099
- uses: actions/checkout@v3
41100
with:
@@ -45,7 +104,7 @@ jobs:
45104
uses: actions/checkout@v3
46105
with:
47106
repository: stackhpc/kayobe
48-
ref: refs/heads/stackhpc/yoga
107+
ref: refs/heads/stackhpc/${{ needs.generate-tag.outputs.openstack_release }}
49108
path: src/kayobe
50109

51110
# FIXME: Failed in kolla-ansible : Ensure the latest version of pip is installed
@@ -101,57 +160,43 @@ jobs:
101160

102161
- name: Build and push kolla overcloud images
103162
run: |
163+
args="${{ github.event.inputs.regexes }}"
164+
args="$args -e kolla_base_distro=${{ matrix.distro }}"
165+
args="$args -e kolla_tag=${{ needs.generate-tag.outputs.kolla_tag }}"
166+
if ${{ inputs.push }} == 'true'; then
167+
args="$args --push"
168+
fi
104169
source venvs/kayobe/bin/activate &&
105170
source src/kayobe-config/kayobe-env --environment ci-builder &&
106-
kayobe overcloud container image build ${{ github.event.inputs.regexes }} --push -e kolla_base_distro=${{ inputs.distro }}
171+
kayobe overcloud container image build $args
107172
env:
108173
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
109174
if: github.event.inputs.overcloud == 'true'
110175

111-
- name: Display the overcloud container image tag
112-
run: |
113-
echo "$(cat ~/kolla_tag)"
114-
if: github.event.inputs.overcloud == 'true'
115-
116-
- name: Get built overcloud container images
117-
run: |
118-
sudo docker image ls --filter "reference=ark.stackhpc.com/stackhpc-dev/*:$(cat ~/kolla_tag)" > overcloud-container-images
119-
if: github.event.inputs.overcloud == 'true'
120-
121-
- name: Upload overcloud-container-images artifact
122-
uses: actions/upload-artifact@v3
123-
with:
124-
name: Overcloud container images
125-
path: overcloud-container-images
126-
retention-days: 7
127-
if: github.event.inputs.overcloud == 'true'
128-
129176
- name: Build and push kolla seed images
130177
run: |
178+
args="kolla_base_distro=${{ matrix.distro }}"
179+
args="$args -e kolla_tag=${{ needs.generate-tag.outputs.kolla_tag }}"
180+
if ${{ inputs.push }} == 'true'; then
181+
args="$args --push"
182+
fi
131183
source venvs/kayobe/bin/activate &&
132184
source src/kayobe-config/kayobe-env --environment ci-builder &&
133-
kayobe seed container image build --push -e kolla_base_distro=${{ inputs.distro }}
185+
kayobe seed container image build $args
134186
env:
135187
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
136188
if: github.event.inputs.seed == 'true'
137189

138-
- name: Display the seed container image tag
139-
run: |
140-
echo "$(cat ~/kolla_tag)"
141-
if: github.event.inputs.seed == 'true'
142-
143-
- name: Get built seed container images
190+
- name: Get built container images
144191
run: |
145-
sudo docker image ls --filter "reference=ark.stackhpc.com/stackhpc-dev/*:$(cat ~/kolla_tag)" > seed-container-images
146-
if: github.event.inputs.seed == 'true'
192+
sudo docker image ls --filter "reference=ark.stackhpc.com/stackhpc-dev/${{ matrix.distro }}-*:${{ needs.generate-tag.outputs.kolla_tag }}" > ${{ matrix.distro }}-container-images
147193
148-
- name: Upload seed-container-images artifact
194+
- name: Upload container images artifact
149195
uses: actions/upload-artifact@v3
150196
with:
151-
name: Seed container images
152-
path: seed-container-images
197+
name: ${{ matrix.distro }} container images
198+
path: ${{ matrix.distro }}-container-images
153199
retention-days: 7
154-
if: github.event.inputs.seed == 'true'
155200

156201
- name: Prune local Kolla container images over 1 week old
157202
run: |
@@ -161,8 +206,9 @@ jobs:
161206
name: Trigger container image repository sync
162207
needs:
163208
- container-image-build
164-
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
209+
if: github.repository == 'stackhpc/stackhpc-kayobe-config' && inputs.push
165210
runs-on: ubuntu-latest
211+
permissions: {}
166212
steps:
167213
# NOTE(mgoddard): Trigger another CI workflow in the
168214
# stackhpc-release-train repository.

.github/workflows/stackhpc-promote.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ jobs:
1010
name: Trigger package repository promotion
1111
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
1212
runs-on: ubuntu-latest
13+
permissions: {}
1314
steps:
1415
# NOTE(mgoddard): Trigger another CI workflow in the
1516
# stackhpc-release-train repository.

doc/source/configuration/cephadm.rst

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -242,19 +242,70 @@ for Cinder, Cinder backup, Glance, and Nova in Kolla Ansible.
242242
Ceph Commands
243243
~~~~~~~~~~~~~
244244

245-
It is possible to run an arbitrary list of commands against the cluster after deployment
246-
by setting the ``cephadm_commands`` variable. ``cephadm_commands`` should be a list of commands
247-
to pass to ``cephadm shell -- ceph``. For example:
245+
It is possible to run an arbitrary list of commands against the cluster after
246+
deployment by setting the ``cephadm_commands_pre`` and ``cephadm_commands_post``
247+
variables. Each should be a list of commands to pass to ``cephadm shell --
248+
ceph``. For example:
248249

249250
.. code:: yaml
250251
251252
# A list of commands to pass to cephadm shell -- ceph. See stackhpc.cephadm.commands
252253
# for format.
253-
cephadm_commands:
254+
cephadm_commands_pre:
254255
# Configure Prometheus exporter to listen on a specific interface. The default
255256
# is to listen on all interfaces.
256257
- "config set mgr mgr/prometheus/server_addr 10.0.0.1"
257258
259+
Both variables have the same format, however commands in the
260+
``cephadm_commands_pre`` list are executed before the rest of the Ceph
261+
post-deployment configuration is applied. Commands in the
262+
``cephadm_commands_post`` list are executed after the rest of the Ceph
263+
post-deployment configuration is applied.
264+
265+
Manila & CephFS
266+
~~~~~~~~~~~~~~~
267+
268+
Using Manila with the CephFS backend requires the configuration of additional
269+
resources.
270+
271+
A Manila key should be added to cephadm_keys:
272+
273+
.. code:: yaml
274+
275+
# Append the following to cephadm_keys:
276+
- name: client.manila
277+
caps:
278+
mon: "allow r"
279+
mgr: "allow rw"
280+
state: present
281+
282+
A CephFS filesystem requires two pools, one for metadata and one for data:
283+
284+
.. code:: yaml
285+
286+
# Append the following to cephadm_pools:
287+
- name: cephfs_data
288+
application: cephfs
289+
state: present
290+
- name: cephfs_metadata
291+
application: cephfs
292+
state: present
293+
294+
Finally, the CephFS filesystem itself should be created:
295+
296+
.. code:: yaml
297+
298+
# Append the following to cephadm_commands_post:
299+
- "fs new manila-cephfs cephfs_metadata cephfs_data"
300+
- "orch apply mds manila-cephfs"
301+
302+
In this example, the filesystem is named ``manila-cephfs``. This name
303+
should be used in the Kolla Manila configuration e.g.:
304+
305+
.. code:: yaml
306+
307+
manila_cephfs_filesystem_name: manila-cephfs
308+
258309
Deployment
259310
==========
260311

doc/source/configuration/lvm.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ another LV needs to be grown at a later date.
7676
Growroot playbook
7777
=================
7878

79-
A ``growroot.yml`` custom playbook is provied that can be used to grow the
79+
A ``growroot.yml`` custom playbook is provided that can be used to grow the
8080
partition and LVM Physical Volume (PV) of the root Volume Group (VG). This
8181
allows for expansion of Logical Volumes (LVs) in that VG.
8282

doc/source/contributor/environments/ci-builder.rst

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,7 @@ At this point you are ready to build and push some container images.
105105
kayobe seed container image build --push
106106
kayobe overcloud container image build --push
107107
108-
The container images are tagged as |current_release|-<datetime>. This Kayobe
109-
configuration includes a hook that writes the tag to ``~/kolla_tag``, since
110-
it is not always simple to determine which tag was last applied to built
111-
images.
108+
The container images are tagged as |current_release|-<datetime>.
112109

113110
To use the new images, edit
114111
``~/src/kayobe-config/etc/kayobe/kolla.yml`` to set the above

0 commit comments

Comments
 (0)