在没有 puppet-postgres 的情况下使用 puppet 安装 postgres
Using puppet to install postgres without puppet-postgres
我正在尝试安装 postgresql、设置数据库和用户,但我卡在了设置数据库和使用部分。我到目前为止是:
# Install postgres
class postgres::install {
package { [
'postgresql',
'postgresql-contrib',
]:
ensure => "installed",
}
}
但是现在我如何使用它来创建用户、数据库并将对该数据库的所有权限授予该用户?
您可以通过多种方式执行此操作,但重复执行此操作的最简单方法是使用调用几个 exec 的定义:
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 以允许更精确的错误检查。
我正在尝试安装 postgresql、设置数据库和用户,但我卡在了设置数据库和使用部分。我到目前为止是:
# Install postgres
class postgres::install {
package { [
'postgresql',
'postgresql-contrib',
]:
ensure => "installed",
}
}
但是现在我如何使用它来创建用户、数据库并将对该数据库的所有权限授予该用户?
您可以通过多种方式执行此操作,但重复执行此操作的最简单方法是使用调用几个 exec 的定义:
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 以允许更精确的错误检查。