Merge pull request #10 from ninjix/master

Assign MySQL Root Password during Debian/Ubuntu installation
This commit is contained in:
Seth House 2014-05-13 10:57:12 -06:00
commit 04e5b130e8
6 changed files with 97 additions and 4 deletions

View file

@ -24,3 +24,15 @@ Install the MySQL client package.
----------------
Install the MySQL server package and start the service.
Debian OS family supports setting MySQL root password during install via debconf.
``mysql.database``
----------------
Create and manage MySQL databases.
``mysql.user``
----------------
Create and manage MySQL database users with definable GRANT privileges.

12
mysql/database.sls Normal file
View file

@ -0,0 +1,12 @@
{% from "mysql/map.jinja" import mysql with context %}
{% for database in salt['pillar.get']('mysql:database', []) %}
{{ database }}:
mysql_database.present:
- host: localhost
- connection_user: root
- connection_pass: {{ salt['pillar.get']('mysql:server:root_password', 'somepass') }}
- connection_charset: utf8
{% endfor %}

View file

@ -1,3 +0,0 @@
mysql-server-5.5 mysql-server/root_password_again password somepass
mysql-server-5.5 mysql-server/root_password password somepass
mysql-server-5.5 mysql-server/start_on_boot boolean true

View file

@ -1,11 +1,23 @@
{% from "mysql/map.jinja" import mysql with context %}
{% if grains['os'] in ['Ubuntu', 'Debian'] %}
mysql-debconf:
debconf.set:
- name: mysql-server
- data:
'mysql-server/root_password': {'type': 'password', 'value': '{{ salt['pillar.get']('mysql:server:root_password', 'somepass') }}'}
'mysql-server/root_password_again': {'type': 'password', 'value': '{{ salt['pillar.get']('mysql:server:root_password', 'somepass') }}'}
'mysql-server/start_on_boot': {'type': 'boolean', 'value': 'true'}
{% endif %}
mysqld:
pkg:
- installed
- name: {{ mysql.server }}
{% if grains['os'] in ['Ubuntu', 'Debian'] %}
- debconf: salt://mysql/files/mysql.deb.set
- require:
- debconf: mysql-debconf
{% endif %}
service:
- running
@ -14,6 +26,11 @@ mysqld:
- watch:
- pkg: mysqld
mysql-python:
pkg:
- installed
- name: {{ mysql.python }}
{% if grains['os'] in ['Ubuntu', 'Debian', 'Gentoo'] %}
my.cnf:
file.managed:

30
mysql/user.sls Normal file
View file

@ -0,0 +1,30 @@
{% from "mysql/map.jinja" import mysql with context %}
{% for user in salt['pillar.get']('mysql:user', []) %}
{{ user['name'] }}:
mysql_user.present:
- host: {{ user['host'] }}
- password: {{ user['password'] }}
- connection_host: localhost
- connection_user: root
- connection_pass: {{ salt['pillar.get']('mysql:server:root_password', 'somepass') }}
- connection_charset: utf8
{% for db in user['databases'] %}
{{ user['name'] }}_{{ db['database'] }}:
mysql_grants.present:
- grant: {{db['grants']|join(",")}}
- database: {{ db['database'] }}.*
- user: {{ user['name'] }}
- host: {{ user['host'] }}
- connection_host: localhost
- connection_user: root
- connection_pass: {{ salt['pillar.get']('mysql:server:root_password', 'somepass') }}
- connection_charset: utf8
- require:
- mysql_user: {{ user['name'] }}
{% endfor %}
{% endfor %}

View file

@ -1,9 +1,34 @@
mysql:
server:
root_password: somepass
bind-address: 127.0.0.1
port: 3306
user: mysql
# Manage databases
database:
- foo
- baz
# Manage users
user:
- name: frank
password: somepass
host: localhost
databases:
- database: foo
grants: ['select', 'insert', 'update']
- database: bar
grants: ['all privileges']
- name: bob
password: someotherpass
host: localhost
databases:
- database: foo
grants: ['all privileges']
- database: bar
grants: ['select', 'insert', 'update', 'delete']
# Override any names defined in map.jinja
lookup:
server: mysql-server