Puppet Plan: cd4peadm::restore
- Defined in:
- plans/restore.pp
Summary
Restore CD4PEOverview
Given a target with a fresh CD4PE installation of the same version as the backup, this plan will restore the database and docker volumes from a given backup zip archive.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'plans/restore.pp', line 7
plan cd4peadm::restore(
String[1] $backup,
) {
run_plan('cd4peadm::check_bolt_version')
$config = cd4peadm::config()
$target = $config['roles']['backend']['targets'][0]
$runtime = $config['runtime']
without_default_logging() || {
$preflight_results = run_plan(
'cd4peadm::restore::preflight',
'config' => $config,
'backup' => $backup,
)
if($preflight_results != '') {
fail_plan($preflight_results)
}
}
# bring down pfi, query, and ui
apply_prep($target, { '_run_as' => 'root' })
$stop_apply_options = {
'_run_as' => 'root',
'_description' => 'Stop CD4PE services',
}
apply($target, $stop_apply_options) {
service { "${runtime}-pipelinesinfra":
ensure => stopped,
}
service { "${runtime}-query":
ensure => stopped,
}
service { "${runtime}-ui":
ensure => stopped,
}
}
# Gather database information and run the restore task
$db_role = $config['roles']['database']['services']['postgres']
$database_info = Cd4peadm::Support_bundle::Database_info.new({
'container_name' => $db_role['container']['name'],
'database_user' => $db_role['admin_db_username'],
})
$host = $config['roles']['backend']['targets'][0]
$restore_result = run_task(
'cd4peadm::restore',
# TODO: Currently only supports a single target
$host,
{
'runtime' => $runtime,
'backup_dir' => $config['backup_dir'],
'backup_archive' => $backup,
'database_info' => $database_info,
'image' => $config['images']['pipelinesinfra'],
'_run_as' => 'root',
'_catch_errors' => true,
}
)
if($restore_result[0].ok) {
$restore_result[0].value['warnings'].each |$warning| {
out::message($warning)
}
out::message($restore_result[0].value['message'])
} else {
$error_message = @("ERROR")
Restore failed:
${restore_result[0].value['message']}
${restore_result[0].value['error']}
Check the bolt-debug.log for additional details.
| ERROR
fail_plan($error_message)
}
# Restart the services
$start_apply_options = {
'_run_as' => 'root',
'_description' => 'Start CD4PE services',
}
apply($target, $start_apply_options) {
service { "${runtime}-pipelinesinfra":
ensure => running,
}
service { "${runtime}-query":
ensure => running,
}
service { "${runtime}-ui":
ensure => running,
}
}
out::message('Restore complete. Note that if the database passwords have been changed, you will need to run')
out::message('`bolt plan run cd4peadm::apply_configuration` to update the passwords and allow the services to properly start.')
}
|