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
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
|
|
}
|
|
|