salt/states/roles/maintain/mysql/restoredb.sls

48 lines
1.4 KiB
Text

{##ensure that database pillar exists##}
{%- if pillar['database'] is defined -%}
{% if pillar['database']['databases'] is defined -%}
{%- for db in pillar['database']['databases'] %}
#destroy and create fresh db
absent_{{db}}:
mysql_database.absent:
- name: {{db}}
- connection_user: salt
- connection_pass: "{%- include 'secure/passwords/salt_db_password.txt' -%}"
present_{{db}}:
mysql_database.present:
- name: {{db}}
- connection_user: salt
- connection_pass: "{%- include 'secure/passwords/salt_db_password.txt' -%}"
#create temp user w/ perms for db
{%- set pass=range(0,999999999)|random -%}
user_temp_{{db}}:
mysql_user.present:
- name: temp
- host: "localhost"
- password: "{{pass}}"
- connection_user: salt
- connection_pass: "{%- include 'secure/passwords/salt_db_password.txt' -%}"
grant_temp_{{db}}:
mysql_grants.present:
- grant: all privileges
- database: "{{db}}.*"
- user: temp
- host: "localhost"
- revoke_first: true
- connection_user: salt
- connection_pass: "{%- include 'secure/passwords/salt_db_password.txt' -%}"
#restore db
restore_{{db}}:
cmd.run:
- name: "mysql -utemp -p{{pass}} < /dbdump/{{db}}.sql"
#remove temp user
rm_user_temp_{{db}}:
mysql_user.absent:
- name: temp
- host: "localhost"
- connection_user: salt
- connection_pass: "{%- include 'secure/passwords/salt_db_password.txt' -%}"
{%- endfor %}
{%- endif %}
{%- endif %}