Name Last Update
attributes Loading commit data...
recipes Loading commit data...
templates/default Loading commit data...
.gitignore Loading commit data...
.kitchen.yml Loading commit data...
Berksfile Loading commit data...
CHANGELOG.md Loading commit data...
Gemfile Loading commit data...
LICENSE Loading commit data...
README.md Loading commit data...
Thorfile Loading commit data...
Vagrantfile Loading commit data...
chefignore Loading commit data...
metadata.rb Loading commit data...

cfe-mariadb-cookbook

This installs MariaDB 10.0 by default and initiates databases and users. It can also install a script that performs a backup of all those databases into a designated S3 bucket.

The server is assumed to be using an IAM role with S3 bucket read/write access, instead of a physical credentials file.

When encryption is enabled for DB backups, the private and public keys are shared across all databases in the db_map attribute. Encryption is enabled separately for each individual database (see Usage below).

Note that enabling encryption can cause the backup process to take a very long time depending on how large the database is. That said, it is still very much recommended to do so.

Supported Platforms

Ubuntu 14.04

Attributes

Key Type Description Default
['cfe-mariadb']['db_map'] Hash A hash/array of hashes that enumerate the DB names, users, passwords, etc. of all databases to be set up. Please see the default attributes file for examples. {}
['cfe-mariadb']['replication'] Boolean Whether replication is enabled or not false
['cfe-mariadb']['s3_region'] String AWS S3 region 'us-east-1'
['cfe-mariadb']['s3_bucket'] String AWS S3 bucket name 'example-bucket'
['cfe-mariadb']['backup']['cron']['sched'] String The backup cronjob schedule value in crontab syntax. '0 0 * * *'
['cfe-mariadb']['reload']['aws_access_key_id'] String If not using EC2 roles, enter AWS creds here nil
['cfe-mariadb']['reload']['aws_secret_access_key'] String If not using EC2 roles, enter AWS creds here nil
['cfe-mariadb']['reload']['false'] Boolean If the recipe 'reload_from_s3' is run, reload the databases even if it has already been done by a previous run of this recipe. false
['cfe-mariadb']['encrypt']['priv_key'] String Contents of the private key file used by recipe `reload_from_s3` if encrypted backups are used. nil
['cfe-mariadb']['encrypt']['pub_key'] String Contents of the public key file used by the backup script to encrypt files before uploading to the S3 bucket. nil

Usage

node['cfe-mariadb']['db_map']

Example config of a single database:

{
  'example_db_name' => {
    :db_user       => 'example_db_username',
    :db_pass       => 'supersecret_pass',
    :bak_filename  => 'example_db_name.sql',
    :bak_maxcopies => 30
    :bak_encrypted => false,
    :char_set      => 'utf8',
    :collate       => 'utf8_general_ci'
  }
}

The properties :bak_encrypted, :char_set, and :collate are all optional and their default values are as shown above.

cfe-mariadb::default

Include cfe-mariadb in your node's run_list:

{
  "run_list": [
    "recipe[cfe-mariadb]"
  ]
}

cfe-mariadb::backup2s3

This will install the backup script and also enable a cronjob to regularly run that script.

{
  "run_list": [
    "recipe[cfe-mariadb]",
    "recipe[cfe-mariadb::backup2s3]"
  ]
}

cfe-mariadb::reload_from_s3

Kind of the reverse of backup2s3. Download a gzip of a MySQL dump file from an S3 bucket, then load it up into a database. Do this for every database given in node['cfe-mariadb']['db_map'].

This recipe assumes the node is using an EC2 role that can access the given S3 bucket. Otherwise, enter the AWS credentials in node.default['cfe-mariadb']['reload']['aws_access_key_id'] and node.default['cfe-mariadb']['reload']['aws_secret_access_key'].

License and Authors

Author:: Earth U. ()