Browse Source

Updating to reuse previous ES DC names and always generate DCs

ewolinetz 8 years ago
parent
commit
8ba0486209
1 changed files with 29 additions and 17 deletions
  1. 29 17
      roles/openshift_logging/tasks/install_elasticsearch.yaml

+ 29 - 17
roles/openshift_logging/tasks/install_elasticsearch.yaml

@@ -1,25 +1,31 @@
 ---
+- name: Getting current ES deployment size
+  set_fact: openshift_logging_current_es_size={{ openshift_logging_facts.elasticsearch.deploymentconfigs.keys() | length }}
+
 - name: Generate PersistentVolumeClaims
   include: "{{ role_path}}/tasks/generate_pvcs.yaml"
   vars:
     es_pvc_names: "{{openshift_logging_facts.elasticsearch.pvcs.keys()}}"
     es_dc_names: "{{openshift_logging_facts.elasticsearch.deploymentconfigs.keys()}}"
-  when:
-    - "{{ openshift_logging_facts.elasticsearch.deploymentconfigs.keys() | length < openshift_logging_es_cluster_size }}"
 
+# we should initialize the es_dc_pool with the current keys
 - name: Init pool of DeploymentConfig names for Elasticsearch
-  set_fact: es_dc_pool={{es_dc_pool | default([]) + [deploy_name]}}
+  set_fact: es_dc_pool={{ es_dc_pool | default([]) + [deploy_name] }}
+  with_items: "{{ openshift_logging_facts.elasticsearch.deploymentconfigs.keys() }}"
+  loop_control:
+    loop_var: deploy_name
+
+# This should be used to generate new DC names if necessary
+- name: Create new DeploymentConfig names for Elasticsearch
+  set_fact: es_dc_pool={{es_dc_pool + [deploy_name]}}
   vars:
     component: es
     es_cluster_name: "{{component}}"
     deploy_name_prefix: "logging-{{component}}"
     deploy_name: "{{deploy_name_prefix}}-{{'abcdefghijklmnopqrstuvwxyz0123456789'|random_word(8)}}"
-  with_sequence: count={{(openshift_logging_es_cluster_size - openshift_logging_facts.elasticsearch.deploymentconfigs.keys() | length) | abs}}
-  when:
-    - "{{ openshift_logging_facts.elasticsearch.deploymentconfigs.keys() | length < openshift_logging_es_cluster_size }}"
+  with_sequence: count={{(openshift_logging_es_cluster_size | int - openshift_logging_current_es_size | int) | abs}}
   check_mode: no
 
-
 - name: Generate Elasticsearch DeploymentConfig
   template: src=es.j2 dest={{mktemp.stdout}}/templates/logging-{{deploy_name}}-dc.yaml
   vars:
@@ -35,14 +41,15 @@
     deploy_name: "{{item.1}}"
     es_node_selector: "{{openshift_logging_es_nodeselector | default({})}}"
   with_indexed_items:
-    - "{{es_dc_pool | default([])}}"
+    - "{{ es_dc_pool }}"
   check_mode: no
-  when:
-    - "{{ openshift_logging_facts.elasticsearch.deploymentconfigs.keys() | length < openshift_logging_es_cluster_size }}"
   changed_when: no
 
 # --------- Tasks for Operation clusters ---------
 
+- name: Getting current ES deployment size
+  set_fact: openshift_logging_current_es_ops_size={{ openshift_logging_facts.elasticsearch_ops.deploymentconfigs.keys() | length }}
+
 - name: Validate Elasticsearch cluster size for Ops
   fail: msg="The openshift_logging_es_ops_cluster_size may not be scaled down more than 1 less (or 0) the number of Elasticsearch nodes already deployed"
   vars:
@@ -65,21 +72,27 @@
     openshift_logging_es_pv_selector: "{{openshift_logging_es_ops_pv_selector}}"
   when:
     - openshift_logging_use_ops
-    - "{{ openshift_logging_facts.elasticsearch_ops.deploymentconfigs.keys() | length < openshift_logging_es_ops_cluster_size }}"
   check_mode: no
 
-- name: Init pool of DeploymentConfig names for Elasticsearch for Ops
-  set_fact: es_dc_pool_ops={{es_dc_pool_ops | default([]) + [deploy_name]}}
+- name: Init pool of DeploymentConfig names for Elasticsearch Ops
+  set_fact: es_ops_dc_pool={{ es_ops_dc_pool | default([]) + [deploy_name] }}
+  with_items: "{{ openshift_logging_facts.elasticsearch_ops.deploymentconfigs.keys() }}"
+  loop_control:
+    loop_var: deploy_name
+  when:
+    - openshift_logging_use_ops
+
+- name: Create new DeploymentConfig names for Elasticsearch Ops
+  set_fact: es_ops_dc_pool={{es_ops_dc_pool + [deploy_name]}}
   vars:
     component: es-ops
     es_cluster_name: "{{component}}"
     deploy_name_prefix: "logging-{{component}}"
     deploy_name: "{{deploy_name_prefix}}-{{'abcdefghijklmnopqrstuvwxyz0123456789'|random_word(8)}}"
     cluster_size: "{{openshift_logging_es_ops_cluster_size}}"
-  with_sequence: count={{openshift_logging_es_ops_cluster_size - openshift_logging_facts.elasticsearch_ops.deploymentconfigs.keys() | length}}
+  with_sequence: count={{ openshift_logging_es_ops_cluster_size | int - openshift_logging_current_es_ops_size | int }}
   when:
     - openshift_logging_use_ops
-    - "{{ openshift_logging_facts.elasticsearch_ops.deploymentconfigs.keys() | length < openshift_logging_es_ops_cluster_size }}"
   check_mode: no
 
 - name: Generate Elasticsearch DeploymentConfig for Ops
@@ -101,9 +114,8 @@
     openshift_logging_es_recover_after_time: "{{openshift_logging_es_ops_recover_after_time}}"
     es_node_selector: "{{openshift_logging_es_ops_nodeselector | default({})}}"
   with_indexed_items:
-    - "{{es_dc_pool_ops | default([])}}"
+    - "{{ es_ops_dc_pool | default([]) }}"
   when:
     - openshift_logging_use_ops
-    - "{{ openshift_logging_facts.elasticsearch_ops.deploymentconfigs.keys() | length < openshift_logging_es_ops_cluster_size }}"
   check_mode: no
   changed_when: no