My personal website
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

67 lines
1.8 KiB

---
- name: Change the QoS class of commodity projects
hosts: localhost
gather_facts: no
vars:
namespace_blacklist:
- default
- openshift-sdn
- openshift-monitoring
- openshift-console
- openshift-web-console
tasks:
- name: Make sure we are logged in on the CLI
command: oc whoami
changed_when: false
- name: Get a list of all DeploymentConfig on our OpenShift cluster
command: oc get dc -o json --all-namespaces
register: oc_get_dc
changed_when: false
- name: Get a list of all Deployment on our OpenShift cluster
command: oc get deploy -o json --all-namespaces
register: oc_get_deploy
changed_when: false
- name: Get a list of all StatefulSet on our OpenShift cluster
command: oc get sts -o json --all-namespaces
register: oc_get_sts
changed_when: false
- block:
- debug:
var: to_update
verbosity: 1
- debug:
msg: 'Will update {{ to_update|length }} objects'
- pause:
prompt: 'Proceed ?'
- name: Change the QoS class to "Best Effort"
command: >
oc set resources {{ obj.kind }} {{ obj.name }} -n {{ obj.namespace }}
--requests=cpu=0,memory=0 --limits=cpu=0,memory=0
loop: '{{ to_update }}'
loop_control:
loop_var: obj
when: obj.namespace not in namespace_blacklist
vars:
all_objects: >
{{ (oc_get_dc.stdout|from_json)['items'] }}
+ {{ (oc_get_deploy.stdout|from_json)['items'] }}
+ {{ (oc_get_sts.stdout|from_json)['items'] }}
to_update: '{{ all_objects|json_query(json_query) }}'
json_query: >
[? spec.template.spec.containers[].resources.requests
|| spec.template.spec.containers[].resources.limits ].{
name: metadata.name,
namespace: metadata.namespace,
kind: kind
}