Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
6fc5867
Fix smartmon script
technowhizz Mar 21, 2023
424d1a9
Merge pull request #452 from stackhpc/bugfix/xena/ngs-batching
jovial Mar 22, 2023
076407e
Merge pull request #456 from stackhpc/bugfix/smartmon-script
markgoddard Mar 23, 2023
1a61db8
Add support for manila in multinode
Alex-Welsh Mar 28, 2023
37d5671
Add documentation for multinode manila
Alex-Welsh Mar 29, 2023
2aa4703
Fix temperature graph on hardware overview dash
technowhizz Mar 21, 2023
92a30f0
Split cephadm_commands into pre and post
Alex-Welsh Mar 30, 2023
ff6abe9
Update documentation for Manila and Ceph
Alex-Welsh Mar 30, 2023
dd41268
Merge pull request #460 from stackhpc/multinode-manila
Alex-Welsh Mar 30, 2023
37c3ace
Merge pull request #463 from stackhpc/ceph-manila-docs
markgoddard Mar 30, 2023
574a9c3
Merge pull request #455 from stackhpc/bugfix/hardware-overview-dash
technowhizz Mar 30, 2023
2651d82
CI: Add a push flag to kolla container image build workflow
markgoddard Apr 3, 2023
09d7010
CI: Generate Kolla tag in advance
markgoddard Apr 3, 2023
efa70f6
CI: Drop permissions for container image build job
markgoddard Apr 3, 2023
8c153a3
CI: Support building multiple container image distros in parallel
markgoddard Apr 3, 2023
a6157cc
CI: Drop permissions for package promote job
markgoddard Apr 3, 2023
6176037
docs: fix typo
priteau Apr 4, 2023
15134f7
Merge pull request #467 from stackhpc/typo-fix
markgoddard Apr 4, 2023
977d58b
Remove write-kolla-tag.yml custom playbook & hooks
markgoddard Apr 4, 2023
8383728
Merge pull request #470 from stackhpc/wallaby-kolla-multibuild
markgoddard Apr 12, 2023
cd52288
Merge stackhpc/wallaby into stackhpc/xena
markgoddard Apr 12, 2023
f850a2c
Merge stackhpc/xena into stackhpc/yoga
markgoddard Apr 12, 2023
d4bb26f
CI: Add Rocky Linux 9 to Kolla container build workflow
markgoddard Apr 12, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
139 changes: 97 additions & 42 deletions .github/workflows/stackhpc-container-image-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,92 @@ on:
type: boolean
required: false
default: false
distro:
description: Container image OS distribution
type: choice
centos-stream-8:
description: Build CentOS Stream 8 images?
type: boolean
required: false
default: true
rocky-linux-9:
description: Build Rocky Linux 9 images?
type: boolean
required: false
default: true
ubuntu-focal:
description: Build Ubuntu Focal 20.04 images?
type: boolean
required: false
default: true
push:
description: Whether to push images
type: boolean
required: false
default: centos
options:
- centos
- ubuntu
- rocky
default: true

env:
ANSIBLE_FORCE_COLOR: True
jobs:
generate-tag:
name: Generate container image tag
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
runs-on: [self-hosted, stackhpc-kayobe-config-kolla-builder]
permissions: {}
outputs:
kolla_tag: ${{ steps.kolla_tag.outputs.kolla_tag }}
matrix: ${{ steps.set-matrix.outputs.matrix }}
openstack_release: ${{ steps.openstack_release.outputs.openstack_release }}
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Determine OpenStack release
id: openstack_release
run: |
BRANCH=$(awk -F'=' '/defaultbranch/ {print $2}' .gitreview)
echo "openstack_release=${BRANCH}" | sed "s|stable/||" >> $GITHUB_OUTPUT

# Generate a tag to apply to all built container images.
# Without this, each kayobe * container image build command would use a different tag.
- name: Generate container image tag
id: kolla_tag
run: |
echo "kolla_tag=$(date +${{ steps.openstack_release.outputs.openstack_release }}-%Y%m%dT%H%M%S)" >> $GITHUB_OUTPUT

# Dynamically define job matrix.
# We need a separate matrix entry for each distribution, when the relevant input is true.
# https://stackoverflow.com/questions/65384420/how-do-i-make-a-github-action-matrix-element-conditional
- name: Generate build matrix
id: set-matrix
run: |
comma=""
echo -n "matrix={\"distro\": [" >> $GITHUB_OUTPUT
if [[ ${{ inputs.centos-stream-8 }} == 'true' ]]; then
echo -n "$comma\"centos\"" >> $GITHUB_OUTPUT
comma=", "
fi
if [[ ${{ inputs.rocky-linux-9 }} == 'true' ]]; then
echo -n "$comma\"rocky\"" >> $GITHUB_OUTPUT
comma=", "
fi
if [[ ${{ inputs.ubuntu-focal }} == 'true' ]]; then
echo -n "$comma\"ubuntu\"" >> $GITHUB_OUTPUT
comma=", "
fi
echo "]}" >> $GITHUB_OUTPUT

- name: Display container image tag
run: |
echo "${{ steps.kolla_tag.outputs.kolla_tag }}"

container-image-build:
name: Build Kolla container images
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
runs-on: [self-hosted, stackhpc-kayobe-config-kolla-builder]
timeout-minutes: 720
permissions: {}
strategy:
matrix: ${{ fromJson(needs.generate-tag.outputs.matrix) }}
needs:
- generate-tag
steps:
- uses: actions/checkout@v3
with:
Expand All @@ -45,7 +113,7 @@ jobs:
uses: actions/checkout@v3
with:
repository: stackhpc/kayobe
ref: refs/heads/stackhpc/yoga
ref: refs/heads/stackhpc/${{ needs.generate-tag.outputs.openstack_release }}
path: src/kayobe

# FIXME: Failed in kolla-ansible : Ensure the latest version of pip is installed
Expand Down Expand Up @@ -101,57 +169,43 @@ jobs:

- name: Build and push kolla overcloud images
run: |
args="${{ github.event.inputs.regexes }}"
args="$args -e kolla_base_distro=${{ matrix.distro }}"
args="$args -e kolla_tag=${{ needs.generate-tag.outputs.kolla_tag }}"
if ${{ inputs.push }} == 'true'; then
args="$args --push"
fi
source venvs/kayobe/bin/activate &&
source src/kayobe-config/kayobe-env --environment ci-builder &&
kayobe overcloud container image build ${{ github.event.inputs.regexes }} --push -e kolla_base_distro=${{ inputs.distro }}
kayobe overcloud container image build $args
env:
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
if: github.event.inputs.overcloud == 'true'

- name: Display the overcloud container image tag
run: |
echo "$(cat ~/kolla_tag)"
if: github.event.inputs.overcloud == 'true'

- name: Get built overcloud container images
run: |
sudo docker image ls --filter "reference=ark.stackhpc.com/stackhpc-dev/*:$(cat ~/kolla_tag)" > overcloud-container-images
if: github.event.inputs.overcloud == 'true'

- name: Upload overcloud-container-images artifact
uses: actions/upload-artifact@v3
with:
name: Overcloud container images
path: overcloud-container-images
retention-days: 7
if: github.event.inputs.overcloud == 'true'

- name: Build and push kolla seed images
run: |
args="kolla_base_distro=${{ matrix.distro }}"
args="$args -e kolla_tag=${{ needs.generate-tag.outputs.kolla_tag }}"
if ${{ inputs.push }} == 'true'; then
args="$args --push"
fi
source venvs/kayobe/bin/activate &&
source src/kayobe-config/kayobe-env --environment ci-builder &&
kayobe seed container image build --push -e kolla_base_distro=${{ inputs.distro }}
kayobe seed container image build $args
env:
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
if: github.event.inputs.seed == 'true'

- name: Display the seed container image tag
- name: Get built container images
run: |
echo "$(cat ~/kolla_tag)"
if: github.event.inputs.seed == 'true'
sudo docker image ls --filter "reference=ark.stackhpc.com/stackhpc-dev/${{ matrix.distro }}-*:${{ needs.generate-tag.outputs.kolla_tag }}" > ${{ matrix.distro }}-container-images

- name: Get built seed container images
run: |
sudo docker image ls --filter "reference=ark.stackhpc.com/stackhpc-dev/*:$(cat ~/kolla_tag)" > seed-container-images
if: github.event.inputs.seed == 'true'

- name: Upload seed-container-images artifact
- name: Upload container images artifact
uses: actions/upload-artifact@v3
with:
name: Seed container images
path: seed-container-images
name: ${{ matrix.distro }} container images
path: ${{ matrix.distro }}-container-images
retention-days: 7
if: github.event.inputs.seed == 'true'

- name: Prune local Kolla container images over 1 week old
run: |
Expand All @@ -161,8 +215,9 @@ jobs:
name: Trigger container image repository sync
needs:
- container-image-build
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
if: github.repository == 'stackhpc/stackhpc-kayobe-config' && inputs.push
runs-on: ubuntu-latest
permissions: {}
steps:
# NOTE(mgoddard): Trigger another CI workflow in the
# stackhpc-release-train repository.
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/stackhpc-promote.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ jobs:
name: Trigger package repository promotion
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
runs-on: ubuntu-latest
permissions: {}
steps:
# NOTE(mgoddard): Trigger another CI workflow in the
# stackhpc-release-train repository.
Expand Down
59 changes: 55 additions & 4 deletions doc/source/configuration/cephadm.rst
Original file line number Diff line number Diff line change
Expand Up @@ -242,19 +242,70 @@ for Cinder, Cinder backup, Glance, and Nova in Kolla Ansible.
Ceph Commands
~~~~~~~~~~~~~

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

.. code:: yaml

# A list of commands to pass to cephadm shell -- ceph. See stackhpc.cephadm.commands
# for format.
cephadm_commands:
cephadm_commands_pre:
# Configure Prometheus exporter to listen on a specific interface. The default
# is to listen on all interfaces.
- "config set mgr mgr/prometheus/server_addr 10.0.0.1"

Both variables have the same format, however commands in the
``cephadm_commands_pre`` list are executed before the rest of the Ceph
post-deployment configuration is applied. Commands in the
``cephadm_commands_post`` list are executed after the rest of the Ceph
post-deployment configuration is applied.

Manila & CephFS
~~~~~~~~~~~~~~~

Using Manila with the CephFS backend requires the configuration of additional
resources.

A Manila key should be added to cephadm_keys:

.. code:: yaml

# Append the following to cephadm_keys:
- name: client.manila
caps:
mon: "allow r"
mgr: "allow rw"
state: present

A CephFS filesystem requires two pools, one for metadata and one for data:

.. code:: yaml

# Append the following to cephadm_pools:
- name: cephfs_data
application: cephfs
state: present
- name: cephfs_metadata
application: cephfs
state: present

Finally, the CephFS filesystem itself should be created:

.. code:: yaml

# Append the following to cephadm_commands_post:
- "fs new manila-cephfs cephfs_metadata cephfs_data"
- "orch apply mds manila-cephfs"

In this example, the filesystem is named ``manila-cephfs``. This name
should be used in the Kolla Manila configuration e.g.:

.. code:: yaml

manila_cephfs_filesystem_name: manila-cephfs

Deployment
==========

Expand Down
2 changes: 1 addition & 1 deletion doc/source/configuration/lvm.rst
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ another LV needs to be grown at a later date.
Growroot playbook
=================

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

Expand Down
5 changes: 1 addition & 4 deletions doc/source/contributor/environments/ci-builder.rst
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,7 @@ At this point you are ready to build and push some container images.
kayobe seed container image build --push
kayobe overcloud container image build --push

The container images are tagged as |current_release|-<datetime>. This Kayobe
configuration includes a hook that writes the tag to ``~/kolla_tag``, since
it is not always simple to determine which tag was last applied to built
images.
The container images are tagged as |current_release|-<datetime>.

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