Skip to content

Instantly share code, notes, and snippets.

@liveaverage
Created June 30, 2020 20:10
Show Gist options
  • Save liveaverage/17f039e9d751e5d7edc8873b045adbc1 to your computer and use it in GitHub Desktop.
Save liveaverage/17f039e9d751e5d7edc8873b045adbc1 to your computer and use it in GitHub Desktop.
OCP 4 Project Provisioning and Quota Assignment
- name: Create OpenShift Resources
hosts: localhost
connection: local
vars:
oc_master: lab.gxr.me
requestor: jrmorgan
useremail: [email protected]
project: sample
initjenkins: no
quota: silver
tasks:
- name: Create project
shell: |
oc new-project {{ project }} \
--description='Created using Ansible for user {{ requestor }}' \
--display-name='{{ project | upper }} - {{ requestor }}' || true
delegate_to: "{{ oc_master }}"
register: result_project
ignore_errors: true
when: project != "managed-cfme-resources"
- set_fact:
quota_manifest: "{{ lookup('file', 'files/' + quota + '.yaml') }}"
- name: Create project quota
shell: |
cat << EOF | oc apply -n {{ project }} -f -
{{ quota_manifest }}
EOF
when: project != "managed-cfme-resources"
ignore_errors: true
delegate_to: "{{ oc_master }}"
- name: Create user
shell: |
oc create user {{ requestor }} --full-name="{{ requestor_name | default(requestor) }}" || true
delegate_to: "{{ oc_master }}"
ignore_errors: true
- name: Add project role Admin to a user
shell: |
oc policy add-role-to-user admin {{ requestor }} -n {{ project }}
delegate_to: "{{ oc_master }}"
when: project != "managed-cfme-resources"
- name: Initialize Jenkins
shell: |
oc new-app jenkins-ephemeral --name jenkins-{{ requestor }} \
-l owner={{ requestor }} \
-p JENKINS_SERVICE_NAME=jenkins-{{ requestor }} \
-p JNLP_SERVICE_NAME=jenkins-{{ requestor }}-jnlp \
-n {{ project }} || true
sleep 5
delegate_to: "{{ oc_master }}"
ignore_errors: true
when: (initjenkins | lower) == "yes"
- name: Get Jenkins Route
shell: |
oc get route jenkins-{{ requestor }} -n {{ project }} --no-headers | awk '{print($2)}'
delegate_to: "{{ oc_master }}"
register: route
ignore_errors: true
when: (initjenkins | lower) == "yes"
- name: Get Console Route
shell: |
oc get route console -n openshift-console --no-headers | awk '{print($2)}'
delegate_to: "{{ oc_master }}"
register: console
ignore_errors: true
- name: Notify User via Email
mail:
host: "{{ oc_master }}"
to: "{{ useremail }}"
from: "[email protected] (CloudForms Automation)"
subject: "Your CloudForms Automation Request is Complete: {{ project }}"
body: |
The details of your request can be found below:
OpenShift Project: {{ project }}
{% if (initjenkins | lower) == "yes" %}
Jenkins Deployment: https://{{ route.stdout }}
{% endif %}
{% if project != "managed-cfme-resources" %}
Quota Tier Assigned: {{ quota | upper }}
Log in to OpenShift: https://{{ console.stdout }}
{% endif %}
- name: Delete project
shell: |
oc delete project {{ project }}
delegate_to: "{{ oc_master }}"
ignore_errors: true
when: project != "managed-cfme-resources"
tags:
- retire
- name: Delete Managed Jenkins Resources
shell: |
oc delete all -l owner={{ requestor }} -n {{ project }}
oc delete sa jenkins-{{ requestor }}
oc delete rolebinding jenkins-{{ requestor }}_edit
delegate_to: "{{ oc_master }}"
ignore_errors: true
when: project == "managed-cfme-resources"
tags:
- retire
apiVersion: v1
kind: ResourceQuota
metadata:
name: quota-silver
spec:
hard:
pods: "4"
requests.cpu: "1"
requests.memory: 2Gi
limits.cpu: "2"
limits.memory: 3Gi
---
apiVersion: "v1"
kind: "LimitRange"
metadata:
name: "base-project-limit"
spec:
limits:
- type: "Container"
default:
cpu: "300m"
memory: "1Gi"
defaultRequest:
cpu: "50m"
memory: "128Mi"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment