我正在尝试安装postgresql,设置数据库和用户,但我坚持设置数据库并使用部分。到目前为止我所拥有的是:
# Install postgres
class postgres::install {
package { [
'postgresql',
'postgresql-contrib',
]:
ensure => "installed",
}
}
但是现在我如何使用它来创建用户,数据库并将该数据库的所有权限授予该用户?
答案 0 :(得分:1)
你可以通过几种方式实现这一点,但重复这种方式的最简单方法是使用一个调用几个执行者的定义:
Exec {
path => [
'/usr/local/sbin',
'/usr/local/bin',
'/usr/bin',
'/usr/sbin',
'/bin',
'/sbin',
]
}
define postgres::db_setup (
$dbname,
){
exec { "configure_db_${dbname}":
command => "pg command here using ${dbname}; touch success.txt"
creates => "db_${dbname}_success.txt"
}
}
define postgres::user_setup (
$dbuser,
$dbpassword,
$dbname,
){
exec { "configure_user_${dbuser}_on_${dbname}":
command => "pg command here using ${dbuser} on ${dbname} identified by ${dbpassword}; touch usersuccess.txt"
creates => "user_${dbuser}_success.txt"
}
然后当你调用定义时:
postgres::db_setup { 'this_new_db':
dbname => 'mynewdbname'
}
postgres::db_user { 'this_new_db_user_on_dbname':
dbuser => 'mynewdbuser',
dbpassword => 'blahblah',
dbname => 'mynewdbname',
require => Postgres::Db_setup['this_new_db'],
}
这是一种非常脏的方法,可以通过在exec完成时使用虚拟文件进行注册来实现所需。在我的MySQL环境中,我在使用erb模板创建的脚本上使用execs,以允许更精确的错误检查。