skx / marionette

Something like puppet, for the localhost only.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Add mysql module

skx opened this issue · comments

This might be a bigger job:

mysql {
    username => "root",
    password => "secret",
    database => "users",
    sql => "SELECT COUNT(id) FROM wp_users WHERE login LIKE \"steve%\"",
}

Might be a good example of how it could work..

A mysql module feels a bit specific. It might be better to have a sql module which has an engine attribute to define the database type

sql {
    engine => "mysql",
    username => "root",
    password => "secret",
    database => "users",
    sql => "SELECT COUNT(id) FROM wp_users WHERE login LIKE \"steve%\"",
}

This way it allows for adding PostgreSQL, SQLite, Oracle, MSSQL etc without having modules for each.

Another thought would be to allow the SQL to be defined in a file sql_file => "/path/to/file.sql" which could contain multiple statements to run.

Something else to think about may be how to deal with SELECT statements vs INSERT/UPDATE/DELETE and if results could/should be useable. There may be cases where some SQL should be run if/unless another SQL query returns a result/value.

Good comment, and definitely agreed that engine-agnostic would be better.

For any initial attempt I think it would be sufficient to run some SQL. I'd assume that such an action would need to be triggered if it wasn't safe to run multiple times.

Updated to force the user to specify the DB-type and DSN-string.

Confirmed it works on MySQL & SQLite (memory and on-disk).