deployer/recipe/provision/databases.php
2021-11-06 21:59:00 +01:00

56 lines
1.8 KiB
PHP

<?php
namespace Deployer;
set('db_type', function () {
$supportedDbTypes = [
'none',
'mysql',
'mariadb',
'postgresql',
];
return askChoice(' What DB to install? ', $supportedDbTypes, 0);
});
set('db_name', function () {
return ask(' DB name: ');
});
set('db_user', function () {
return ask(' DB user: ', 'deployer');
});
set('db_password', function () {
return askHiddenResponse(' DB password: ');
});
desc('Provision databases');
task('provision:databases', function () {
$dbType = get('db_type');
if ($dbType === 'none') {
return;
}
invoke('provision:' . $dbType);
})
->limit(1);
desc('Provision MySQL');
task('provision:mysql', function () {
run('apt-get install -y mysql-server', ['env' => ['DEBIAN_FRONTEND' => 'noninteractive']]);
run("mysql --user=\"root\" -e \"CREATE USER IF NOT EXISTS '{{db_user}}'@'0.0.0.0' IDENTIFIED BY '%secret%';\"", ['secret' => get('db_password')]);
run("mysql --user=\"root\" -e \"CREATE USER IF NOT EXISTS '{{db_user}}'@'%' IDENTIFIED BY '%secret%';\"", ['secret' => get('db_password')]);
run("mysql --user=\"root\" -e \"GRANT ALL PRIVILEGES ON *.* TO '{{db_user}}'@'0.0.0.0' WITH GRANT OPTION;\"");
run("mysql --user=\"root\" -e \"GRANT ALL PRIVILEGES ON *.* TO '{{db_user}}'@'%' WITH GRANT OPTION;\"");
run("mysql --user=\"root\" -e \"FLUSH PRIVILEGES;\"");
run("mysql --user=\"root\" -e \"CREATE DATABASE IF NOT EXISTS {{db_name}} character set UTF8mb4 collate utf8mb4_bin;\"");
});
desc('Provision MariaDB');
task('provision:mariadb', function () {
warning('mariadb db provision not ready yet');
});
desc('Provision PostgreSQL');
task('provision:postgresql', function () {
warning('postgresql db provision not ready yet');
});