First try at Noggin deployment
Signed-off-by: Aurélien Bompard <aurelien@bompard.org>
This commit is contained in:
parent
9d9680cc73
commit
6e1873ce1b
16 changed files with 555 additions and 5 deletions
95
playbooks/openshift-apps/noggin.yml
Normal file
95
playbooks/openshift-apps/noggin.yml
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
- name: make the app be real
|
||||||
|
hosts: os_masters[0]:os_masters_stg[0]
|
||||||
|
user: root
|
||||||
|
gather_facts: False
|
||||||
|
|
||||||
|
vars_files:
|
||||||
|
- /srv/web/infra/ansible/vars/global.yml
|
||||||
|
- "/srv/private/ansible/vars.yml"
|
||||||
|
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
|
||||||
|
|
||||||
|
vars:
|
||||||
|
|
||||||
|
pre_tasks:
|
||||||
|
- name: Get the IPA CA cert
|
||||||
|
slurp:
|
||||||
|
src: /etc/ipa/ca.crt
|
||||||
|
delegate_to: "{{ ipa_server }}"
|
||||||
|
register: ipa_ca_cert
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: rabbit/user
|
||||||
|
username: "noggin{{ env_suffix }}"
|
||||||
|
|
||||||
|
- role: openshift/project
|
||||||
|
app: noggin
|
||||||
|
description: noggin
|
||||||
|
appowners:
|
||||||
|
- abompard
|
||||||
|
- pingou
|
||||||
|
tags:
|
||||||
|
- apply-appowners
|
||||||
|
when: env == "production"
|
||||||
|
- role: openshift/project
|
||||||
|
app: noggin
|
||||||
|
description: noggin
|
||||||
|
appowners:
|
||||||
|
- abompard
|
||||||
|
- pingou
|
||||||
|
- nils
|
||||||
|
- ryanlerch
|
||||||
|
tags:
|
||||||
|
- apply-appowners
|
||||||
|
when: env == "staging"
|
||||||
|
|
||||||
|
- role: openshift/secret-file
|
||||||
|
app: noggin
|
||||||
|
secret_name: fedora-messaging-ca
|
||||||
|
key: cacert.pem
|
||||||
|
privatefile: "rabbitmq/{{env}}/pki/ca.crt"
|
||||||
|
- role: openshift/secret-file
|
||||||
|
app: noggin
|
||||||
|
secret_name: fedora-messaging-crt
|
||||||
|
key: noggin-cert.pem
|
||||||
|
privatefile: "rabbitmq/{{env}}/pki/issued/noggin{{env_suffix}}.crt"
|
||||||
|
- role: openshift/secret-file
|
||||||
|
app: noggin
|
||||||
|
secret_name: fedora-messaging-key
|
||||||
|
key: noggin-key.pem
|
||||||
|
privatefile: "rabbitmq/{{env}}/pki/private/noggin{{env_suffix}}.key"
|
||||||
|
|
||||||
|
- role: openshift/imagestream
|
||||||
|
app: noggin
|
||||||
|
imagename: noggin
|
||||||
|
- role: openshift/object
|
||||||
|
app: noggin
|
||||||
|
template: buildconfig.yml
|
||||||
|
objectname: buildconfig.yml
|
||||||
|
- role: openshift/object
|
||||||
|
app: noggin
|
||||||
|
template: configmap.yml
|
||||||
|
objectname: configmap.yml
|
||||||
|
- role: openshift/object
|
||||||
|
app: noggin
|
||||||
|
file: service.yml
|
||||||
|
objectname: service.yml
|
||||||
|
- role: openshift/object
|
||||||
|
app: noggin
|
||||||
|
template: route.yml
|
||||||
|
objectname: route.yml
|
||||||
|
- role: openshift/object
|
||||||
|
app: noggin
|
||||||
|
file: secrets.yml
|
||||||
|
objectname: secrets.yml
|
||||||
|
- role: openshift/object
|
||||||
|
app: noggin
|
||||||
|
file: secret-webhook.yml
|
||||||
|
objectname: secret-webhook.yml
|
||||||
|
- role: openshift/object
|
||||||
|
app: noggin
|
||||||
|
file: deploymentconfig.yml
|
||||||
|
objectname: deploymentconfig.yml
|
||||||
|
|
||||||
|
- role: openshift/start-build
|
||||||
|
app: noggin
|
||||||
|
buildname: noggin
|
|
@ -7,6 +7,7 @@
|
||||||
- haveged
|
- haveged
|
||||||
- ipa-server
|
- ipa-server
|
||||||
- ipa-server-dns
|
- ipa-server-dns
|
||||||
|
- ipa-fas
|
||||||
tags:
|
tags:
|
||||||
- ipa/server
|
- ipa/server
|
||||||
- packages
|
- packages
|
||||||
|
@ -180,6 +181,16 @@
|
||||||
- krb5
|
- krb5
|
||||||
when: ipa_initial
|
when: ipa_initial
|
||||||
|
|
||||||
|
- name: Configure password policy
|
||||||
|
command: ipa pwpolicy-mod global_policy --maxlife=0 --minlife=0 --history=0 --minclasses=0 --minlength=0 --maxfail=0
|
||||||
|
tags:
|
||||||
|
- ipa/server
|
||||||
|
- config
|
||||||
|
when: ipa_initial
|
||||||
|
register: pwpolicy_output
|
||||||
|
changed_when: "'no modifications to be performed' not in pwpolicy_output.stderr"
|
||||||
|
failed_when: "'no modifications to be performed' not in pwpolicy_output.stderr and pwpolicy_output.rc != 0"
|
||||||
|
|
||||||
- name: Create fas_sync user
|
- name: Create fas_sync user
|
||||||
command: ipa user-add fas_sync --first=FAS --last=Sync
|
command: ipa user-add fas_sync --first=FAS --last=Sync
|
||||||
tags:
|
tags:
|
||||||
|
@ -200,15 +211,80 @@
|
||||||
changed_when: "'already a member' not in promote_output.stdout"
|
changed_when: "'already a member' not in promote_output.stdout"
|
||||||
failed_when: "'already a member' not in promote_output.stdout and promote_output.rc != 0"
|
failed_when: "'already a member' not in promote_output.stdout and promote_output.rc != 0"
|
||||||
|
|
||||||
- name: Configure password policy
|
# Noggin user setup
|
||||||
command: ipa pwpolicy-mod global_policy --maxlife=0 --minlife=0 --history=0 --minclasses=0 --minlength=0 --maxfail=0
|
|
||||||
|
- name: Register the proper noggin admin password
|
||||||
|
set_fact:
|
||||||
|
noggin_password: "{{ (env == 'production')|ternary(noggin_admin_password, noggin_stg_admin_password) }}"
|
||||||
|
|
||||||
|
- name: Create noggin user
|
||||||
|
# Expiration date will be a Friday 13th in 30 years. I'm sure we'll remember that.
|
||||||
|
# (if unset, IPA will assume the password is expired because it hasn't been set by the user themselves)
|
||||||
|
shell: echo -e "{{ noggin_password }}\n{{ noggin_password }}" | ipa user-add noggin --first=Noggin --last=User --password --password-expiration 20500513000000Z
|
||||||
tags:
|
tags:
|
||||||
- ipa/server
|
- ipa/server
|
||||||
- config
|
- config
|
||||||
when: ipa_initial
|
when: ipa_initial
|
||||||
register: pwpolicy_output
|
register: create_output
|
||||||
changed_when: "'no modifications to be performed' not in pwpolicy_output.stderr"
|
changed_when: "'already exists' not in create_output.stderr"
|
||||||
failed_when: "'no modifications to be performed' not in pwpolicy_output.stderr and pwpolicy_output.rc != 0"
|
failed_when: "'already exists' not in create_output.stderr and create_output.rc != 0"
|
||||||
|
|
||||||
|
- name: Create the noggin privilege
|
||||||
|
command: ipa privilege-add "Self-service Portal Administrators"
|
||||||
|
tags:
|
||||||
|
- ipa/server
|
||||||
|
- config
|
||||||
|
when: ipa_initial
|
||||||
|
register: output
|
||||||
|
changed_when: "'already exists' not in output.stdout"
|
||||||
|
failed_when: "'already exists' not in output.stdout and output.rc != 0"
|
||||||
|
|
||||||
|
- name: Setup the noggin privilege
|
||||||
|
command: ipa privilege-add-permission
|
||||||
|
"Self-service Portal Administrators"
|
||||||
|
--permissions="System: Modify Users"
|
||||||
|
--permissions="System: Change User password"
|
||||||
|
--permissions="System: Add Stage User"
|
||||||
|
--permissions="System: Read Stage Users"
|
||||||
|
--permissions="System: Modify Stage User"
|
||||||
|
--permissions="System: Modify User RDN"
|
||||||
|
tags:
|
||||||
|
- ipa/server
|
||||||
|
- config
|
||||||
|
when: ipa_initial
|
||||||
|
register: output
|
||||||
|
changed_when: "'Number of permissions added 0' not in output.stdout"
|
||||||
|
failed_when: "'Number of permissions added 0' not in output.stdout and output.rc != 0"
|
||||||
|
|
||||||
|
- name: Create the noggin role
|
||||||
|
command: ipa role-add "Self-service Portal Administrator"
|
||||||
|
tags:
|
||||||
|
- ipa/server
|
||||||
|
- config
|
||||||
|
when: ipa_initial
|
||||||
|
register: output
|
||||||
|
changed_when: "'already exists' not in output.stdout"
|
||||||
|
failed_when: "'already exists' not in output.stdout and output.rc != 0"
|
||||||
|
|
||||||
|
- name: Setup the noggin role
|
||||||
|
command: ipa role-add-privilege "Self-service Portal Administrator" --privileges="Self-service Portal Administrators"
|
||||||
|
tags:
|
||||||
|
- ipa/server
|
||||||
|
- config
|
||||||
|
when: ipa_initial
|
||||||
|
register: output
|
||||||
|
changed_when: "'Number of privileges added 0' not in output.stdout"
|
||||||
|
failed_when: "'Number of privileges added 0' not in output.stdout and output.rc != 0"
|
||||||
|
|
||||||
|
- name: Give noggin the appropriate role
|
||||||
|
command: ipa role-add-member "Self-service Portal Administrator" --user=noggin
|
||||||
|
tags:
|
||||||
|
- ipa/server
|
||||||
|
- config
|
||||||
|
when: ipa_initial
|
||||||
|
register: output
|
||||||
|
changed_when: "'Number of members added 0' not in output.stdout"
|
||||||
|
failed_when: "'Number of members added 0' not in output.stdout and output.rc != 0"
|
||||||
|
|
||||||
- name: Destroy admin ticket
|
- name: Destroy admin ticket
|
||||||
command: kdestroy -A
|
command: kdestroy -A
|
||||||
|
@ -219,6 +295,7 @@
|
||||||
- krb5
|
- krb5
|
||||||
when: ipa_initial
|
when: ipa_initial
|
||||||
|
|
||||||
|
|
||||||
- name: Create LDIF directory
|
- name: Create LDIF directory
|
||||||
file: path=/root/ldif state=directory owner=root group=root mode=0750
|
file: path=/root/ldif state=directory owner=root group=root mode=0750
|
||||||
tags:
|
tags:
|
||||||
|
|
7
roles/openshift-apps/noggin/files/imagestream.yml
Normal file
7
roles/openshift-apps/noggin/files/imagestream.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
apiVersion: image.openshift.io/v1
|
||||||
|
kind: ImageStream
|
||||||
|
metadata:
|
||||||
|
name: noggin
|
||||||
|
namespace: aaa
|
||||||
|
labels:
|
||||||
|
app: noggin
|
15
roles/openshift-apps/noggin/files/service.yml
Normal file
15
roles/openshift-apps/noggin/files/service.yml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: noggin-web
|
||||||
|
namespace: aaa
|
||||||
|
labels:
|
||||||
|
app: noggin
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: noggin-web
|
||||||
|
port: 8080
|
||||||
|
targetPort: 8080
|
||||||
|
selector:
|
||||||
|
app: noggin
|
||||||
|
deploymentconfig: noggin
|
42
roles/openshift-apps/noggin/templates/buildconfig.yml
Normal file
42
roles/openshift-apps/noggin/templates/buildconfig.yml
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
apiVersion: build.openshift.io/v1
|
||||||
|
kind: BuildConfig
|
||||||
|
metadata:
|
||||||
|
name: noggin
|
||||||
|
namespace: aaa
|
||||||
|
labels:
|
||||||
|
app: noggin
|
||||||
|
build: noggin
|
||||||
|
spec:
|
||||||
|
runPolicy: Serial
|
||||||
|
source:
|
||||||
|
type: Git
|
||||||
|
git:
|
||||||
|
uri: https://github.com/fedora-infra/noggin.git
|
||||||
|
{% if env == "staging" %}
|
||||||
|
ref: staging
|
||||||
|
{% else %}
|
||||||
|
ref: stable
|
||||||
|
{% endif %}
|
||||||
|
contextDir: /
|
||||||
|
strategy:
|
||||||
|
type: Source
|
||||||
|
sourceStrategy:
|
||||||
|
from:
|
||||||
|
kind: ImageStreamTag
|
||||||
|
name: python:3.6
|
||||||
|
namespace: openshift
|
||||||
|
output:
|
||||||
|
to:
|
||||||
|
kind: ImageStreamTag
|
||||||
|
name: noggin:latest
|
||||||
|
triggers:
|
||||||
|
- type: ImageChange
|
||||||
|
- type: GitHub
|
||||||
|
{% if noggin_stg_github_secret is defined and env == 'staging' %}
|
||||||
|
github:
|
||||||
|
secret: "{{ noggin_stg_github_secret }}"
|
||||||
|
{% elif noggin_github_secret is defined and env == 'production' %}
|
||||||
|
- type: GitHub
|
||||||
|
github:
|
||||||
|
secret: "{{ noggin_github_secret }}"
|
||||||
|
{% endif %}
|
70
roles/openshift-apps/noggin/templates/configmap.yml
Normal file
70
roles/openshift-apps/noggin/templates/configmap.yml
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
{% macro load_file(filename) %}{% include filename %}{%- endmacro -%}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: List
|
||||||
|
metadata: {}
|
||||||
|
items:
|
||||||
|
|
||||||
|
- apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: noggin-config
|
||||||
|
namespace: aaa
|
||||||
|
labels:
|
||||||
|
app: noggin
|
||||||
|
data:
|
||||||
|
noggin.cfg: |-
|
||||||
|
{{ load_file('noggin.cfg.py') | indent(6) }}
|
||||||
|
gunicorn.conf.py: |-
|
||||||
|
{{ load_file('gunicorn.conf.py') | indent(6) }}
|
||||||
|
|
||||||
|
- apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: wsgi-script
|
||||||
|
namespace: aaa
|
||||||
|
labels:
|
||||||
|
app: noggin
|
||||||
|
data:
|
||||||
|
wsgi.py: |-
|
||||||
|
{{ load_file('wsgi.py') | indent(6) }}
|
||||||
|
__init__.py: ""
|
||||||
|
|
||||||
|
- apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: fedora-messaging-config
|
||||||
|
namespace: aaa
|
||||||
|
labels:
|
||||||
|
app: noggin
|
||||||
|
data:
|
||||||
|
config.toml: |-
|
||||||
|
{{ load_file('fedora-messaging.toml') | indent(6) }}
|
||||||
|
|
||||||
|
- apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: fedora-messaging-tls
|
||||||
|
namespace: aaa
|
||||||
|
labels:
|
||||||
|
app: noggin
|
||||||
|
data:
|
||||||
|
cacert.pem: |-
|
||||||
|
{{ load_file('fedora-messaging-ca.pem') | indent(6) }}
|
||||||
|
noggin-cert.pem: |-
|
||||||
|
{{ load_file('fedora-messaging-cert.pem') | indent(6) }}
|
||||||
|
noggin-key.pem: |-
|
||||||
|
{{ load_file('fedora-messaging-key.pem') | indent(6) }}
|
||||||
|
|
||||||
|
- apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: ipa-config
|
||||||
|
namespace: aaa
|
||||||
|
data:
|
||||||
|
ldap.conf: |-
|
||||||
|
{{ load_file('ipa-ldap.conf') | indent(6) }}
|
||||||
|
default.conf: |-
|
||||||
|
{{ load_file('ipa-default.conf') | indent(6) }}
|
||||||
|
ca.crt: |-
|
||||||
|
{{ ipa_ca_cert | indent(6) }}
|
122
roles/openshift-apps/noggin/templates/deploymentconfig.yml
Normal file
122
roles/openshift-apps/noggin/templates/deploymentconfig.yml
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
apiVersion: apps.openshift.io/v1
|
||||||
|
kind: DeploymentConfig
|
||||||
|
metadata:
|
||||||
|
name: noggin
|
||||||
|
namespace: aaa
|
||||||
|
labels:
|
||||||
|
app: noggin
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
app: noggin
|
||||||
|
deploymentconfig: noggin
|
||||||
|
strategy:
|
||||||
|
type: Rolling
|
||||||
|
activeDeadlineSeconds: 21600
|
||||||
|
rollingParams:
|
||||||
|
intervalSeconds: 1
|
||||||
|
maxSurge: 25%
|
||||||
|
maxUnavailable: 25%
|
||||||
|
timeoutSeconds: 600
|
||||||
|
updatePeriodSeconds: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
labels:
|
||||||
|
app: noggin
|
||||||
|
deploymentconfig: noggin
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: noggin
|
||||||
|
imagePullPolicy: Always
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
#protocol: TCP
|
||||||
|
#resources: {}
|
||||||
|
#terminationMessagePath: /dev/termination-log
|
||||||
|
#terminationMessagePolicy: File
|
||||||
|
volumeMounts:
|
||||||
|
- name: noggin-config-volume
|
||||||
|
mountPath: "/etc/noggin"
|
||||||
|
readOnly: true
|
||||||
|
- name: noggin-secrets-volume
|
||||||
|
mountPath: "/etc/noggin-secrets"
|
||||||
|
readOnly: true
|
||||||
|
- name: wsgi-script-volume
|
||||||
|
mountPath: "/opt/app-root/src/deploy"
|
||||||
|
readOnly: true
|
||||||
|
- name: fedora-messaging-config-volume
|
||||||
|
mountPath: "/etc/fedora-messaging"
|
||||||
|
readOnly: true
|
||||||
|
- name: fedora-messaging-ca-volume
|
||||||
|
mountPath: /etc/pki/fedora-messaging/cacert.pem
|
||||||
|
subPath: cacert.pem
|
||||||
|
readOnly: true
|
||||||
|
- name: fedora-messaging-crt-volume
|
||||||
|
mountPath: /etc/pki/fedora-messaging/noggin-cert.pem
|
||||||
|
subPath: noggin-cert.pem
|
||||||
|
readOnly: true
|
||||||
|
- name: fedora-messaging-key-volume
|
||||||
|
mountPath: /etc/pki/fedora-messaging/noggin-key.pem
|
||||||
|
subPath: noggin-key.pem
|
||||||
|
readOnly: true
|
||||||
|
- name: ipa-config-volume
|
||||||
|
mountPath: "/etc/ipa"
|
||||||
|
readOnly: true
|
||||||
|
env:
|
||||||
|
- name: NOGGIN_CONFIG_PATH
|
||||||
|
value: "/etc/noggin/noggin.cfg"
|
||||||
|
- name: APP_MODULE
|
||||||
|
value: "deploy.wsgi"
|
||||||
|
- name: APP_CONFIG
|
||||||
|
value: "/etc/noggin/gunicorn.conf.py"
|
||||||
|
readinessProbe:
|
||||||
|
timeoutSeconds: 10
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 60
|
||||||
|
httpGet:
|
||||||
|
path: /healthz/ready
|
||||||
|
port: 8080
|
||||||
|
livenessProbe:
|
||||||
|
timeoutSeconds: 10
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 60
|
||||||
|
httpGet:
|
||||||
|
path: /healthz/live
|
||||||
|
port: 8080
|
||||||
|
volumes:
|
||||||
|
- name: noggin-config-volume
|
||||||
|
configMap:
|
||||||
|
name: noggin-config
|
||||||
|
- name: noggin-secrets-volume
|
||||||
|
secret:
|
||||||
|
secretName: noggin-secrets
|
||||||
|
- name: wsgi-script-volume
|
||||||
|
configMap:
|
||||||
|
name: wsgi-script
|
||||||
|
- name: fedora-messaging-config-volume
|
||||||
|
configMap:
|
||||||
|
name: fedora-messaging-config
|
||||||
|
- name: fedora-messaging-ca-volume
|
||||||
|
secret:
|
||||||
|
secretName: fedora-messaging-ca
|
||||||
|
- name: fedora-messaging-crt-volume
|
||||||
|
secret:
|
||||||
|
secretName: fedora-messaging-crt
|
||||||
|
- name: fedora-messaging-key-volume
|
||||||
|
secret:
|
||||||
|
secretName: fedora-messaging-key
|
||||||
|
- name: ipa-config-volume
|
||||||
|
configMap:
|
||||||
|
name: ipa-config
|
||||||
|
triggers:
|
||||||
|
- imageChangeParams:
|
||||||
|
automatic: true
|
||||||
|
containerNames:
|
||||||
|
- noggin
|
||||||
|
from:
|
||||||
|
kind: ImageStreamTag
|
||||||
|
name: noggin:latest
|
||||||
|
namespace: aaa
|
||||||
|
type: ImageChange
|
||||||
|
- type: ConfigChange
|
29
roles/openshift-apps/noggin/templates/fedora-messaging.toml
Normal file
29
roles/openshift-apps/noggin/templates/fedora-messaging.toml
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
amqp_url = "amqps://noggin:@rabbitmq{{ env_suffix }}.fedoraproject.org/%2Fpubsub"
|
||||||
|
passive_declares = true
|
||||||
|
publish_exchange = "amq.topic"
|
||||||
|
topic_prefix = ""
|
||||||
|
|
||||||
|
[tls]
|
||||||
|
ca_cert = "/etc/pki/fedora-messaging/cacert.pem"
|
||||||
|
keyfile = "/etc/pki/fedora-messaging/noggin-key.pem"
|
||||||
|
certfile = "/etc/pki/fedora-messaging/noggin-cert.pem"
|
||||||
|
|
||||||
|
[client_properties]
|
||||||
|
app = "Noggin"
|
||||||
|
|
||||||
|
[log_config]
|
||||||
|
version = 1
|
||||||
|
disable_existing_loggers = true
|
||||||
|
[log_config.formatters.simple]
|
||||||
|
format = "[%(levelname)s %(name)s] %(message)s"
|
||||||
|
[log_config.handlers.console]
|
||||||
|
class = "logging.StreamHandler"
|
||||||
|
formatter = "simple"
|
||||||
|
stream = "ext://sys.stdout"
|
||||||
|
[log_config.loggers.fedora_messaging]
|
||||||
|
level = "INFO"
|
||||||
|
propagate = false
|
||||||
|
handlers = ["console"]
|
||||||
|
[log_config.root]
|
||||||
|
level = "WARNING"
|
||||||
|
handlers = ["console"]
|
1
roles/openshift-apps/noggin/templates/gunicorn.conf.py
Normal file
1
roles/openshift-apps/noggin/templates/gunicorn.conf.py
Normal file
|
@ -0,0 +1 @@
|
||||||
|
timeout = 60
|
8
roles/openshift-apps/noggin/templates/ipa-default.conf
Normal file
8
roles/openshift-apps/noggin/templates/ipa-default.conf
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
[global]
|
||||||
|
basedn = dc=freeipa-dev,dc=fedoraproject,dc=org
|
||||||
|
realm = {{ ipa_realm }}
|
||||||
|
domain = {{ ipa_realm | lower }}
|
||||||
|
server = {{ ipa_server }}
|
||||||
|
host = {{ inventory_hostname }}
|
||||||
|
xmlrpc_uri = https://{{ ipa_server }}/ipa/xml
|
||||||
|
enable_ra = True
|
9
roles/openshift-apps/noggin/templates/ipa-ldap.conf
Normal file
9
roles/openshift-apps/noggin/templates/ipa-ldap.conf
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
SASL_NOCANON on
|
||||||
|
URI ldaps://{{ ipa_server }}
|
||||||
|
{% if env == "staging" %}
|
||||||
|
BASE dc=stg,dc=fedoraproject,dc=org
|
||||||
|
{% else %}
|
||||||
|
BASE dc=fedoraproject,dc=org
|
||||||
|
{% endif %}
|
||||||
|
TLS_CACERT /etc/ipa/ca.crt
|
||||||
|
SASL_MECH GSSAPI
|
37
roles/openshift-apps/noggin/templates/noggin.cfg.py
Normal file
37
roles/openshift-apps/noggin/templates/noggin.cfg.py
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#
|
||||||
|
# This is the config file for Noggin as intended to be used in OpenShift
|
||||||
|
#
|
||||||
|
|
||||||
|
def from_file(path):
|
||||||
|
return open(path, 'r').read().strip()
|
||||||
|
|
||||||
|
# IPA settings
|
||||||
|
FREEIPA_SERVERS = ['{{ ipa_server }}']
|
||||||
|
FREEIPA_CACERT = '/etc/ipa/ca.crt'
|
||||||
|
|
||||||
|
# Cookies
|
||||||
|
SESSION_COOKIE_HTTPONLY = True
|
||||||
|
SESSION_COOKIE_SECURE = True
|
||||||
|
|
||||||
|
# FreeIPA
|
||||||
|
FREEIPA_ADMIN_USER = "noggin"
|
||||||
|
|
||||||
|
# How many minutes before a password reset request expires
|
||||||
|
PASSWORD_RESET_EXPIRATION = 10
|
||||||
|
|
||||||
|
# Email
|
||||||
|
MAIL_FROM = "Fedora Account System <fas@fedoraproject.org>"
|
||||||
|
MAIL_DEFAULT_SENDER = "Fedora Account System <fas@fedoraproject.org>"
|
||||||
|
MAIL_SERVER = "smtp.sendgrid.net"
|
||||||
|
MAIL_PORT = 587
|
||||||
|
MAIL_USE_TLS = True
|
||||||
|
MAIL_USERNAME = "apikey"
|
||||||
|
|
||||||
|
# Theme
|
||||||
|
THEME = "fas"
|
||||||
|
|
||||||
|
# Those file should be mounted from OpenShift secrets
|
||||||
|
FREEIPA_ADMIN_PASSWORD = from_file('/etc/noggin-secrets/ipa-admin')
|
||||||
|
FERNET_SECRET = from_file('/etc/noggin-secrets/fernet').encode('utf-8')
|
||||||
|
SECRET_KEY = from_file('/etc/noggin-secrets/session').encode('utf-8')
|
||||||
|
MAIL_PASSWORD = from_file('/etc/noggin-secrets/smtp')
|
17
roles/openshift-apps/noggin/templates/route.yml
Normal file
17
roles/openshift-apps/noggin/templates/route.yml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Route
|
||||||
|
metadata:
|
||||||
|
name: noggin-web
|
||||||
|
namespace: aaa
|
||||||
|
labels:
|
||||||
|
app: noggin
|
||||||
|
spec:
|
||||||
|
host: account{{ env_suffix }}.fedoraproject.org
|
||||||
|
port:
|
||||||
|
targetPort: web
|
||||||
|
to:
|
||||||
|
kind: Service
|
||||||
|
name: noggin-web
|
||||||
|
tls:
|
||||||
|
termination: edge
|
||||||
|
insecureEdgeTerminationPolicy: Redirect
|
8
roles/openshift-apps/noggin/templates/secret-webhook.yml
Normal file
8
roles/openshift-apps/noggin/templates/secret-webhook.yml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: noggin-github-webhook-secret
|
||||||
|
namespace: aaa
|
||||||
|
data:
|
||||||
|
WebHookSecretKey: "{{ (env == 'production')|ternary(noggin_github_secret, noggin_stg_github_secret) }}"
|
||||||
|
type: Opaque
|
9
roles/openshift-apps/noggin/templates/secrets.yml
Normal file
9
roles/openshift-apps/noggin/templates/secrets.yml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: noggin-secrets
|
||||||
|
namespace: aaa
|
||||||
|
stringData:
|
||||||
|
freeipa-admin-password: "{{ (env == 'production')|ternary(noggin_admin_password, noggin_stg_admin_password) }}"
|
||||||
|
fernet-secret: "{{ (env == 'production')|ternary(noggin_fernet_secret, noggin_stg_fernet_secret) }}"
|
||||||
|
session-secret: "{{ (env == 'production')|ternary(noggin_session_secret, noggin_stg_session_secret) }}"
|
4
roles/openshift-apps/noggin/templates/wsgi.py
Normal file
4
roles/openshift-apps/noggin/templates/wsgi.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
from werkzeug.middleware.proxy_fix import ProxyFix
|
||||||
|
from noggin.app import app as application
|
||||||
|
# application.wsgi_app.add_files('/etc/noggin/well-known-files', prefix='.well-known/')
|
||||||
|
application.wsgi_app = ProxyFix(application.wsgi_app, x_proto=1, x_host=1)
|
Loading…
Add table
Add a link
Reference in a new issue