Split mongodb server and cluster installations
There is no retry feature for cmd.run modulte in 2016 salt.
We need to add retry during installation on pipeline level.
Change-Id: I7eb62bf4281d6611a2cc122ecb09b281303534d9
Related-PROD: PROD-20452
diff --git a/mongodb/cluster.sls b/mongodb/cluster.sls
new file mode 100644
index 0000000..b1af4a7
--- /dev/null
+++ b/mongodb/cluster.sls
@@ -0,0 +1,87 @@
+{%- from "mongodb/map.jinja" import server with context %}
+
+{%- if server.get('enabled', False) %}
+
+mongodb_service_running:
+ service.running:
+ - name: {{ server.service }}
+ - enable: true
+ {%- if grains.get('noservices') %}
+ - onlyif: /bin/false
+ {%- endif %}
+
+{%- if server.members is defined and server.master == pillar.linux.system.name %}
+
+/var/tmp/mongodb_cluster.js:
+ file.managed:
+ - source: salt://mongodb/files/cluster.js
+ - template: jinja
+ - mode: 600
+ - user: root
+ - require:
+ - service: mongodb_service_running
+
+mongodb_setup_cluster:
+ cmd.run:
+ - name: 'mongo localhost:27017 /var/tmp/mongodb_cluster.js && mongo localhost:27017 --quiet --eval "rs.conf()" | grep -i object -q'
+ - unless: 'mongo localhost:27017 --quiet --eval "rs.conf()" | grep -i object -q'
+ - require:
+ - service: mongodb_service_running
+ - file: /var/tmp/mongodb_cluster.js
+
+{%- endif %}
+
+{%- if server.members is not defined or server.master == pillar.linux.system.name %}
+
+{%- if server.authorization.get('enabled', False) %}
+/var/tmp/mongodb_user.js:
+ file.managed:
+ - source: salt://mongodb/files/user.js
+ - template: jinja
+ - mode: 600
+ - user: root
+
+mongodb_change_root_password:
+ cmd.run:
+ - name: 'mongo localhost:27017/admin /var/tmp/mongodb_user.js && touch {{ server.lock_dir }}/mongodb_password_changed'
+ {%- if grains.get('noservices') %}
+ - onlyif: /bin/false
+ {%- endif %}
+ - require:
+ - file: /var/tmp/mongodb_user.js
+ - service: mongodb_service_running
+ - creates: {{ server.lock_dir }}/mongodb_password_changed
+
+{%- for database_name, database in server.get('database', {}).iteritems() %}
+
+/var/tmp/mongodb_user_{{ database_name }}.js:
+ file.managed:
+ - source: salt://mongodb/files/user_role.js
+ - template: jinja
+ - mode: 600
+ - user: root
+ - defaults:
+ database_name: {{ database_name }}
+
+mongodb_{{ database_name }}_fix_role:
+ cmd.run:
+ - name: 'mongo localhost:27017/admin -u admin -p {{ server.admin.password }} /var/tmp/mongodb_user_{{ database_name }}.js && touch {{ server.lock_dir }}/mongodb_user_{{ database_name }}_created'
+ {%- if grains.get('noservices') %}
+ - onlyif: /bin/false
+ {%- endif %}
+ - require:
+ - file: /var/tmp/mongodb_user_{{ database_name }}.js
+ - service: mongodb_service_running
+ - creates: {{ server.lock_dir }}/mongodb_user_{{ database_name }}_created
+ {%- if server.members is defined %}
+ require:
+ - cmd: mongodb_setup_cluster
+ {%- endif %}
+
+{%- endfor %}
+
+{%- endif %}
+
+{%- endif %}
+
+{%- endif %}
diff --git a/mongodb/init.sls b/mongodb/init.sls
index 44eb0da..f61485b 100644
--- a/mongodb/init.sls
+++ b/mongodb/init.sls
@@ -1,4 +1,5 @@
{%- if pillar.mongodb is defined %}
include:
- mongodb.server
-{%- endif %}
\ No newline at end of file
+ - mongodb.cluster
+{%- endif %}
diff --git a/mongodb/server.sls b/mongodb/server.sls
index e7a342d..5f1e931 100644
--- a/mongodb/server.sls
+++ b/mongodb/server.sls
@@ -41,85 +41,4 @@
- watch:
- file: /etc/mongodb.conf
-{%- if server.members is defined and server.master == pillar.linux.system.name %}
-
-/var/tmp/mongodb_cluster.js:
- file.managed:
- - source: salt://mongodb/files/cluster.js
- - template: jinja
- - mode: 600
- - user: root
-
-mongodb_setup_cluster_wait:
- cmd.run:
- - name: 'sleep 10'
- - unless: 'mongo localhost:27017 --quiet --eval "rs.conf()" | grep -i object -q'
- - require:
- - service: mongodb_service
- - file: /var/tmp/mongodb_cluster.js
-
-mongodb_setup_cluster:
- cmd.run:
- - name: 'mongo localhost:27017 /var/tmp/mongodb_cluster.js && mongo localhost:27017 --quiet --eval "rs.conf()" | grep -i object -q'
- - unless: 'mongo localhost:27017 --quiet --eval "rs.conf()" | grep -i object -q'
- - require:
- - service: mongodb_service
- - file: /var/tmp/mongodb_cluster.js
- - cmd: mongodb_setup_cluster_wait
-
-{%- endif %}
-
-{%- if server.members is not defined or server.master == pillar.linux.system.name %}
-
-{%- if server.authorization.get('enabled', False) %}
-/var/tmp/mongodb_user.js:
- file.managed:
- - source: salt://mongodb/files/user.js
- - template: jinja
- - mode: 600
- - user: root
-
-mongodb_change_root_password:
- cmd.run:
- - name: 'mongo localhost:27017/admin /var/tmp/mongodb_user.js && touch {{ server.lock_dir }}/mongodb_password_changed'
- {%- if grains.get('noservices') %}
- - onlyif: /bin/false
- {%- endif %}
- - require:
- - file: /var/tmp/mongodb_user.js
- - service: mongodb_service
- - creates: {{ server.lock_dir }}/mongodb_password_changed
-
-{%- for database_name, database in server.get('database', {}).iteritems() %}
-
-/var/tmp/mongodb_user_{{ database_name }}.js:
- file.managed:
- - source: salt://mongodb/files/user_role.js
- - template: jinja
- - mode: 600
- - user: root
- - defaults:
- database_name: {{ database_name }}
-
-mongodb_{{ database_name }}_fix_role:
- cmd.run:
- - name: 'mongo localhost:27017/admin -u admin -p {{ server.admin.password }} /var/tmp/mongodb_user_{{ database_name }}.js && touch {{ server.lock_dir }}/mongodb_user_{{ database_name }}_created'
- {%- if grains.get('noservices') %}
- - onlyif: /bin/false
- {%- endif %}
- - require:
- - file: /var/tmp/mongodb_user_{{ database_name }}.js
- - service: mongodb_service
- - creates: {{ server.lock_dir }}/mongodb_user_{{ database_name }}_created
- {%- if server.members is defined %}
- require:
- - cmd: mongodb_setup_cluster
- {%- endif %}
-
-{%- endfor %}
-
-{%- endif %}
-
-{%- endif %}
-
{%- endif %}