Files
kayobe/zuul.d/jobs.yaml
Mark Goddard c9f8d80ba6 Stop using kolla-ansible bootstrap-servers
The 'kayobe * host configure' commands no longer use the 'kolla-ansible
bootstrap-servers' command, and associated 'baremetal' role in Kolla
Ansible. The functionality provided by the 'baremetal' role has been
extracted into the openstack.kolla Ansible collection, and split
into separate roles. This allows Kayobe to use it directly, and only the
necessary parts.

This change improves failure handling in these Kayobe commands, and aims
to reduce confusion over which '--limit' and '--tags' arguments to
provide.  This ensures that if a host fails during a host configuration
command, other hosts are able to continue to completion. Previously, if
any host failed during the Kayobe playbooks, the 'kolla-ansible
bootstrap-servers' command would not run. This is useful at scale, where
host failures occur more frequently.

This change has implications for configuration of Kayobe, since some
variables that were previously in Kolla Ansible are now in Kayobe.

Several parts of the baremetal role have been split out and used here:

* apparmor-libvirt: disable AppArmor rules for libvirt on Ubuntu.
* docker: Docker installation & configuration. The docker role in
  openstack.kolla combines functionality from kolla-ansible and kayobe.
* etc-hosts: it proved difficult to generalise this, so we have some
  almost duplicated the code from kolla-ansible here. Requires delegated
  fact gathering for the case when --limit is used.
* firewall: support to disable UFW, for feature parity.
* kolla-packages: miscellaneous package installs & removals.

The addition of the stack user to the docker group has been moved to the
user bootstrapping playbook, and the docker SDK installation has been
moved to the virtualenv setup playbook.

Depends-On: https://review.opendev.org/c/openstack/ansible-collection-kolla/+/829587

Story: 2009854
Task: 44505

Change-Id: I61a61ca59652b13687c2247d5881012b51f666a7
2023-03-30 13:52:54 +00:00

337 lines
9.2 KiB
YAML

---
- job:
name: kayobe-tox-ansible-syntax
description: |
Tox job that checks Ansible playbook syntax.
parent: openstack-tox
pre-run: playbooks/kayobe-tox-ansible-syntax/pre.yml
required-projects:
- name: openstack/ansible-collection-kolla
vars:
tox_envlist: ansible-syntax
ansible_collection_kolla_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/ansible-collection-kolla'].src_dir }}"
kayobe_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/kayobe'].src_dir }}"
irrelevant-files:
- ^.*\.rst$
- ^doc/.*
- ^kayobe/tests/
- ^LICENSE$
- ^molecule-requirements.txt
- ^releasenotes/.*
- ^setup.cfg$
- ^zuul.d/.*
- job:
name: kayobe-tox-ansible
description: |
Tox job that runs native Ansible role tests.
parent: openstack-tox-with-sudo
vars:
tox_envlist: ansible
required-projects:
- name: openstack/requirements
irrelevant-files:
- ^.*\.rst$
- ^doc/.*
- ^kayobe/tests/
- ^LICENSE$
- ^molecule-requirements.txt
- ^releasenotes/.*
- ^setup.cfg$
- ^zuul.d/.*
- job:
name: kayobe-tox-molecule
description: |
Tox job that runs molecule-based Ansible role tests.
parent: openstack-tox-with-sudo
pre-run: playbooks/kayobe-tox-molecule/pre.yml
timeout: 3600
required-projects:
- openstack/requirements
vars:
tox_envlist: molecule
irrelevant-files:
- ^.*\.rst$
- ^doc/.*
- ^kayobe/tests/
- ^LICENSE$
- ^releasenotes/.*
- ^setup.cfg$
- ^test-requirements.txt
- ^zuul.d/.*
- job:
name: kayobe-base
description: |
Base job for all deployment jobs.
pre-run: playbooks/kayobe-base/pre.yml
post-run: playbooks/kayobe-base/post.yml
attempts: 5
required-projects:
# Include kayobe to ensure other projects can use this job.
- name: openstack/ansible-collection-kolla
- name: openstack/kayobe
- name: openstack/kayobe-config-dev
- name: openstack/kolla
- name: openstack/kolla-ansible
- name: openstack/requirements
- name: openstack/tenks
irrelevant-files:
- ^\..+
- ^.*\.rst$
- ^doc/.*
- ^kayobe/tests/
- ^LICENSE$
- ^molecule-requirements.txt
- ^releasenotes/.*
- ^setup.cfg$
- ^test-requirements.txt
- ^tools/.*$
- ^tox.ini$
- ^zuul.d/.*
vars:
# Name of the release to upgrade from for upgrade jobs.
previous_release: zed
logs_dir: "/tmp/logs"
ansible_collection_kolla_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/ansible-collection-kolla'].src_dir }}"
kayobe_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/kayobe'].src_dir }}"
kayobe_config_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/kayobe-config-dev'].src_dir }}"
kolla_ansible_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/kolla-ansible'].src_dir }}"
previous_kayobe_src_dir: "{{ ansible_env.PWD ~ '/previous/kayobe' }}"
previous_kayobe_config_src_dir: "{{ ansible_env.PWD ~ '/previous/kayobe-config' }}"
previous_kolla_ansible_src_dir: "{{ ansible_env.PWD ~ '/previous/kolla-ansible' }}"
requirements_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/requirements'].src_dir }}"
tenks_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/tenks'].src_dir }}"
is_upgrade: "{{ 'upgrade' in zuul.job }}"
tls_enabled: false
ironic_boot_mode: "bios"
- job:
name: kayobe-overcloud-base
parent: kayobe-base
description: |
Base job for testing overcloud deployment.
Configures the primary VM as an overcloud controller.
pre-run: playbooks/kayobe-overcloud-base/pre.yml
run: playbooks/kayobe-overcloud-base/run.yml
timeout: 7200
- job:
name: kayobe-overcloud-centos9s
parent: kayobe-overcloud-base
nodeset: kayobe-centos9s
voting: false
- job:
name: kayobe-overcloud-rocky9
parent: kayobe-overcloud-base
nodeset: kayobe-rocky9
- job:
name: kayobe-overcloud-ubuntu-jammy
parent: kayobe-overcloud-base
nodeset: kayobe-ubuntu-jammy
- job:
name: kayobe-overcloud-tls-base
parent: kayobe-overcloud-base
vars:
tls_enabled: true
ironic_boot_mode: "uefi"
- job:
name: kayobe-overcloud-tls-centos9s
parent: kayobe-overcloud-tls-base
nodeset: kayobe-centos9s
voting: false
- job:
name: kayobe-overcloud-tls-rocky9
parent: kayobe-overcloud-tls-base
nodeset: kayobe-rocky9
- job:
name: kayobe-overcloud-upgrade-base
parent: kayobe-base
description: |
Base job for testing overcloud upgrades.
Configures the primary VM as an overcloud controller using the previous
OpenStack release, and upgrades it to the current release.
pre-run: playbooks/kayobe-overcloud-upgrade-base/pre.yml
run: playbooks/kayobe-overcloud-upgrade-base/run.yml
timeout: 9000
- job:
name: kayobe-overcloud-upgrade-rocky9
parent: kayobe-overcloud-upgrade-base
nodeset: kayobe-rocky9
- job:
name: kayobe-overcloud-upgrade-ubuntu-jammy
parent: kayobe-overcloud-upgrade-base
nodeset: kayobe-ubuntu-jammy
- job:
name: kayobe-seed-base
parent: kayobe-base
description: |
Base job for testing seed deployment.
Configures the primary VM as a seed.
pre-run: playbooks/kayobe-seed-base/pre.yml
run: playbooks/kayobe-seed-base/run.yml
timeout: 5400
vars:
build_images: false
- job:
name: kayobe-seed-centos9s
parent: kayobe-seed-base
nodeset: kayobe-centos9s
voting: false
- job:
name: kayobe-seed-rocky9
parent: kayobe-seed-base
nodeset: kayobe-rocky9
- job:
name: kayobe-seed-ubuntu-jammy
parent: kayobe-seed-base
nodeset: kayobe-ubuntu-jammy
- job:
name: kayobe-seed-images-base
parent: kayobe-seed-base
description: |
Base job for testing seed image builds.
Configures the primary VM as a seed.
voting: false
vars:
build_images: true
- job:
name: kayobe-seed-images-centos9s
parent: kayobe-seed-images-base
nodeset: kayobe-centos9s
voting: false
- job:
name: kayobe-seed-images-rocky9
parent: kayobe-seed-images-base
nodeset: kayobe-rocky9
- job:
name: kayobe-seed-images-ubuntu-jammy
parent: kayobe-seed-images-base
nodeset: kayobe-ubuntu-jammy
- job:
name: kayobe-overcloud-host-configure-base
parent: kayobe-overcloud-base
description: |
Base job for testing overcloud host configure.
Configures the primary VM as an overcloud controller.
pre-run: playbooks/kayobe-overcloud-host-configure-base/pre.yml
run: playbooks/kayobe-overcloud-host-configure-base/run.yml
timeout: 7200
- job:
name: kayobe-overcloud-host-configure-centos9s
parent: kayobe-overcloud-host-configure-base
nodeset: kayobe-centos9s
voting: false
- job:
name: kayobe-overcloud-host-configure-rocky9
parent: kayobe-overcloud-host-configure-base
nodeset: kayobe-rocky9
- job:
name: kayobe-overcloud-host-configure-ubuntu-jammy
parent: kayobe-overcloud-host-configure-base
nodeset: kayobe-ubuntu-jammy
- job:
name: kayobe-seed-upgrade-base
parent: kayobe-base
description: |
Base job for testing seed upgrades.
Configures the primary VM as a seed using the previous OpenStack release,
and upgrades it to the current release.
pre-run: playbooks/kayobe-seed-upgrade-base/pre.yml
run: playbooks/kayobe-seed-upgrade-base/run.yml
timeout: 5400
- job:
name: kayobe-seed-upgrade-rocky9
parent: kayobe-seed-upgrade-base
nodeset: kayobe-rocky9
- job:
name: kayobe-seed-upgrade-ubuntu-jammy
parent: kayobe-seed-upgrade-base
nodeset: kayobe-ubuntu-jammy
- job:
name: kayobe-seed-vm-base
parent: kayobe-base
description: |
Base job for testing seed VM provisioning.
Configures the primary VM as a libvirt hypervisor, and provisions a seed
as a VM.
pre-run: playbooks/kayobe-seed-vm-base/pre.yml
run: playbooks/kayobe-seed-vm-base/run.yml
timeout: 5400
- job:
name: kayobe-seed-vm-centos9s
parent: kayobe-seed-vm-base
nodeset: kayobe-centos9s
voting: false
- job:
name: kayobe-seed-vm-rocky9
parent: kayobe-seed-vm-base
nodeset: kayobe-rocky9
- job:
name: kayobe-seed-vm-ubuntu-jammy
parent: kayobe-seed-vm-base
nodeset: kayobe-ubuntu-jammy
- job:
name: kayobe-infra-vm-base
parent: kayobe-base
description: |
Base job for testing infra VM provisioning.
Configures the primary VM as a libvirt hypervisor, and provisions an
infra VM.
pre-run: playbooks/kayobe-infra-vm-base/pre.yml
run: playbooks/kayobe-infra-vm-base/run.yml
timeout: 5400
- job:
name: kayobe-infra-vm-centos9s
parent: kayobe-infra-vm-base
nodeset: kayobe-centos9s
voting: false
- job:
name: kayobe-infra-vm-rocky9
parent: kayobe-infra-vm-base
nodeset: kayobe-rocky9
- job:
name: kayobe-infra-vm-ubuntu-jammy
parent: kayobe-infra-vm-base
nodeset: kayobe-ubuntu-jammy