From e62f81a69eb2c33247a1c4b18a0064301b1ae1d1 Mon Sep 17 00:00:00 2001 From: Bohdan Astapov Date: Thu, 19 Oct 2017 16:31:34 +0300 Subject: [PATCH] Add Export database task --- tasks/export.json | 22 ++++++++++++++++++++++ tasks/export.rb | 30 ++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 tasks/export.json create mode 100644 tasks/export.rb diff --git a/tasks/export.json b/tasks/export.json new file mode 100644 index 000000000..c93f76d05 --- /dev/null +++ b/tasks/export.json @@ -0,0 +1,22 @@ +{ + "description": "Allows you to backup your database to local file.", + "input_method": "stdin", + "parameters": { + "database": { + "description": "Database to connect to", + "type": "Optional[String[1]]" + }, + "user": { + "description": "The user", + "type": "Optional[String[1]]" + }, + "password": { + "description": "The password", + "type": "Optional[String[1]]" + }, + "sql": { + "description": "Path to file you want backup to", + "type": "String[1]" + } + } +} diff --git a/tasks/export.rb b/tasks/export.rb new file mode 100644 index 000000000..0f3f64706 --- /dev/null +++ b/tasks/export.rb @@ -0,0 +1,30 @@ +#!/opt/puppetlabs/puppet/bin/ruby +require 'json' +require 'open3' +require 'puppet' + +def get(file, database, user, password) + cmd_string = "mysqldump" + cmd_string << " --databases #{database}" unless database.nil? + cmd_string << " --user=#{user}" unless user.nil? + cmd_string << " --password=#{password}" unless password.nil? + cmd_string << " > #{file}" unless file.nil? + stdout, stderr, status = Open3.capture3(cmd_string) + raise Puppet::Error, _("stderr: '#{stderr}'") if status != 0 + { status: stdout.strip } +end + +params = JSON.parse(STDIN.read) +database = params['database'] +user = params['user'] +password = params['password'] +file = params['file'] + +begin + result = get(file, database, user, password) + puts result.to_json + exit 0 +rescue Puppet::Error => e + puts({ status: 'failure', error: e.message }.to_json) + exit 1 +end