Skip to content

Commit 4da9688

Browse files
committed
Add clause to call elasticstack role only if needed
The global "meta" role elasticstack is imported in each role. But it is only needed to import it once for each host.
1 parent c8342dd commit 4da9688

File tree

6 files changed

+37
-26
lines changed

6 files changed

+37
-26
lines changed

roles/beats/tasks/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
- name: Include global role
44
ansible.builtin.import_role:
55
name: netways.elasticstack.elasticstack
6+
when: not hostvars[inventory_hostname]._elasticstack_role_imported | default(false)
67

78
- name: Update apt cache.
89
ansible.builtin.apt:

roles/elasticsearch/tasks/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
- name: Include global role
1111
ansible.builtin.import_role:
1212
name: netways.elasticstack.elasticstack
13+
when: not hostvars[inventory_hostname]._elasticstack_role_imported | default(false)
1314

1415
- name: Update apt cache.
1516
ansible.builtin.apt:

roles/elasticstack/tasks/main.yml

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,40 @@
11
---
2+
- name: Include elasticstack role
3+
when: not hostvars[inventory_hostname]._elasticstack_role_imported | default(false) # Ensure the global meta role is only called once for each host
4+
block:
5+
- name: Include OS specific vars
6+
ansible.builtin.include_vars: '{{ item }}'
7+
with_first_found:
8+
- '{{ ansible_os_family }}_{{ ansible_distribution_major_version }}.yml'
9+
- '{{ ansible_os_family }}.yml'
210

3-
- name: Include OS specific vars
4-
ansible.builtin.include_vars: '{{ item }}'
5-
with_first_found:
6-
- '{{ ansible_os_family }}_{{ ansible_distribution_major_version }}.yml'
7-
- '{{ ansible_os_family }}.yml'
11+
- name: Set elasticstack_ca_host variable if not already done by user
12+
ansible.builtin.set_fact:
13+
elasticstack_ca: "{{ groups[elasticstack_elasticsearch_group_name][0] }}"
14+
when:
15+
- elasticstack_ca_host is undefined
16+
- groups[elasticstack_elasticsearch_group_name][0] is defined
817

9-
- name: Set elasticstack_ca_host variable if not already done by user
10-
ansible.builtin.set_fact:
11-
elasticstack_ca: "{{ groups[elasticstack_elasticsearch_group_name][0] }}"
12-
when:
13-
- elasticstack_ca_host is undefined
14-
- groups[elasticstack_elasticsearch_group_name][0] is defined
18+
- name: Set elasticstack_ca_host variable if not already set to Elasticsearch server
19+
ansible.builtin.set_fact:
20+
elasticstack_ca_host: "{{ groups[elasticstack_logstash_group_name][0] }}"
21+
when:
22+
- elasticstack_ca_host is undefined
23+
- groups[elasticstack_logstash_group_name][0] is defined
1524

16-
- name: Set elasticstack_ca_host variable if not already set to Elasticsearch server
17-
ansible.builtin.set_fact:
18-
elasticstack_ca_host: "{{ groups[elasticstack_logstash_group_name][0] }}"
19-
when:
20-
- elasticstack_ca_host is undefined
21-
- groups[elasticstack_logstash_group_name][0] is defined
25+
- name: Set versions for components
26+
ansible.builtin.import_tasks: elasticstack-versions.yml
2227

23-
- name: Set versions for components
24-
ansible.builtin.import_tasks: elasticstack-versions.yml
28+
- name: Fetch passwords if passwords are initialized
29+
ansible.builtin.import_tasks: elasticstack-passwords.yml
2530

26-
- name: Fetch passwords if passwords are initialized
27-
ansible.builtin.import_tasks: elasticstack-passwords.yml
31+
- name: Set elasticstack_globals_set for other roles to skip this role
32+
ansible.builtin.set_fact:
33+
elasticstack_globals_set: true
2834

29-
- name: Set elasticstack_globals_set for other roles to skip this role
30-
ansible.builtin.set_fact:
31-
elasticstack_globals_set: true
35+
- name: Install common packages and dependencies
36+
ansible.builtin.import_tasks: packages.yml
3237

33-
- name: Install common packages and dependencies
34-
ansible.builtin.import_tasks: packages.yml
38+
- name: Register elasticstack role has run for that host
39+
ansible.builtin.set_fact:
40+
_elasticstack_role_imported: true

roles/kibana/tasks/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
- name: Include global role
1111
ansible.builtin.import_role:
1212
name: netways.elasticstack.elasticstack
13+
when: not hostvars[inventory_hostname]._elasticstack_role_imported | default(false)
1314

1415
- name: Update apt cache.
1516
ansible.builtin.apt:

roles/logstash/tasks/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
- name: Include global role
44
ansible.builtin.import_role:
55
name: netways.elasticstack.elasticstack
6+
when: not hostvars[inventory_hostname]._elasticstack_role_imported | default(false)
67

78
- name: Update apt cache.
89
ansible.builtin.apt:

roles/repos/tasks/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
- name: Include global role
44
ansible.builtin.import_role:
55
name: netways.elasticstack.elasticstack
6+
when: not hostvars[inventory_hostname]._elasticstack_role_imported | default(false)
67

78
- name: Import RedHat tasks
89
ansible.builtin.import_tasks: redhat.yml

0 commit comments

Comments
 (0)