mote_v2: deploy test instance on staging
This commit is contained in:
parent
728d9b9c92
commit
6da3a74b2c
11 changed files with 458 additions and 0 deletions
86
playbooks/openshift-apps/mote.yml
Normal file
86
playbooks/openshift-apps/mote.yml
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
- name: make the app be real
|
||||||
|
hosts: os_control_stg[0]
|
||||||
|
user: root
|
||||||
|
gather_facts: False
|
||||||
|
vars:
|
||||||
|
app: mote
|
||||||
|
vars_files:
|
||||||
|
- /srv/web/infra/ansible/vars/global.yml
|
||||||
|
- "/srv/private/ansible/vars.yml"
|
||||||
|
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: openshift/project
|
||||||
|
description: Mote v2
|
||||||
|
appowners:
|
||||||
|
- darknao
|
||||||
|
- t0xic0der
|
||||||
|
tags:
|
||||||
|
- appowners
|
||||||
|
|
||||||
|
- role: openshift/imagestream
|
||||||
|
imagename: mote
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
template: buildconfig.yml
|
||||||
|
objectname: buildconfig.yml
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
template: mote-dc.yml
|
||||||
|
objectname: mote-dc.yml
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
template: mote-worker-dc.yml
|
||||||
|
objectname: mote-worker-dc.yml
|
||||||
|
|
||||||
|
# meetbot is not advertising on fedmsg.stg
|
||||||
|
- role: openshift/object
|
||||||
|
template: fedmsg-dc.yml
|
||||||
|
objectname: fedmsg-dc.yml
|
||||||
|
when: env == "production"
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
template: redis-dc.yml
|
||||||
|
objectname: redis-dc.yml
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
file: redis-svc.yml
|
||||||
|
objectname: redis-svc.yml
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
file: mote-svc.yml
|
||||||
|
objectname: mote-svc.yml
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
file: mote-cm.yml
|
||||||
|
objectname: mote-cm.yml
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
file: fedmsg-cm.yml
|
||||||
|
objectname: fedmsg-cm.yml
|
||||||
|
when: env == "production"
|
||||||
|
|
||||||
|
- role: openshift/object
|
||||||
|
template: pvc.yml
|
||||||
|
objectname: pvc.yml
|
||||||
|
|
||||||
|
- role: openshift/route
|
||||||
|
routename: mote
|
||||||
|
serviceport: mote-tcp
|
||||||
|
servicename: mote
|
||||||
|
|
||||||
|
- role: openshift/start-build
|
||||||
|
buildname: mote
|
||||||
|
objectname: mote
|
||||||
|
|
||||||
|
#
|
||||||
|
###############################################
|
||||||
|
# actions to delete the project from OpenShift
|
||||||
|
###############################################
|
||||||
|
# to run: sudo rbac-playbook -l os_control_stg[0] -t delete openshift-apps/mote.yml
|
||||||
|
- role: openshift/object-delete
|
||||||
|
objecttype: project
|
||||||
|
objectname: mote
|
||||||
|
tags:
|
||||||
|
- never
|
||||||
|
- delete
|
29
roles/openshift-apps/mote/templates/buildconfig.yml
Normal file
29
roles/openshift-apps/mote/templates/buildconfig.yml
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
apiVersion: build.openshift.io/v1
|
||||||
|
kind: BuildConfig
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: mote
|
||||||
|
name: mote
|
||||||
|
spec:
|
||||||
|
failedBuildsHistoryLimit: 5
|
||||||
|
output:
|
||||||
|
to:
|
||||||
|
kind: ImageStreamTag
|
||||||
|
name: mote:latest
|
||||||
|
runPolicy: Serial
|
||||||
|
source:
|
||||||
|
git:
|
||||||
|
ref: cal_theme
|
||||||
|
uri: https://github.com/darknao/mote.git
|
||||||
|
type: Git
|
||||||
|
strategy:
|
||||||
|
type: Docker
|
||||||
|
successfulBuildsHistoryLimit: 5
|
||||||
|
triggers:
|
||||||
|
{% if mote_stg_github_secret is defined and env == 'staging' %}
|
||||||
|
- type: GitHub
|
||||||
|
github:
|
||||||
|
secret: "{{ mote_stg_github_secret }}"
|
||||||
|
{% endif %}
|
||||||
|
- type: ConfigChange
|
||||||
|
- type: ImageChange
|
71
roles/openshift-apps/mote/templates/fedmsg-cm.yml
Normal file
71
roles/openshift-apps/mote/templates/fedmsg-cm.yml
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: fedora-messaging
|
||||||
|
data:
|
||||||
|
config.toml: |
|
||||||
|
amqp_url = "amqps://fedora:@rabbitmq{{ env_suffix }}.fedoraproject.org/%2Fpublic_pubsub"
|
||||||
|
callback = "fedora_messaging.example:printer"
|
||||||
|
|
||||||
|
[tls]
|
||||||
|
ca_cert = "/opt/app/mote/fedora-messaging/cacert.pem"
|
||||||
|
keyfile = "/opt/app/mote/fedora-messaging/fedora-key.pem"
|
||||||
|
certfile = "/opt/app/mote/fedora-messaging/fedora-cert.pem"
|
||||||
|
|
||||||
|
[client_properties]
|
||||||
|
app = "Mote"
|
||||||
|
app_url = "https://github.com/fedora-infra/mote"
|
||||||
|
app_contacts_email = ["darknao@fedoraproject.org", "akashdeep.dhar@gmail.com"]
|
||||||
|
|
||||||
|
[exchanges."amq.topic"]
|
||||||
|
type = "topic"
|
||||||
|
durable = true
|
||||||
|
auto_delete = false
|
||||||
|
arguments = {}
|
||||||
|
|
||||||
|
[queues.4321048e-0e18-46e4-8722-6651dcdfe953]
|
||||||
|
durable = false
|
||||||
|
auto_delete = true
|
||||||
|
exclusive = true
|
||||||
|
arguments = {}
|
||||||
|
|
||||||
|
[[bindings]]
|
||||||
|
queue = "4321048e-0e18-46e4-8722-6651dcdfe953"
|
||||||
|
exchange = "amq.topic"
|
||||||
|
routing_keys = [ "org.fedoraproject.*.meetbot.meeting.complete" ]
|
||||||
|
|
||||||
|
[qos]
|
||||||
|
prefetch_size = 0
|
||||||
|
prefetch_count = 25
|
||||||
|
|
||||||
|
[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.loggers.twisted]
|
||||||
|
level = "INFO"
|
||||||
|
propagate = false
|
||||||
|
handlers = ["console"]
|
||||||
|
|
||||||
|
[log_config.loggers.pika]
|
||||||
|
level = "WARNING"
|
||||||
|
propagate = false
|
||||||
|
handlers = ["console"]
|
||||||
|
|
||||||
|
[log_config.root]
|
||||||
|
level = "ERROR"
|
||||||
|
handlers = ["console"]
|
||||||
|
|
54
roles/openshift-apps/mote/templates/fedmsg-dc.yml
Normal file
54
roles/openshift-apps/mote/templates/fedmsg-dc.yml
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
apiVersion: apps.openshift.io/v1
|
||||||
|
kind: DeploymentConfig
|
||||||
|
metadata:
|
||||||
|
name: fedmsg
|
||||||
|
labels:
|
||||||
|
app: fedmsg
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
app: fedmsg
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: fedmsg
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: image-registry.openshift-image-registry.svc:5000/mote/mote
|
||||||
|
name: fedmsg
|
||||||
|
command:
|
||||||
|
- python
|
||||||
|
- -m
|
||||||
|
- mote.consume
|
||||||
|
env:
|
||||||
|
- name: REDIS_URL
|
||||||
|
value: "redis://redis.{{ app }}.svc.cluster.local"
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /etc/fedora-messaging/config.py
|
||||||
|
name: fedmsg-config
|
||||||
|
readOnly: true
|
||||||
|
subPath: config.toml
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 100Mi
|
||||||
|
requests:
|
||||||
|
cpu: '0'
|
||||||
|
memory: 50Mi
|
||||||
|
volumes:
|
||||||
|
- configMap:
|
||||||
|
defaultMode: 420
|
||||||
|
name: fedora-messaging
|
||||||
|
name: fedmsg-config
|
||||||
|
restartPolicy: Always
|
||||||
|
triggers:
|
||||||
|
- type: ConfigChange
|
||||||
|
- type: ImageChange
|
||||||
|
imageChangeParams:
|
||||||
|
automatic: true
|
||||||
|
from:
|
||||||
|
kind: ImageStreamTag
|
||||||
|
name: mote:latest
|
||||||
|
containerNames:
|
||||||
|
- "fedmsg"
|
14
roles/openshift-apps/mote/templates/mote-cm.yml
Normal file
14
roles/openshift-apps/mote/templates/mote-cm.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: mote
|
||||||
|
data:
|
||||||
|
config.py: |
|
||||||
|
MEETING_DIR = "/srv/web/meetbot"
|
||||||
|
MEETBOT_URL = "https://meetbot.fedoraproject.org"
|
||||||
|
MEETBOT_RAW_URL = "https://meetbot-raw.fedoraproject.org"
|
||||||
|
DATAGREPPER_BASE_URL = "https://apps.fedoraproject.org"
|
||||||
|
RECOGNIITION_PATTERN = r"(.*)[\-\.]([0-9]{4}-[0-9]{2}-[0-9]{2})-([0-9]{2}\.[0-9]{2})"
|
||||||
|
CACHE_TYPE = "RedisCache"
|
||||||
|
CACHE_REDIS_URL = "redis://redis.{{ app }}.svc.cluster.local"
|
||||||
|
CACHE_DEFAULT_TIMEOUT = 0
|
52
roles/openshift-apps/mote/templates/mote-dc.yml
Normal file
52
roles/openshift-apps/mote/templates/mote-dc.yml
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
apiVersion: apps.openshift.io/v1
|
||||||
|
kind: DeploymentConfig
|
||||||
|
metadata:
|
||||||
|
name: mote
|
||||||
|
labels:
|
||||||
|
app: mote
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
app: mote
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: mote
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: image-registry.openshift-image-registry.svc:5000/mote/mote
|
||||||
|
name: mote
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /srv/web/meetbot
|
||||||
|
name: meetbot
|
||||||
|
- mountPath: /opt/app/mote/config.py
|
||||||
|
name: mote-config
|
||||||
|
readOnly: true
|
||||||
|
subPath: config.py
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 500Mi
|
||||||
|
requests:
|
||||||
|
cpu: '0'
|
||||||
|
memory: 50Mi
|
||||||
|
volumes:
|
||||||
|
- name: meetbot
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: meetbot-storage
|
||||||
|
- configMap:
|
||||||
|
defaultMode: 420
|
||||||
|
name: mote
|
||||||
|
name: mote-config
|
||||||
|
restartPolicy: Always
|
||||||
|
triggers:
|
||||||
|
- type: ConfigChange
|
||||||
|
- type: ImageChange
|
||||||
|
imageChangeParams:
|
||||||
|
automatic: true
|
||||||
|
from:
|
||||||
|
kind: ImageStreamTag
|
||||||
|
name: mote:latest
|
||||||
|
containerNames:
|
||||||
|
- "mote"
|
16
roles/openshift-apps/mote/templates/mote-svc.yml
Normal file
16
roles/openshift-apps/mote/templates/mote-svc.yml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: mote
|
||||||
|
name: mote
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: mote-tcp
|
||||||
|
port: 9696
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9696
|
||||||
|
selector:
|
||||||
|
app: mote
|
||||||
|
type: ClusterIP
|
||||||
|
|
62
roles/openshift-apps/mote/templates/mote-worker-dc.yml
Normal file
62
roles/openshift-apps/mote/templates/mote-worker-dc.yml
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
apiVersion: apps.openshift.io/v1
|
||||||
|
kind: DeploymentConfig
|
||||||
|
metadata:
|
||||||
|
name: mote-worker
|
||||||
|
labels:
|
||||||
|
app: mote-worker
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
app: mote-worker
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: mote-worker
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: image-registry.openshift-image-registry.svc:5000/mote/mote
|
||||||
|
command:
|
||||||
|
- python
|
||||||
|
- -m
|
||||||
|
- mote.worker
|
||||||
|
env:
|
||||||
|
- name: REDIS_URL
|
||||||
|
value: "redis://redis.{{ app }}.svc.cluster.local"
|
||||||
|
- name: LOGLEVEL
|
||||||
|
value: "20"
|
||||||
|
|
||||||
|
name: mote-worker
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /srv/web/meetbot
|
||||||
|
name: meetbot
|
||||||
|
- mountPath: /opt/app/mote/config.py
|
||||||
|
name: mote-config
|
||||||
|
readOnly: true
|
||||||
|
subPath: config.py
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 1Gi
|
||||||
|
requests:
|
||||||
|
cpu: '0'
|
||||||
|
memory: 500Mi
|
||||||
|
volumes:
|
||||||
|
- name: meetbot
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: meetbot-storage
|
||||||
|
- configMap:
|
||||||
|
defaultMode: 420
|
||||||
|
name: mote
|
||||||
|
name: mote-config
|
||||||
|
restartPolicy: Always
|
||||||
|
triggers:
|
||||||
|
- type: ConfigChange
|
||||||
|
- type: ImageChange
|
||||||
|
imageChangeParams:
|
||||||
|
automatic: true
|
||||||
|
from:
|
||||||
|
kind: ImageStreamTag
|
||||||
|
name: mote:latest
|
||||||
|
containerNames:
|
||||||
|
- "mote-worker"
|
23
roles/openshift-apps/mote/templates/pvc.yml
Normal file
23
roles/openshift-apps/mote/templates/pvc.yml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: meetbot-storage
|
||||||
|
spec:
|
||||||
|
{% if env == 'staging' %}
|
||||||
|
# For stg, we use a simple ceph volume
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
||||||
|
storageClassName: ocs-storagecluster-ceph-rbd
|
||||||
|
{% else %}
|
||||||
|
# On prod, we use a nfs volume shared with meetbot on value02
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 5Gi
|
||||||
|
storageClassName: ""
|
||||||
|
volumeName: meetbot-storage
|
||||||
|
{% endif %}
|
35
roles/openshift-apps/mote/templates/redis-dc.yml
Normal file
35
roles/openshift-apps/mote/templates/redis-dc.yml
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
apiVersion: apps.openshift.io/v1
|
||||||
|
kind: DeploymentConfig
|
||||||
|
metadata:
|
||||||
|
name: redis
|
||||||
|
labels:
|
||||||
|
app: redis
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
app: redis
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: redis
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: docker.io/redis:latest
|
||||||
|
args:
|
||||||
|
- redis-server
|
||||||
|
name: redis
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /data
|
||||||
|
name: redis-data
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 1Gi
|
||||||
|
requests:
|
||||||
|
cpu: '0'
|
||||||
|
memory: 500Mi
|
||||||
|
volumes:
|
||||||
|
- emptyDir: {}
|
||||||
|
name: redis-data
|
||||||
|
restartPolicy: Always
|
16
roles/openshift-apps/mote/templates/redis-svc.yml
Normal file
16
roles/openshift-apps/mote/templates/redis-svc.yml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: redis
|
||||||
|
name: redis
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: redis-tcp
|
||||||
|
port: 6379
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 6379
|
||||||
|
selector:
|
||||||
|
app: redis
|
||||||
|
type: ClusterIP
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue