From 77670b9610097940f04b8c81cf116e6efdfa87bd Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Thu, 10 Oct 2019 15:31:59 +0200 Subject: [PATCH] Bodhi: Split the buildconfig for stg and for prod This way we can change things in staging without impacting production since we're in freeze. Once the freeze is over, we'll likely want to migrate production to the new way. While splitting the buildconfig, we're also moving out the docker files to make the file easier to read. Signed-off-by: Pierre-Yves Chibon --- playbooks/openshift-apps/bodhi.yml | 6 + .../bodhi/templates/buildconfig-stg.yml | 121 ++++++++++++++++++ .../bodhi/templates/dockerfile-base | 17 +++ .../bodhi/templates/dockerfile-celery | 6 + .../bodhi/templates/dockerfile-consumer | 6 + .../bodhi/templates/dockerfile-web | 8 ++ 6 files changed, 164 insertions(+) create mode 100644 roles/openshift-apps/bodhi/templates/buildconfig-stg.yml create mode 100644 roles/openshift-apps/bodhi/templates/dockerfile-base create mode 100644 roles/openshift-apps/bodhi/templates/dockerfile-celery create mode 100644 roles/openshift-apps/bodhi/templates/dockerfile-consumer create mode 100644 roles/openshift-apps/bodhi/templates/dockerfile-web diff --git a/playbooks/openshift-apps/bodhi.yml b/playbooks/openshift-apps/bodhi.yml index cb396db038..7393f75f39 100644 --- a/playbooks/openshift-apps/bodhi.yml +++ b/playbooks/openshift-apps/bodhi.yml @@ -84,6 +84,12 @@ app: bodhi template: buildconfig.yml objectname: buildconfig.yml + when: env == "production" + - role: openshift/object + app: bodhi + template: buildconfig-stg.yml + objectname: buildconfig.yml + when: env == "staging" - role: openshift/start-build app: bodhi buildname: bodhi-base diff --git a/roles/openshift-apps/bodhi/templates/buildconfig-stg.yml b/roles/openshift-apps/bodhi/templates/buildconfig-stg.yml new file mode 100644 index 0000000000..9a57977f75 --- /dev/null +++ b/roles/openshift-apps/bodhi/templates/buildconfig-stg.yml @@ -0,0 +1,121 @@ +{% macro load_file(filename) %}{% include filename %}{%- endmacro -%} +apiVersion: v1 +items: +- apiVersion: v1 + kind: BuildConfig + metadata: + labels: + build: bodhi-base + name: bodhi-base + spec: + runPolicy: Serial + source: + dockerfile: |- + {{ load_file('dockerfile') | indent }} + type: Dockerfile + strategy: + type: Docker + dockerStrategy: + noCache: false + output: + to: + kind: ImageStreamTag + name: bodhi-base:latest +kind: List +metadata: {} + +--- +apiVersion: v1 +items: +- apiVersion: v1 + kind: BuildConfig + metadata: + labels: + build: bodhi-web + name: bodhi-web + spec: + runPolicy: Serial + source: + dockerfile: |- + {{ load_file('dockerfile-web') | indent }} + type: Dockerfile + strategy: + type: Docker + dockerStrategy: + from: + kind: "ImageStreamTag" + name: "bodhi-base:latest" + noCache: false + triggers: + - type: "imageChange" + imageChange: {} + output: + to: + kind: ImageStreamTag + name: bodhi-web:latest +kind: List +metadata: {} + +--- +apiVersion: v1 +items: +- apiVersion: v1 + kind: BuildConfig + metadata: + labels: + build: bodhi-consumer + name: bodhi-consumer + spec: + runPolicy: Serial + source: + dockerfile: |- + {{ load_file('dockerfile-consumer') | indent }} + type: Dockerfile + strategy: + type: Docker + dockerStrategy: + from: + kind: "ImageStreamTag" + name: "bodhi-base:latest" + noCache: false + triggers: + - type: "imageChange" + imageChange: {} + output: + to: + kind: ImageStreamTag + name: bodhi-consumer:latest +kind: List +metadata: {} + +--- +apiVersion: v1 +items: +- apiVersion: v1 + kind: BuildConfig + metadata: + labels: + build: bodhi-celery + name: bodhi-celery + spec: + runPolicy: Serial + source: + dockerfile: |- + {{ load_file('dockerfile-celery') | indent }} + type: Dockerfile + strategy: + type: Docker + dockerStrategy: + from: + kind: "ImageStreamTag" + name: "bodhi-base:latest" + noCache: false + triggers: + - type: "imageChange" + imageChange: {} + output: + to: + kind: ImageStreamTag + name: bodhi-celery:latest +kind: List +metadata: {} diff --git a/roles/openshift-apps/bodhi/templates/dockerfile-base b/roles/openshift-apps/bodhi/templates/dockerfile-base new file mode 100644 index 0000000000..8a22664d3d --- /dev/null +++ b/roles/openshift-apps/bodhi/templates/dockerfile-base @@ -0,0 +1,17 @@ +FROM fedora:30 +LABEL \ + name="bodhi-base" \ + vendor="Fedora Infrastructure" \ + license="MIT" +RUN curl -o /etc/yum.repos.d/infra-tags.repo https://infrastructure.fedoraproject.org/cgit/ansible.git/plain/files/common/fedora-infra-tags.repo +{% if env == "staging" %} +RUN curl -o /etc/yum.repos.d/infra-tags-stg.repo https://infrastructure.fedoraproject.org/cgit/ansible.git/plain/files/common/fedora-infra-tags-stg.repo +{% endif %} +# While dnf has a --nodocs, it doesen't have a --docs... +RUN sed -i '/nodocs/d' /etc/dnf/dnf.conf +RUN dnf install -y bodhi-server-{{bodhi_version}} +# Set up krb5 +RUN rm -f /etc/krb5.conf && \ + ln -sf /etc/bodhi/krb5.conf /etc/krb5.conf && \ + ln -sf /etc/keytabs/koji-keytab /etc/krb5.bodhi_bodhi{{ env_suffix }}.fedoraproject.org.keytab +ENV USER=openshift diff --git a/roles/openshift-apps/bodhi/templates/dockerfile-celery b/roles/openshift-apps/bodhi/templates/dockerfile-celery new file mode 100644 index 0000000000..c7d98ef202 --- /dev/null +++ b/roles/openshift-apps/bodhi/templates/dockerfile-celery @@ -0,0 +1,6 @@ +FROM bodhi-base +LABEL \ + name="bodhi-celery" \ + vendor="Fedora Infrastructure" \ + license="MIT" +ENTRYPOINT /usr/bin/celery worker -A bodhi.server.tasks.app -l info -Q celery diff --git a/roles/openshift-apps/bodhi/templates/dockerfile-consumer b/roles/openshift-apps/bodhi/templates/dockerfile-consumer new file mode 100644 index 0000000000..bf272d52f4 --- /dev/null +++ b/roles/openshift-apps/bodhi/templates/dockerfile-consumer @@ -0,0 +1,6 @@ +FROM bodhi-base +LABEL \ + name="bodhi-consumer" \ + vendor="Fedora Infrastructure" \ + license="MIT" +ENTRYPOINT /usr/bin/fedora-messaging consume diff --git a/roles/openshift-apps/bodhi/templates/dockerfile-web b/roles/openshift-apps/bodhi/templates/dockerfile-web new file mode 100644 index 0000000000..24ae261027 --- /dev/null +++ b/roles/openshift-apps/bodhi/templates/dockerfile-web @@ -0,0 +1,8 @@ +FROM bodhi-base +LABEL \ + name="bodhi-web" \ + vendor="Fedora Infrastructure" \ + license="MIT" +RUN dnf install --refresh -y bodhi-docs-{{bodhi_version}} python3-pyramid_sawing +EXPOSE 8080 +ENTRYPOINT bash /etc/bodhi/start.sh