Skip to content

Commit 23b1f7a

Browse files
authored
Merge pull request #939 from stackhpc/2023.1-zed-merge
2023.1: zed merge
2 parents 422267a + e7ac0c8 commit 23b1f7a

21 files changed

+192
-43
lines changed

.github/path-filters.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,6 @@ aio:
2020
- 'kayobe-env'
2121
- 'requirements.txt'
2222
- 'terraform/aio/**'
23+
check-tags:
24+
- '.github/workflows/stackhpc-check-tags.yml'
25+
- 'etc/kayobe/kolla-image-tags.yml'

.github/workflows/stackhpc-all-in-one.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,9 @@ jobs:
107107
fi
108108
echo kayobe_image=$kayobe_image >> $GITHUB_OUTPUT
109109
110-
- name: Make sure dockerd is running and test Docker.
110+
- name: Make sure dockerd is running and test Docker
111111
run: |
112-
docker run --rm hello-world
112+
docker ps
113113
114114
- name: Output image tag
115115
id: image_tag

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ jobs:
8585
# Setting KAYOBE_USER_UID and KAYOBE_USER_GID to 1001 to match docker's defaults
8686
# so that docker can run as a privileged user within the Kayobe image.
8787
- name: Build and push Docker image
88-
uses: docker/build-push-action@v4
88+
uses: docker/build-push-action@v5
8989
with:
9090
file: ./.automation/docker/kayobe/Dockerfile
9191
context: .

.github/workflows/stackhpc-check-tags.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ on:
1010
description: Kayobe container image
1111
type: string
1212
required: true
13+
if:
14+
description: Whether to run the workflow (workaround for required status checks issue)
15+
type: boolean
16+
default: true
1317
secrets:
1418
KAYOBE_VAULT_PASSWORD:
1519
required: true
@@ -19,7 +23,7 @@ env:
1923
jobs:
2024
check-tags:
2125
name: Check container image tags
22-
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
26+
if: inputs.if
2327
runs-on: arc-skc-aio-runner
2428
permissions: {}
2529
env:

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

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ jobs:
116116

117117
- name: Make sure dockerd is running and test Docker
118118
run: |
119-
docker run --rm hello-world
119+
docker ps
120120
121121
- name: Install Kayobe
122122
run: |
@@ -127,10 +127,11 @@ jobs:
127127
pip install -U pip &&
128128
pip install ../src/kayobe
129129
130-
# Required for Docker registry login. Normally installed during host configure.
130+
# Required for Pulp auth proxy deployment and Docker registry login.
131+
# Normally installed during host configure.
131132
- name: Install Docker Python SDK
132133
run: |
133-
pip install --user docker
134+
sudo pip install docker
134135
135136
- name: Configure localhost as a seed
136137
run: |
@@ -141,11 +142,23 @@ jobs:
141142
localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3
142143
EOF
143144
145+
# See etc/kayobe/ansible/roles/pulp_auth_proxy/README.md for details.
146+
# NOTE: We override pulp_auth_proxy_conf_path to a path shared by the
147+
# runner and dind containers.
148+
- name: Deploy an authenticating package repository mirror proxy
149+
run: |
150+
source venvs/kayobe/bin/activate &&
151+
source src/kayobe-config/kayobe-env --environment ci-builder &&
152+
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/pulp-auth-proxy.yml -e pulp_auth_proxy_conf_path=/home/runner/_work/pulp_proxy
153+
env:
154+
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
155+
144156
- name: Build and push kolla overcloud images
145157
run: |
146158
args="${{ github.event.inputs.regexes }}"
147159
args="$args -e kolla_base_distro=${{ matrix.distro }}"
148160
args="$args -e kolla_tag=$KOLLA_TAG"
161+
args="$args -e stackhpc_repo_mirror_auth_proxy_enabled=true"
149162
if ${{ inputs.push }} == 'true'; then
150163
args="$args --push"
151164
fi
@@ -161,6 +174,7 @@ jobs:
161174
run: |
162175
args="-e kolla_base_distro=${{ matrix.distro }}"
163176
args="$args -e kolla_tag=$KOLLA_TAG"
177+
args="$args -e stackhpc_repo_mirror_auth_proxy_enabled=true"
164178
if ${{ inputs.push }} == 'true'; then
165179
args="$args --push"
166180
fi

.github/workflows/stackhpc-pull-request.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ jobs:
2020
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
2121
outputs:
2222
aio: ${{ steps.changes.outputs.aio }}
23+
check-tags: ${{ steps.changes.outputs.check-tags }}
2324
steps:
2425
- name: GitHub Checkout
2526
uses: actions/checkout@v4
@@ -79,12 +80,14 @@ jobs:
7980
check-tags:
8081
name: Check container image tags
8182
needs:
83+
- check-changes
8284
- build-kayobe-image
8385
uses: ./.github/workflows/stackhpc-check-tags.yml
8486
with:
8587
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
88+
if: ${{ needs.check-changes.outputs.check-tags == 'true' }}
8689
secrets: inherit
87-
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
90+
if: ${{ ! failure() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
8891

8992
all-in-one-ubuntu-jammy-ovs:
9093
name: aio (Ubuntu Jammy OVS)

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,7 @@ etc/kayobe/environments/aufn-ceph/kolla/config/nova/ceph.client.glance.keyring
5656

5757
# Tempest logs
5858
tempest-artifacts
59+
60+
# Ansible Galaxy roles & collections
61+
etc/kayobe/ansible/roles/*\.*/
62+
etc/kayobe/ansible/collections/

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,34 @@ Next, configure the host OS & services.
101101
102102
kayobe seed host configure
103103
104+
.. _authenticating-pulp-proxy:
105+
106+
Authenticating Pulp proxy
107+
-------------------------
108+
109+
If you are building against authenticated package repositories such as those in
110+
`Ark <https://ark.stackhpc.com>`_, you will need to provide secure access to
111+
the repositories without leaking credentials into the built images or their
112+
metadata. This is typically not the case for a client-local Pulp, which
113+
provides unauthenticated read-only access to the repositories on a trusted
114+
network.
115+
116+
Docker provides `build
117+
secrets <https://docs.docker.com/build/building/secrets/>`_, but these must be
118+
explicitly requested for each RUN statement, making them challenging to use in
119+
Kolla.
120+
121+
StackHPC Kayobe Configuration provides support for deploying an authenticating
122+
Pulp proxy that injects an HTTP basic auth header into requests that it
123+
proxies. Because this proxy bypasses Pulp's authentication, it must not be
124+
exposed to any untrusted environment.
125+
126+
To deploy the proxy:
127+
128+
.. parsed-literal::
129+
130+
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/pulp-auth-proxy.yml
131+
104132
Building images
105133
===============
106134

@@ -111,6 +139,9 @@ At this point you are ready to build and push some container images.
111139
kayobe seed container image build --push
112140
kayobe overcloud container image build --push
113141
142+
If using an :ref:`authenticating Pulp proxy <authenticating-pulp-proxy>`,
143+
append ``-e stackhpc_repo_mirror_auth_proxy_enabled=true`` to these commands.
144+
114145
The container images are tagged as |current_release|-<datetime>.
115146

116147
To use the new images, edit

etc/kayobe/ansible/check-tags.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616
set_fact:
1717
kolla_images: "{{ kolla_images_result.stdout | from_yaml }}"
1818

19-
- name: Set a fact about the Pulp URL
20-
set_fact:
21-
pulp_url: "{{ stackhpc_repo_mirror_url }}"
22-
2319
# Use state=read and allow_missing=false to check for missing tags in test pulp.
2420
- import_role:
2521
name: stackhpc.pulp.pulp_container_content
@@ -30,6 +26,7 @@
3026
{%- set repository = kolla_docker_namespace ~ "/" ~ image -%}
3127
{%- set content = {
3228
"allow_missing": False,
29+
"is_push": pulp_url == stackhpc_release_pulp_url,
3330
"repository": repository,
3431
"state": "read",
3532
"tags": tags,
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
# See roles/pulp_auth_proxy/README.md for details.
3+
4+
- name: Deploy Pulp auth proxy
5+
hosts: container-image-builders
6+
gather_facts: false
7+
tasks:
8+
- import_role:
9+
name: pulp_auth_proxy
10+
vars:
11+
pulp_auth_proxy_url: "{{ stackhpc_repo_mirror_url }}"
12+
pulp_auth_proxy_username: "{{ stackhpc_repo_mirror_username }}"
13+
pulp_auth_proxy_password: "{{ stackhpc_repo_mirror_password }}"
14+
pulp_auth_proxy_conf_path: "{{ base_path }}/containers/pulp_proxy"

0 commit comments

Comments
 (0)