From cb033e7163af14c896235d1b8407e6f5119091e4 Mon Sep 17 00:00:00 2001 From: dcore94 Date: Tue, 27 Oct 2020 13:07:57 +0100 Subject: [PATCH] added ansible roles for swarming dynomite --- ansible/playbook.yml | 5 ++ ansible/roles/common/defaults/main.yaml | 4 +- ansible/roles/common/tasks/main.yaml | 4 ++ ansible/roles/dynomite/tasks/main.yaml | 15 ++++++ .../dynomite/templates/dynomite-seed-entry.j2 | 1 - .../templates/dynomite-service.yaml.j2 | 47 ++++++++++--------- .../dynomite/templates/dynomite-swarm.yaml.j2 | 4 +- .../roles/dynomite/templates/seeds.list.j2 | 6 +++ 8 files changed, 60 insertions(+), 26 deletions(-) create mode 100644 ansible/playbook.yml create mode 100644 ansible/roles/common/tasks/main.yaml delete mode 100644 ansible/roles/dynomite/templates/dynomite-seed-entry.j2 create mode 100644 ansible/roles/dynomite/templates/seeds.list.j2 diff --git a/ansible/playbook.yml b/ansible/playbook.yml new file mode 100644 index 0000000..0385699 --- /dev/null +++ b/ansible/playbook.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + roles: + - common + - dynomite diff --git a/ansible/roles/common/defaults/main.yaml b/ansible/roles/common/defaults/main.yaml index 76c1a9a..39413cb 100644 --- a/ansible/roles/common/defaults/main.yaml +++ b/ansible/roles/common/defaults/main.yaml @@ -1,7 +1,9 @@ --- +target_path: /tmp/conductor_setup_test + conductor_network: conductor-network -dynomite_shards: 2 +dynomite_shards: 3 dynomite_replicas: 3 elasticsearch_replicas: 1 diff --git a/ansible/roles/common/tasks/main.yaml b/ansible/roles/common/tasks/main.yaml new file mode 100644 index 0000000..1bb771a --- /dev/null +++ b/ansible/roles/common/tasks/main.yaml @@ -0,0 +1,4 @@ +- name: Create target directory + file: + path: "{{ target_path }}" + state: directory diff --git a/ansible/roles/dynomite/tasks/main.yaml b/ansible/roles/dynomite/tasks/main.yaml index fbffaf2..755ce35 100644 --- a/ansible/roles/dynomite/tasks/main.yaml +++ b/ansible/roles/dynomite/tasks/main.yaml @@ -1,3 +1,18 @@ --- - name: Hello world dynomite command: echo "Hello world" + +- name: Generate seedlist + template: + src: templates/seeds.list.j2 + dest: "{{ target_path }}/seeds.list" + +- name: Prepare seeds + debug: msg="{{item}}" + loop: "{{ lookup('file', '{{ target_path}}/seeds.list').splitlines() }}" + register: seeds + +- name: Generate dynomite-swarm + template: + src: templates/dynomite-swarm.yaml.j2 + dest: "{{ target_path }}/dynomite-swarm.yaml" diff --git a/ansible/roles/dynomite/templates/dynomite-seed-entry.j2 b/ansible/roles/dynomite/templates/dynomite-seed-entry.j2 deleted file mode 100644 index e295b79..0000000 --- a/ansible/roles/dynomite/templates/dynomite-seed-entry.j2 +++ /dev/null @@ -1 +0,0 @@ -{{ service }}:8101:{{ rack }}:{{ datacenter }}:{{ token }} diff --git a/ansible/roles/dynomite/templates/dynomite-service.yaml.j2 b/ansible/roles/dynomite/templates/dynomite-service.yaml.j2 index 38cfb00..7a7d48f 100644 --- a/ansible/roles/dynomite/templates/dynomite-service.yaml.j2 +++ b/ansible/roles/dynomite/templates/dynomite-service.yaml.j2 @@ -1,22 +1,25 @@ - dynomite1: - environment: - - DYNO_NODE={{ node_seed }} - image: nubisware/autodynomite:latest - networks: - {{ conductor-network }}: - logging: - driver: "journald" - deploy: - mode: replicated - replicas: 1 - endpoint_mode: dnsrr - placement: - constraints: [node.role == worker] - restart_policy: - condition: on-failure - delay: 5s - max_attempts: 3 - window: 120s - configs: - - source: seeds.list - target: /dynomite/seeds.list + + {% for seed in seeds.results %} + {{ seed.msg.split(':')[0] }}: + environment: + - DYNO_NODE={{ seed.msg }} + image: nubisware/autodynomite:latest + networks: + {{ conductor_network }}: + logging: + driver: "journald" + deploy: + mode: replicated + replicas: 1 + endpoint_mode: dnsrr + placement: + constraints: [node.role == worker] + restart_policy: + condition: on-failure + delay: 5s + max_attempts: 3 + window: 120s + configs: + - source: seeds.list + target: /dynomite/seeds.list + {%endfor%} diff --git a/ansible/roles/dynomite/templates/dynomite-swarm.yaml.j2 b/ansible/roles/dynomite/templates/dynomite-swarm.yaml.j2 index a65519f..21fa3fb 100644 --- a/ansible/roles/dynomite/templates/dynomite-swarm.yaml.j2 +++ b/ansible/roles/dynomite/templates/dynomite-swarm.yaml.j2 @@ -1,11 +1,11 @@ version: '3.6' services: - {{ dynomyte_services }} +{% include 'dynomite-service.yaml.j2' %} networks: {{ conductor_network }}: configs: seeds.list: - file: {{ seeds_list_path }} + file: seeds.list diff --git a/ansible/roles/dynomite/templates/seeds.list.j2 b/ansible/roles/dynomite/templates/seeds.list.j2 new file mode 100644 index 0000000..5292f2c --- /dev/null +++ b/ansible/roles/dynomite/templates/seeds.list.j2 @@ -0,0 +1,6 @@ +{% for replica in range(1,dynomite_replicas+1) %} +{% set replicaloop = loop %} +{% for shard in range(1,dynomite_shards+1) %} +dynomite{{ (replicaloop.index - 1) * dynomite_shards + shard}}:8101:rack{{ replicaloop.index }}:datacenter1:{{ (shard - 1) * (4294967295 // dynomite_shards) }} +{% endfor %} +{% endfor %}