使用puppet安装没有puppet-postgres的postgres

时间:2015-04-06 22:22:51

标签: postgresql puppet

我正在尝试安装postgresql,设置数据库和用户,但我坚持设置数据库并使用部分。到目前为止我所拥有的是:

# Install postgres
class postgres::install {

  package { [
    'postgresql',
    'postgresql-contrib',
  ]:
  ensure => "installed",
  }
}

但是现在我如何使用它来创建用户,数据库并将该数据库的所有权限授予该用户?

1 个答案:

答案 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,以允许更精确的错误检查。