Initial commit
diff --git a/galera/master.sls b/galera/master.sls
new file mode 100644
index 0000000..f9525bd
--- /dev/null
+++ b/galera/master.sls
@@ -0,0 +1,88 @@
+{%- from "galera/map.jinja" import master with context %}
+{%- if master.enabled %}
+
+{%- if grains.os_family == "Debian2" %}
+
+galera_debconf:
+  debconf.set:
+  - name: mariadb-galera-server
+  - data:
+      'mysql-server/root_password': {'type':'string','value':'{{ server.admin.password }}'}
+      'mysql-server/root_password_again': {'type':'string','value':'{{ server.admin.password }}'}
+  - require_in:
+    - pkg: galera_packages
+
+{%- endif %}
+
+galera_packages:
+  pkg.installed:
+  - names: {{ master.pkgs }}
+
+galera_log_dir:
+  file.directory:
+  - name: /var/log/mysql
+  - makedirs: true
+  - mode: 755
+  - require:
+    - pkg: galera_packages
+
+{%- if not salt['cmd.run']('test -e /root/.galera_bootstrap') %}
+
+galera_bootstrap_temp_config:
+  file.managed:
+  - name: {{ master.config }}
+  - source: salt://mysql/files/my.cnf.bootstrap
+  - mode: 644
+  - template: jinja
+  - require: 
+    - pkg: galera_packages
+
+galera_bootstrap_start_service:
+  service.running:
+  - name: mysql
+  - require: 
+    - file: galera_bootstrap_temp_config
+
+galera_bootstrap_set_root_password:
+  cmd.run:
+  - name: mysqladmin password "{{ master.admin.password }}"
+  - require:
+    - service: galera_bootstrap_start_service
+
+mysql_bootstrap_update_maint_password:
+  cmd.run:
+  - name: mysql -u root -p{{ master.admin.password }} -e "GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '{{ master.maintenance_password }}';"
+  - require:
+    - cmd: galera_bootstrap_set_root_password
+
+galera_packages_bootstrap_stop_service:
+  service.dead:
+  - name: mysql
+  - require:
+    - cmd: mysql_bootstrap_update_maint_password
+
+galera_bootstrap_init_config:
+  file.managed:
+  - name: {{ master.config }}
+  - source: salt://mysql/conf/my.cnf
+  - mode: 644
+  - template: jinja
+  - require: 
+    - service: galera_bootstrap_stop_service
+
+galera_bootstrap_temp_config:
+  file.touch:
+  - require:
+    - file: galera_bootstrap_init_config
+  - watch_in:
+    - service: galera_service
+
+{%- endif %}
+
+galera_service:
+  service.running:
+  - name: {{ master.service }}
+  - enable: true
+  - reload: true
+
+{%- endif %}
\ No newline at end of file