Created
June 30, 2020 20:10
-
-
Save liveaverage/17f039e9d751e5d7edc8873b045adbc1 to your computer and use it in GitHub Desktop.
OCP 4 Project Provisioning and Quota Assignment
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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