Saltstack Official Galera Formula
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

master.sls 5.2KB

8年前
9年前
9年前
9年前
9年前
9年前
9年前
9年前
9年前
9年前
9年前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. {%- from "galera/map.jinja" import master with context %}
  2. {%- if master.get('enabled', False) %}
  3. {%- if grains.os_family == 'RedHat' %}
  4. xtrabackup_repo:
  5. pkg.installed:
  6. - sources:
  7. - percona-release: {{ master.xtrabackup_repo }}
  8. - require_in:
  9. - pkg: galera_packages
  10. # Workaround https://bugs.launchpad.net/percona-server/+bug/1490144
  11. xtrabackup_repo_fix:
  12. cmd.run:
  13. - name: |
  14. sed -i 's,enabled\ =\ 1,enabled\ =\ 1\nexclude\ =\ Percona-XtraDB-\*\ Percona-Server-\*,g' /etc/yum.repos.d/percona-release.repo
  15. - unless: 'grep "exclude = Percona-XtraDB-\*" /etc/yum.repos.d/percona-release.repo'
  16. - watch:
  17. - pkg: xtrabackup_repo
  18. - require_in:
  19. - pkg: galera_packages
  20. {%- endif %}
  21. galera_packages:
  22. pkg.installed:
  23. - names: {{ master.pkgs }}
  24. - refresh: true
  25. - force_yes: True
  26. galera_log_dir:
  27. file.directory:
  28. - name: /var/log/mysql
  29. - makedirs: true
  30. - mode: 755
  31. - require:
  32. - pkg: galera_packages
  33. {%- if grains.os_family == 'Debian' %}
  34. galera_run_dir:
  35. file.directory:
  36. - name: /var/run/mysqld
  37. - makedirs: true
  38. - mode: 755
  39. - user: mysql
  40. - group: root
  41. - require:
  42. - pkg: galera_packages
  43. {%- if grains.get('init', None) == "upstart" %}
  44. galera_purge_init:
  45. file.absent:
  46. - name: /etc/init.d/mysql
  47. - require:
  48. - pkg: galera_packages
  49. galera_overide:
  50. file.managed:
  51. - name: /etc/init/mysql.override
  52. - contents: |
  53. limit nofile 102400 102400
  54. exec /usr/bin/mysqld_safe
  55. - require:
  56. - pkg: galera_packages
  57. {%- elif grains.get('init', None) == "systemd" %}
  58. galera_systemd_directory_present:
  59. file.directory:
  60. - name: /etc/systemd/system/mysql.service.d
  61. - user: root
  62. - group: root
  63. - mode: 755
  64. - require:
  65. - pkg: galera_packages
  66. galera_override_limit_no_file:
  67. file.managed:
  68. - name: /etc/systemd/system/mysql.service.d/override.conf
  69. - contents: |
  70. [Service]
  71. LimitNOFILE=1024000
  72. - require:
  73. - pkg: galera_packages
  74. - file: galera_systemd_directory_present
  75. - watch_in:
  76. - service: galera_service
  77. mysql_restart_systemd:
  78. module.wait:
  79. - name: service.systemctl_reload
  80. - watch:
  81. - file: /etc/systemd/system/mysql.service.d/override.conf
  82. - require_in:
  83. - service: galera_service
  84. {%- endif %}
  85. galera_conf_debian:
  86. file.managed:
  87. - name: /etc/mysql/debian.cnf
  88. - template: jinja
  89. - source: salt://galera/files/debian.cnf
  90. - mode: 640
  91. - require:
  92. - pkg: galera_packages
  93. {%- endif %}
  94. galera_init_script:
  95. file.managed:
  96. - name: /usr/local/sbin/galera_init.sh
  97. - mode: 755
  98. - source: salt://galera/files/init_bootstrap.sh
  99. - defaults:
  100. service: {{ master|yaml }}
  101. - template: jinja
  102. - timeout: 1800
  103. galera_bootstrap_script:
  104. file.managed:
  105. - name: /usr/local/sbin/galera_bootstrap.sh
  106. - mode: 755
  107. - source: salt://galera/files/bootstrap.sh
  108. - defaults:
  109. service: {{ master|yaml }}
  110. - template: jinja
  111. {%- if salt['cmd.run']('test -e /var/lib/mysql/.galera_bootstrap; echo $?') != '0' %}
  112. # Enforce config before package installation
  113. galera_pre_config:
  114. file.managed:
  115. - name: {{ master.config }}
  116. - source: salt://galera/files/my.cnf.pre
  117. - mode: 644
  118. - template: jinja
  119. - makedirs: True
  120. - require_in:
  121. - pkg: galera_packages
  122. galera_init_start_service:
  123. cmd.run:
  124. - name: /usr/local/sbin/galera_init.sh
  125. {%- if grains.get('noservices') %}
  126. - onlyif: /bin/false
  127. {%- endif %}
  128. - require:
  129. - file: galera_run_dir
  130. - file: galera_init_script
  131. - timeout: 1800
  132. galera_bootstrap_set_root_password:
  133. cmd.run:
  134. - name: mysqladmin password "{{ master.admin.password }}"
  135. {%- if grains.get('noservices') %}
  136. - onlyif: /bin/false
  137. {%- endif %}
  138. - require:
  139. - cmd: galera_init_start_service
  140. mysql_bootstrap_update_maint_password:
  141. cmd.run:
  142. - name: mysql -u root -p{{ master.admin.password }} -e "GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '{{ master.maintenance_password }}';"
  143. {%- if grains.get('noservices') %}
  144. - onlyif: /bin/false
  145. {%- endif %}
  146. - require:
  147. - cmd: galera_bootstrap_set_root_password
  148. galera_bootstrap_stop_service:
  149. service.dead:
  150. - name: {{ master.service }}
  151. {%- if not grains.get('noservices', False) %}
  152. - require:
  153. - cmd: mysql_bootstrap_update_maint_password
  154. {%- else %}
  155. - onlyif: /bin/false
  156. {%- endif %}
  157. galera_bootstrap_init_config:
  158. file.managed:
  159. - name: {{ master.config }}
  160. - source: salt://galera/files/my.cnf.init
  161. - mode: 644
  162. - template: jinja
  163. - require:
  164. - service: galera_bootstrap_stop_service
  165. galera_bootstrap_start_service_final:
  166. cmd.run:
  167. - name: /usr/local/sbin/galera_bootstrap.sh
  168. {%- if grains.get('noservices') %}
  169. - onlyif: /bin/false
  170. {%- endif %}
  171. - require:
  172. - file: galera_bootstrap_init_config
  173. - file: galera_bootstrap_script
  174. galera_bootstrap_finish_flag:
  175. file.touch:
  176. - name: /var/lib/mysql/.galera_bootstrap
  177. - require:
  178. - cmd: galera_bootstrap_start_service_final
  179. - watch_in:
  180. - file: galera_config
  181. {%- endif %}
  182. galera_config:
  183. file.managed:
  184. - name: {{ master.config }}
  185. - source: salt://galera/files/my.cnf
  186. - mode: 644
  187. - template: jinja
  188. - require_in:
  189. - service: galera_service
  190. galera_service:
  191. service.running:
  192. - name: {{ master.service }}
  193. - enable: true
  194. - reload: true
  195. {%- if grains.get('noservices') %}
  196. - onlyif: /bin/false
  197. {%- endif %}
  198. {%- endif %}