Skip to content

Generalise host image playbooks #1390

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Dec 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
16 changes: 10 additions & 6 deletions .github/workflows/overcloud-host-image-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -239,9 +239,11 @@ jobs:
source venvs/kayobe/bin/activate &&
source src/kayobe-config/kayobe-env --environment ci-builder &&
kayobe playbook run \
src/kayobe-config/etc/kayobe/ansible/pulp-host-image-upload.yml \
-e image_path=/opt/kayobe/images/overcloud-rocky-9 \
-e host_image_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
src/kayobe-config/etc/kayobe/ansible/pulp-artifact-upload.yml \
-e artifact_path=/opt/kayobe/images/overcloud-rocky-9 \
-e artifact_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
-e artifact_type="kayobe-images" \
-e file_regex="*.qcow2" \
-e os_distribution="rocky" \
-e os_release="9"
env:
Expand Down Expand Up @@ -291,9 +293,11 @@ jobs:
source venvs/kayobe/bin/activate &&
source src/kayobe-config/kayobe-env --environment ci-builder &&
kayobe playbook run \
src/kayobe-config/etc/kayobe/ansible/pulp-host-image-upload.yml \
-e image_path=/opt/kayobe/images/overcloud-ubuntu-jammy \
-e host_image_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
src/kayobe-config/etc/kayobe/ansible/pulp-artifact-upload.yml \
-e artifact_path=/opt/kayobe/images/overcloud-ubuntu-jammy \
-e artifact_tag=${{ steps.host_image_tag.outputs.host_image_tag }} \
-e artifact_type="kayobe-images" \
-e file_regex="*.qcow2" \
-e os_distribution="ubuntu" \
-e os_release="jammy"
env:
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/overcloud-host-image-promote.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,12 @@ jobs:
source venvs/kayobe/bin/activate &&
source src/kayobe-config/kayobe-env --environment ci-builder &&
kayobe playbook run \
src/kayobe-config/etc/kayobe/ansible/pulp-host-image-promote.yml \
-e image_path='/opt/kayobe/images/overcloud-rocky-linux-9' \
src/kayobe-config/etc/kayobe/ansible/pulp-artifact-promote.yml \
-e artifact_type="kayobe-images" \
-e os_distribution='rocky' \
-e os_release='9'
env:
OVERCLOUD_HOST_IMAGE_TAG: ${{ inputs.image_tag }}
ARTIFACT_TAG: ${{ inputs.image_tag }}
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
if: inputs.rocky9

Expand All @@ -90,11 +90,11 @@ jobs:
source venvs/kayobe/bin/activate &&
source src/kayobe-config/kayobe-env --environment ci-builder &&
kayobe playbook run \
src/kayobe-config/etc/kayobe/ansible/pulp-host-image-promote.yml \
-e image_path='/opt/kayobe/images/overcloud-ubuntu-jammy' \
src/kayobe-config/etc/kayobe/ansible/pulp-artifact-promote.yml \
-e artifact_type="kayobe-images" \
-e os_distribution='ubuntu' \
-e os_release='jammy'
env:
OVERCLOUD_HOST_IMAGE_TAG: ${{ inputs.image_tag }}
ARTIFACT_TAG: ${{ inputs.image_tag }}
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
if: inputs.ubuntu-jammy
Original file line number Diff line number Diff line change
@@ -1,31 +1,30 @@
---
# Tag is the version of the image to promote, stored in an env variable named OVERCLOUD_HOST_IMAGE_TAG
- name: Promote an image to production
# Tag is the version of the artifact to promote, stored in an env variable named ARTIFACT_TAG
- name: Promote an artifact to production
hosts: localhost
vars:
remote_pulp_url: "{{ stackhpc_release_pulp_url }}"
remote_pulp_username: "{{ stackhpc_image_repository_username }}"
remote_pulp_password: "{{ stackhpc_image_repository_password }}"
repository_name: "kayobe-images-{{ openstack_release }}-{{ os_distribution }}-{{ os_release }}"
base_path: "kayobe-images/{{ openstack_release }}/{{ os_distribution }}/{{ os_release }}"
promotion_tag: "{{ lookup('env', 'OVERCLOUD_HOST_IMAGE_TAG') }}"
remote_pulp_username: "{{ stackhpc_release_pulp_username }}"
remote_pulp_password: "{{ stackhpc_release_pulp_password }}"
repository_name: "{{ artifact_type }}-{{ openstack_release }}-{{ os_distribution }}-{{ os_release }}"
pulp_base_path: "{{ artifact_type }}/{{ openstack_release }}/{{ os_distribution }}/{{ os_release }}"
promotion_tag: "{{ lookup('env', 'ARTIFACT_TAG') }}"
tasks:

- name: Check whether the image exists
- name: Check whether the artifact exists
pulp.squeezer.file_distribution:
pulp_url: "{{ remote_pulp_url }}"
username: "{{ remote_pulp_username }}"
password: "{{ remote_pulp_password }}"
name: "{{ repository_name }}_{{ promotion_tag }}"
base_path: "{{ base_path }}/{{ promotion_tag }}"
base_path: "{{ pulp_base_path }}/{{ promotion_tag }}"
register: distribution_details
until: distribution_details is success
retries: 3
delay: 5

- name: Fail if the image does not exist
- name: Fail if the artifact does not exist
fail:
msg: "Image {{ promotion_tag }} does not exist"
msg: "artifact {{ promotion_tag }} does not exist"
when: distribution_details.distribution is none

- name: Ensure production content guard is set
Expand All @@ -34,7 +33,7 @@
username: "{{ remote_pulp_username }}"
password: "{{ remote_pulp_password }}"
name: "{{ repository_name }}_{{ promotion_tag }}"
base_path: "{{ base_path }}/{{ promotion_tag }}"
base_path: "{{ pulp_base_path }}/{{ promotion_tag }}"
content_guard: release
state: present
register: content_guard_result
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
---
- name: Upload and create a distribution for an image
- name: Upload and create a distribution for an artifact
hosts: seed
vars:
remote_pulp_url: "{{ stackhpc_release_pulp_url }}"
remote_pulp_username: "{{ stackhpc_image_repository_username }}"
remote_pulp_password: "{{ stackhpc_image_repository_password }}"
repository_name: "kayobe-images-{{ openstack_release }}-{{ os_distribution }}-{{ os_release }}"
pulp_base_path: "kayobe-images/{{ openstack_release }}/{{ os_distribution }}/{{ os_release }}"
remote_pulp_username: "{{ stackhpc_release_pulp_username }}"
remote_pulp_password: "{{ stackhpc_release_pulp_password }}"
repository_name: "{{ artifact_type }}-{{ openstack_release }}-{{ os_distribution }}-{{ os_release }}"
pulp_base_path: "{{ artifact_type }}/{{ openstack_release }}/{{ os_distribution }}/{{ os_release }}"
tasks:
- name: Print image tag
- name: Print artifact tag
debug:
msg: "Image tag: {{ host_image_tag }}"
msg: "artifact tag: {{ artifact_tag }}"

- name: Get filename
find:
paths: "{{ image_path }}"
patterns: '*.qcow2'
paths: "{{ artifact_path }}"
patterns: "{{ file_regex }}"
register: found_files

- name: Upload an artifact
Expand Down Expand Up @@ -107,8 +107,8 @@
pulp_url: "{{ remote_pulp_url }}"
username: "{{ remote_pulp_username }}"
password: "{{ remote_pulp_password }}"
name: "{{ repository_name }}_{{ host_image_tag }}"
base_path: "{{ pulp_base_path }}/{{ host_image_tag }}"
name: "{{ repository_name }}_{{ artifact_tag }}"
base_path: "{{ pulp_base_path }}/{{ artifact_tag }}"
publication: "{{ publication_details.publication.pulp_href }}"
content_guard: development
state: present
Expand All @@ -118,24 +118,24 @@
retries: 3
delay: 5

- name: Update new images file with versioned path
- name: Update new artifacts file with versioned path
lineinfile:
path: /tmp/updated_images.txt
path: /tmp/updated_artifacts.txt
line: "{{ remote_pulp_url }}/pulp/content/{{ pulp_base_path }}/\
{{ host_image_tag }}/{{ found_files.files[0].path | basename }}"
{{ artifact_tag }}/{{ found_files.files[0].path | basename }}"
create: true

- name: Update new images file with latest path
- name: Update new artifacts file with latest path
lineinfile:
path: /tmp/updated_images.txt
path: /tmp/updated_artifacts.txt
line: "{{ remote_pulp_url }}/pulp/content/{{ pulp_base_path }}/\
latest/{{ found_files.files[0].path | basename }}"
when: latest_distribution_details.changed

- name: Print versioned path
debug:
msg: "New versioned path: {{ remote_pulp_url }}/pulp/content/{{ pulp_base_path }}/\
{{ host_image_tag }}/{{ found_files.files[0].path | basename }}"
{{ artifact_tag }}/{{ found_files.files[0].path | basename }}"
when: latest_distribution_details.changed

- name: Print latest path
Expand All @@ -146,5 +146,5 @@

- name: Print version tag
debug:
msg: "New tag: {{ host_image_tag }}"
msg: "New tag: {{ artifact_tag }}"
when: latest_distribution_details.changed
4 changes: 2 additions & 2 deletions etc/kayobe/ansible/pulp-host-image-download.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
- name: Download image artifact
get_url:
url: "{{ stackhpc_overcloud_host_image_url_no_auth }}"
username: "{{ stackhpc_image_repository_username }}"
password: "{{ stackhpc_image_repository_password }}"
username: "{{ stackhpc_release_pulp_username }}"
password: "{{ stackhpc_release_pulp_password }}"
force_basic_auth: true
unredirected_headers:
- "Authorization"
Expand Down
4 changes: 2 additions & 2 deletions etc/kayobe/environments/ci-builder/stackhpc-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,5 +94,5 @@ stackhpc_docker_registry_password: !vault |
3664

# Username and password of the overcloud host image repository.
stackhpc_image_repository_username: "{{ stackhpc_docker_registry_username }}"
stackhpc_image_repository_password: "{{ stackhpc_docker_registry_password }}"
stackhpc_release_pulp_username: "{{ stackhpc_docker_registry_username }}"
stackhpc_release_pulp_password: "{{ stackhpc_docker_registry_password }}"