From dbf77137f8b7e18e101555329b2153825e5f8dbd Mon Sep 17 00:00:00 2001 From: Zack Cerza Date: Fri, 4 May 2018 12:04:13 -0600 Subject: [PATCH] ansible: Set CPU quotas on containers We want to default to limiting each container to two cores. While docker has a nicer way to do this, it isn't supported by ansible as of 2.5.2. It's easy enough to use the slightly more awkward method, however. Signed-off-by: Zack Cerza --- ansible/roles/ceph-grafana/defaults/main.yml | 2 ++ ansible/roles/ceph-grafana/tasks/setup_container.yml | 2 ++ ansible/roles/ceph-prometheus/defaults/main.yml | 2 ++ ansible/roles/ceph-prometheus/tasks/setup_container.yml | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/ansible/roles/ceph-grafana/defaults/main.yml b/ansible/roles/ceph-grafana/defaults/main.yml index 570fc86..b6649c4 100644 --- a/ansible/roles/ceph-grafana/defaults/main.yml +++ b/ansible/roles/ceph-grafana/defaults/main.yml @@ -6,6 +6,8 @@ defaults: update_alerts: false grafana: container_name: "grafana/grafana" + container_cpu_period: 100000 + container_cpu_cores: 2 # version currently only applies to containers version: 5.0.4 datasource: Local diff --git a/ansible/roles/ceph-grafana/tasks/setup_container.yml b/ansible/roles/ceph-grafana/tasks/setup_container.yml index d8107e2..57ab071 100644 --- a/ansible/roles/ceph-grafana/tasks/setup_container.yml +++ b/ansible/roles/ceph-grafana/tasks/setup_container.yml @@ -40,6 +40,8 @@ - name: "{{ docker.network_name }}" keep_volumes: true pull: true + cpu_period: "{{ grafana.container_cpu_period }}" + cpu_quota: "{{ grafana.container_cpu_period * grafana.container_cpu_cores }}" env: GF_INSTALL_PLUGINS: "{{ grafana.plugins|join(',') }}" diff --git a/ansible/roles/ceph-prometheus/defaults/main.yml b/ansible/roles/ceph-prometheus/defaults/main.yml index 6e0cbe9..256d299 100644 --- a/ansible/roles/ceph-prometheus/defaults/main.yml +++ b/ansible/roles/ceph-prometheus/defaults/main.yml @@ -2,6 +2,8 @@ defaults: prometheus: container_name: prom/prometheus + container_cpu_period: 100000 + container_cpu_cores: 2 version: latest data_dir: /var/lib/cephmetrics user_id: '65534' # This is the UID used by the prom/prometheus docker image diff --git a/ansible/roles/ceph-prometheus/tasks/setup_container.yml b/ansible/roles/ceph-prometheus/tasks/setup_container.yml index 228b95c..17622ba 100644 --- a/ansible/roles/ceph-prometheus/tasks/setup_container.yml +++ b/ansible/roles/ceph-prometheus/tasks/setup_container.yml @@ -21,4 +21,8 @@ user: "{{ prometheus.user_id }}" keep_volumes: true pull: true + cpu_period: "{{ prometheus.container_cpu_period }}" + # As of ansible-2.5.2, this module doesn't support the equivalent of the + # --cpus flag, so we must use period/quota for now + cpu_quota: "{{ prometheus.container_cpu_period * prometheus.container_cpu_cores }}" notify: Service handler -- 2.47.3