The current install pattern used by this module is the following:
1. Install package
2. Install the DB
3. Make the config files
In some cases this prevents MySQL to start, because some variables in
the config file have an impact on the DB installation.
Example with a custom innodb_data_file_path:
[ERROR] InnoDB: space header page consists of zero bytes in data file
/var/lib/mysql/ibdata
This commit changes the order to do:
1. Install package
2. Make the config files
3. Install the DB
This allows the galera module and others to write ${::root_home}/.my.cnf
independently from create the mysql user. This is useful for cluster
setups where you want to create ${::root_home}/.my.cnf on every node
but create the user only once.
Hardcoded path provided by puppet is now replaced by providing only the final directory as on
most systems includedir is provided by package and it's matter of user to provide it if he
wants to override it. This also allows disabling including at all.
This adds hash parameters to mysql::server to allow specifying grants, users, and databases to
create automatically, which works nicely with Hiera's automatic parameter lookup functionality
In PE3.1 it parses the comment #Deprecated at the top of the parameters
as if it's the class description. Move this so PE3.1 doesn't falsely
claim mysql::server is now deprecated.
This turned out to be a fairly bad idea. It begun as a way to try
and mirror what happens in the postgresql module for consistency
but instead made things complex.
I've changed it to have the override_options in mysql::server which
leads much more naturally out of the design and shape of MySQL.
This work adds a new mysql::globals class which contains a hash used to
build my.cnf from. It's used to share this data across multiple classes
so that the client and server can share this data.
End users can modify content in my.cnf by including mysql::globals and
passing in override_options as a hash that looks like:
override_options = { 'mysqld' => { 'max_connections' => '120' } }
This completely replaces the mess of parameters that existed in the main
mysql class before.
Completely refactor mysql::server and rework the API. This changes
ordering, changes from execs{} to mysql_user for the root password,
removes some functionality (like the etc_root_password), and generally
makes some tough decisions about how mysql::server should be built.
This initial round of work focuses on adding the concept of
mysql::globals to the module. This is a shared place to provide all the
data the module needs, and then clients, servers, and providers can all
rely on this information to set things up.
This is being primarily used at first to allow a default_options hash
that contains all the previous parameters and takes a overrides_options
that allows you to then further customize any of the options in my.cnf.
When using failover options such as Corosync, it's preferable to allow the failover software to manage the starting and stopping of the service. This parameter allows that to happen.
This parameter can be used to specify whether the service
should be running.
It has been implemented to allow installations of mysql::server to
be in passive mode for HA.
In Puppet 2.6, negate boolean wasn't handled in resources attribues.
Also hashes values were not accepted in functions. The manifests have
been updated to resolve compilation issues in Puppet 2.6.
On Ubuntu, mysql should use upstart provider instead of init.d. This
change overrides the init provider until the issue with init provider
can be addressed.
Prevously, the server class declared the config class and
the config class had a relationship to the server class.
This actually meant that the config class could never be declared
by itself b/c it exlicity depended on the server class (which it
could never resolve externally b/c it would result in a redeclaration
of the config class itself.)
This issue actually made it impossible to test the manifest on its
own with rspec-puppet. This commit makes it much easier to write
rspec tests for the config class.
This is a major change to the module and would be released as a new
version.
* Add self.instances to database and database_user for puppet resource.
* Update database provider to use flush method.
* Update module to conform to puppet-lint recommendations.
* Cleanup some unecessary logic in mysql::db define type.
* Move mysql_restart to config class.
* Use class to class dependency instead of resource dependency.
* Change appropriate rspec-puppet tests.
* Add fixtures directory to simplify testing.
* Update raketask and spec_helper to reflect fixture changes.
* Update mysql_password function to support validation.
* Move client installation to a separate class.
* Update documentation and readme.
Configuration was moved to config hash param of the mysql::server class.
This was done so that additional parameters can be
added in the future and not have to be added to
both mysql::config and mysql::server as class params
This patch updates the README, docs, and examples to
correctly use the parameter.
It makes way more sense to just allow it as a
class param.
Also added some additional config for setting bind
address and port.
Added management of /etc/mysql/my.cnf
Documented a dependency on create_resources 0.0.1
- previously setting the root password failed on
Debian b/c a root password was already set
during package installation
- Debian already installs mysql with a
maintainance user capable of performing any
required database actions.
- this patch splits setting of root password to
be redhat specific.
- as a consequence, users will not be able to
specify a root password on Debian (which
needs to be opened as a seperate ticket)
- updated mysql::ruby to use params value for
package_name
- updated server to use params value for service
and package
- clarified some param names to make them more
consistent