Skip to content
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
4 changes: 3 additions & 1 deletion apps/edxapp/templates/cms/_dc_base.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,9 @@ spec:
value: {{ service_variant }}
- name: DJANGO_SETTINGS_MODULE
value: {{ service_variant }}.envs.fun.docker_run
image: "{{ edxapp_image_name }}:{{ edxapp_image_tag }}"
# We point to a local registry image build for this "live" image (see
# ImageStream and BuildConfig templates)
image: "{{ internal_docker_registry }}/{{ project_name }}/edxapp-{{ service_variant }}:{{ edxapp_image_tag }}-live"
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /config
Expand Down
38 changes: 38 additions & 0 deletions apps/edxapp/templates/cms/bc.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: "v1"
kind: "BuildConfig"
metadata:
# FIXME
#
# As mentionned in the official documentation [1]:
#
# Configuration change triggers currently only work when creating a new
# BuildConfig. In a future release, configuration change triggers will also
# be able to launch a build whenever a BuildConfig is updated.
#
# Hence, we must force BuildConfig to always get created with a unique name.
# This is a temporary solution that needs to be improved as soon as OKD
# triggers a new build upon BC object update.
#
# References:
#
# 1. https://docs.okd.io/latest/dev_guide/builds/triggering_builds.html#config-change-triggers
name: "edxapp-cms-{{ deployment_stamp }}"
namespace: "{{ project_name }}"
labels:
app: "edxapp"
service: "cms"
version: "{{ edxapp_image_tag }}"
deployment_stamp: "{{ deployment_stamp }}"
spec:
strategy:
type: Docker
source:
dockerfile: |-
FROM {{ edxapp_image_name }}:{{ edxapp_image_tag }}
# Add new statements here
triggers:
- type: "ConfigChange"
output:
to:
kind: "ImageStreamTag"
name: "edxapp-cms:{{ edxapp_image_tag }}-live"
8 changes: 8 additions & 0 deletions apps/edxapp/templates/cms/is.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: "v1"
kind: "ImageStream"
metadata:
name: "edxapp-cms"
namespace: "{{ project_name }}"
labels:
app: "edxapp"
service: "cms"
4 changes: 3 additions & 1 deletion apps/edxapp/templates/cms/job_01_collectstatic.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ spec:
spec:
containers:
- name: edxapp-cms-collectstatic-{{ job_stamp }}
image: "{{ edxapp_image_name }}:{{ edxapp_image_tag }}"
# We point to a local registry image build for this "live" image (see
# ImageStream and BuildConfig templates)
image: "{{ internal_docker_registry }}/{{ project_name }}/edxapp-cms:{{ edxapp_image_tag }}-live"
env:
- name: DJANGO_SETTINGS_MODULE
value: cms.envs.fun.docker_run
Expand Down
4 changes: 3 additions & 1 deletion apps/edxapp/templates/cms/job_04_db_migrate.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ spec:
spec:
containers:
- name: edxapp-cms-dbmigrate-{{ job_stamp }}
image: "{{ edxapp_image_name }}:{{ edxapp_image_tag }}"
# We point to a local registry image build for this "live" image (see
# ImageStream and BuildConfig templates)
image: "{{ internal_docker_registry }}/{{ project_name }}/edxapp-cms:{{ edxapp_image_tag }}-live"
env:
- name: DJANGO_SETTINGS_MODULE
value: cms.envs.fun.docker_run
Expand Down
4 changes: 3 additions & 1 deletion apps/edxapp/templates/cms/job_05_load_fixtures.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ spec:
spec:
containers:
- name: edxapp-cms-load-fixtures-{{ job_stamp }}
image: "{{ edxapp_image_name }}:{{ edxapp_image_tag }}"
# We point to a local registry image build for this "live" image (see
# ImageStream and BuildConfig templates)
image: "{{ internal_docker_registry }}/{{ project_name }}/edxapp-cms:{{ edxapp_image_tag }}-live"
env:
- name: DJANGO_SETTINGS_MODULE
value: cms.envs.fun.docker_run
Expand Down
38 changes: 38 additions & 0 deletions apps/edxapp/templates/lms/bc.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: "v1"
kind: "BuildConfig"
metadata:
# FIXME
#
# As mentionned in the official documentation [1]:
#
# Configuration change triggers currently only work when creating a new
# BuildConfig. In a future release, configuration change triggers will also
# be able to launch a build whenever a BuildConfig is updated.
#
# Hence, we must force BuildConfig to always get created with a unique name.
# This is a temporary solution that needs to be improved as soon as OKD
# triggers a new build upon BC object update.
#
# References:
#
# 1. https://docs.okd.io/latest/dev_guide/builds/triggering_builds.html#config-change-triggers
name: "edxapp-lms-{{ deployment_stamp }}"
namespace: "{{ project_name }}"
labels:
app: "edxapp"
service: "lms"
version: "{{ edxapp_image_tag }}"
deployment_stamp: "{{ deployment_stamp }}"
spec:
strategy:
type: Docker
source:
dockerfile: |-
FROM {{ edxapp_image_name }}:{{ edxapp_image_tag }}
# Add new statements here
triggers:
- type: "ConfigChange"
output:
to:
kind: "ImageStreamTag"
name: "edxapp-lms:{{ edxapp_image_tag }}-live"
8 changes: 8 additions & 0 deletions apps/edxapp/templates/lms/is.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: "v1"
kind: "ImageStream"
metadata:
name: "edxapp-lms"
namespace: "{{ project_name }}"
labels:
app: "edxapp"
service: "lms"
4 changes: 3 additions & 1 deletion apps/edxapp/templates/lms/job_02_collectstatic.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ spec:
spec:
containers:
- name: edxapp-lms-collectstatic-{{ job_stamp }}
image: "{{ edxapp_image_name }}:{{ edxapp_image_tag }}"
# We point to a local registry image build for this "live" image (see
# ImageStream and BuildConfig templates)
image: "{{ internal_docker_registry }}/{{ project_name }}/edxapp-lms:{{ edxapp_image_tag }}-live"
env:
- name: DJANGO_SETTINGS_MODULE
value: lms.envs.fun.docker_run
Expand Down
4 changes: 3 additions & 1 deletion apps/edxapp/templates/lms/job_03_db_migrate.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ spec:
spec:
containers:
- name: edxapp-lms-dbmigrate-{{ job_stamp }}
image: "{{ edxapp_image_name }}:{{ edxapp_image_tag }}"
# We point to a local registry image build for this "live" image (see
# ImageStream and BuildConfig templates)
image: "{{ internal_docker_registry }}/{{ project_name }}/edxapp-lms:{{ edxapp_image_tag }}-live"
env:
- name: DJANGO_SETTINGS_MODULE
value: lms.envs.fun.docker_run
Expand Down
38 changes: 38 additions & 0 deletions apps/richie/templates/app/bc.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: "v1"
kind: "BuildConfig"
metadata:
# FIXME
#
# As mentionned in the official documentation [1]:
#
# Configuration change triggers currently only work when creating a new
# BuildConfig. In a future release, configuration change triggers will also
# be able to launch a build whenever a BuildConfig is updated.
#
# Hence, we must force BuildConfig to always get created with a unique name.
# This is a temporary solution that needs to be improved as soon as OKD
# triggers a new build upon BC object update.
#
# References:
#
# 1. https://docs.okd.io/latest/dev_guide/builds/triggering_builds.html#config-change-triggers
name: "richie-{{ deployment_stamp }}"
namespace: "{{ project_name }}"
labels:
app: "richie"
service: "richie"
version: "{{ richie_image_tag }}"
deployment_stamp: "{{ deployment_stamp }}"
spec:
strategy:
type: Docker
source:
dockerfile: |-
FROM {{ richie_image_name }}:{{ richie_image_tag }}
# Add new statements here
triggers:
- type: "ConfigChange"
output:
to:
kind: "ImageStreamTag"
name: "richie:{{ richie_image_tag }}-live"
6 changes: 4 additions & 2 deletions apps/richie/templates/app/dc.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ metadata:
name: "richie-app-{{ deployment_stamp }}"
namespace: "{{ project_name }}"
spec:
replicas: 1 # number of pods we want
replicas: 1 # number of pods we want
template:
metadata:
labels:
Expand All @@ -21,7 +21,9 @@ spec:
spec:
containers:
- name: richie
image: "{{ richie_image_name }}:{{ richie_image_tag }}"
# We point to a local registry image build for this "live" image (see
# ImageStream and BuildConfig templates)
image: "{{ internal_docker_registry }}/{{ project_name }}/richie:{{ richie_image_tag }}-live"
imagePullPolicy: IfNotPresent
env:
- name: DJANGO_SETTINGS_MODULE
Expand Down
8 changes: 8 additions & 0 deletions apps/richie/templates/app/is.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: "v1"
kind: "ImageStream"
metadata:
name: "richie"
namespace: "{{ project_name }}"
labels:
app: "richie"
service: "richie"
4 changes: 3 additions & 1 deletion apps/richie/templates/app/job_collectstatic.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ spec:
envFrom:
- secretRef:
name: richie-{{ secret_id }}
image: "{{ richie_image_name }}:{{ richie_image_tag }}"
# We point to a local registry image build for this "live" image (see
# ImageStream and BuildConfig templates)
image: "{{ internal_docker_registry }}/{{ project_name }}/richie:{{ richie_image_tag }}-live"
command: ["python", "manage.py", "collectstatic", "--noinput"]
volumeMounts:
- mountPath: /data/static
Expand Down
4 changes: 3 additions & 1 deletion apps/richie/templates/app/job_db_migrate.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ spec:
envFrom:
- secretRef:
name: richie-{{ secret_id }}
image: "{{ richie_image_name }}:{{ richie_image_tag }}"
# We point to a local registry image build for this "live" image (see
# ImageStream and BuildConfig templates)
image: "{{ internal_docker_registry }}/{{ project_name }}/richie:{{ richie_image_tag }}-live"
command: ["python", "manage.py", "migrate"]
restartPolicy: Never
4 changes: 3 additions & 1 deletion apps/richie/templates/app/job_regenerate_indexes.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ spec:
envFrom:
- secretRef:
name: richie-{{ secret_id }}
image: "{{ richie_image_name }}:{{ richie_image_tag }}"
# We point to a local registry image build for this "live" image (see
# ImageStream and BuildConfig templates)
image: "{{ internal_docker_registry }}/{{ project_name }}/richie:{{ richie_image_tag }}-live"
command: ["python", "manage.py", "regenerate_indexes"]
restartPolicy: Never
3 changes: 3 additions & 0 deletions group_vars/all/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ job_stamp: null
# docs/developer_guide/secrets.md
secret_id: "1.0.0"

# OpenShift's internal docker registry server
internal_docker_registry: "docker-registry.default.svc:5000"

# TODO: move the following settings to the redirect app
# Ports
aliases_port: 8999
Expand Down
6 changes: 6 additions & 0 deletions group_vars/env_type/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
project_description: "A minimal project to test apps bootstrapping ({{ env_type }})"
domain_name: "{{ lookup('env', 'OPENSHIFT_DOMAIN') }}.nip.io"

# OpenShift's internal docker registry server
#
# FIXME: use docker registry server IP address instead of the service name (i.e.
# docker-registry.default.svc) to prevent oc cluster DNS issues
internal_docker_registry: "172.30.1.1:5000"

apps:
- name: hello
- name: richie
Expand Down
6 changes: 6 additions & 0 deletions group_vars/env_type/development.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
# Variables specific to development environments
domain_name: "{{ lookup('env', 'OPENSHIFT_DOMAIN') }}.nip.io"

# OpenShift's internal docker registry server
#
# FIXME: use docker registry server IP address instead of the service name (i.e.
# docker-registry.default.svc) to prevent oc cluster DNS issues
internal_docker_registry: "172.30.1.1:5000"

# Use development images in the development environment
edxapp_image_tag: "hawthorn.1-1.0.0-dev"
richie_image_tag: "0.1.0-alpha.3-alpine-dev"
Expand Down
2 changes: 2 additions & 0 deletions init_project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@
- create_app_volumes
- create_app_endpoints
- create_static_services_routes
- create_app_image_streams
tags:
- volume
- endpoint
- route
- stream
14 changes: 14 additions & 0 deletions tasks/create_app_image_streams.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
# Create volumes for an app

- name: Print app name
debug: msg="App name {{ app.name }}"
tags: stream

- name: Make sure image streams exist
openshift_raw:
definition: "{{ lookup('template', item) | from_yaml }}"
state: present
with_items: "{{ streams }}"
when: streams is defined
tags: stream
21 changes: 20 additions & 1 deletion tasks/get_objects_for_app.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
---
# Get objects for an application

- name: Set templates list for this app
Expand All @@ -8,17 +7,29 @@

- name: Set OpenShift objects to manage
set_fact:
builds: "{{ templates | map('regex_search', '.*/bc.*\\.yml\\.j2$') | select('string') | list }}"
deployments: "{{ templates | map('regex_search', '.*/dc.*\\.yml\\.j2$') | select('string') | list }}"
services: "{{ templates | map('regex_search', '.*/svc\\.yml\\.j2$') | select('string') | list }}"
streams: "{{ templates | map('regex_search', '.*/is.*\\.yml\\.j2$') | select('string') | list }}"
jobs: "{{ templates | map('regex_search', '.*/job_.*\\.yml\\.j2$') | select('string') | list }}"
routes: "{{ templates | map('regex_search', '.*/route.*\\.yml\\.j2$') | select('string') | list }}"
tags:
- deploy
- build
- deployment
- service
- stream
- job
- route

- name: Display OpenShift's builds for this app
debug:
msg: "{{ builds | to_nice_yaml}}"
when: builds
tags:
- deploy
- build

- name: Display OpenShift's deployments for this app
debug:
msg: "{{ deployments | to_nice_yaml}}"
Expand All @@ -35,6 +46,14 @@
- deploy
- service

- name: Display OpenShift's image streams for this app
debug:
msg: "{{ streams | to_nice_yaml }}"
when: streams
tags:
- deploy
- stream

- name: Display OpenShift's jobs for this app
debug:
msg: "{{ jobs | to_nice_yaml }}"
Expand Down
3 changes: 2 additions & 1 deletion tasks/manage_app.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
---
# Task set to manage apps
#
# Args:
Expand All @@ -12,10 +11,12 @@
definition: "{{ lookup('template', item) | from_yaml }}"
state: "{{ deployment_state | default('present') }}"
with_items:
- "{{ builds }}"
- "{{ deployments }}"
- "{{ services }}"
tags:
- deploy
- build
- deployment
- service

Expand Down