summaryrefslogtreecommitdiffstats
path: root/roles/openshift_logging/tasks/install_elasticsearch.yaml
blob: f9c2c81fb8e6cad41a156377b4ea141085fdc172 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
---
- 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()}}"

# 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] }}
  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|default([]) + [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 | int - openshift_logging_current_es_size | int }}
  check_mode: no

- name: Generate Elasticsearch DeploymentConfig
  template: src=es.j2 dest={{mktemp.stdout}}/templates/logging-{{deploy_name}}-dc.yaml
  vars:
    component: es
    logging_component: elasticsearch
    deploy_name_prefix: "logging-{{component}}"
    image: "{{openshift_logging_image_prefix}}logging-elasticsearch:{{openshift_logging_image_version}}"
    es_cluster_name: "{{component}}"
    es_cpu_limit: "{{openshift_logging_es_cpu_limit }}"
    es_memory_limit: "{{openshift_logging_es_memory_limit}}"
    volume_names: "{{es_pvc_pool | default([])}}"
    pvc_claim: "{{(volume_names | length > item.0) | ternary(volume_names[item.0], None)}}"
    deploy_name: "{{item.1}}"
    es_node_selector: "{{openshift_logging_es_nodeselector | default({})}}"
  with_indexed_items:
    - "{{ es_dc_pool }}"
  check_mode: no
  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:
    es_dcs: "{{openshift_logging_facts.elasticsearch_ops.deploymentconfigs}}"
    cluster_size: "{{openshift_logging_es_ops_cluster_size|int}}"
  when:
    - openshift_logging_use_ops | bool
    - "{{es_dcs | length - openshift_logging_es_ops_cluster_size|int | abs > 1}}"
  check_mode: no

- name: Generate PersistentVolumeClaims for Ops
  include: "{{ role_path}}/tasks/generate_pvcs.yaml"
  vars:
    es_pvc_names: "{{openshift_logging_facts.elasticsearch_ops.pvcs.keys()}}"
    es_dc_names: "{{openshift_logging_facts.elasticsearch_ops.deploymentconfigs.keys()}}"
    openshift_logging_es_pvc_prefix: "{{openshift_logging_es_ops_pvc_prefix}}"
    openshift_logging_es_cluster_size: "{{openshift_logging_es_ops_cluster_size|int}}"
    openshift_logging_es_pvc_size: "{{openshift_logging_es_ops_pvc_size}}"
    openshift_logging_es_pvc_dynamic: "{{openshift_logging_es_ops_pvc_dynamic}}"
    openshift_logging_es_pv_selector: "{{openshift_logging_es_ops_pv_selector}}"
  when:
    - openshift_logging_use_ops | bool
  check_mode: no

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

- name: Create new DeploymentConfig names for Elasticsearch Ops
  set_fact: es_ops_dc_pool={{es_ops_dc_pool | default([]) + [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|int}}"
  with_sequence: count={{ openshift_logging_es_ops_cluster_size | int - openshift_logging_current_es_ops_size | int }}
  when:
    - openshift_logging_use_ops | bool
  check_mode: no

- name: Generate Elasticsearch DeploymentConfig for Ops
  template: src=es.j2 dest={{mktemp.stdout}}/templates/logging-{{deploy_name}}-dc.yaml
  vars:
    component: es-ops
    logging_component: elasticsearch
    deploy_name_prefix: "logging-{{component}}"
    image: "{{openshift_logging_image_prefix}}logging-elasticsearch:{{openshift_logging_image_version}}"
    volume_names: "{{es_pvc_pool | default([])}}"
    pvc_claim: "{{(volume_names | length > item.0) | ternary(volume_names[item.0], None)}}"
    deploy_name: "{{item.1}}"
    es_cluster_name: "{{component}}"
    es_cpu_limit: "{{openshift_logging_es_ops_cpu_limit }}"
    es_memory_limit: "{{openshift_logging_es_ops_memory_limit}}"
    es_node_quorum: "{{es_ops_node_quorum}}"
    es_recover_after_nodes: "{{es_ops_recover_after_nodes}}"
    es_recover_expected_nodes: "{{es_ops_recover_expected_nodes}}"
    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_ops_dc_pool | default([]) }}"
  when:
    - openshift_logging_use_ops | bool
  check_mode: no
  changed_when: no