我正在尝试使用puppet v3.4.3和puppetlabs / postgresql module v3.3.0在ubuntu 12.04机器上安装postgres 9.1。我希望data_directory指向我已安装的大磁盘。
如果我更改postgresql :: globals的datadir属性,它似乎什么都不做。 postgres.conf文件仍然有data_directory指向/var/lib/postgresql/9.1/main 然后我尝试使用postgresql :: server :: config_entry更改postgres.config中的data_directory参数,但是会出现以下错误:
Debug: Executing 'service postgresql reload'
Notice: /Stage[main]/Postgresql::Server::Reload/Exec[postgresql_reload]/returns: * Reloading PostgreSQL 9.1 database server
Notice: /Stage[main]/Postgresql::Server::Reload/Exec[postgresql_reload]/returns: * pg_ctl: PID file "/data/PGDATA/postmaster.pid" does not exist
Notice: /Stage[main]/Postgresql::Server::Reload/Exec[postgresql_reload]/returns: Is server running?
Notice: /Stage[main]/Postgresql::Server::Reload/Exec[postgresql_reload]/returns: ...fail!
Error: /Stage[main]/Postgresql::Server::Reload/Exec[postgresql_reload]: Failed to call refresh: service postgresql reload returned 1 instead of one of [0]
Error: /Stage[main]/Postgresql::Server::Reload/Exec[postgresql_reload]: service postgresql reload returned 1 instead of one of [0]
我认为这失败是因为在配置data_directory之前启动了postgres,并且此参数是进程启动的一部分,因此当您更改该值时,它无法再找到停止和启动它的进程。如果我杀了postgres并尝试启动它,我会收到错误说/ data / PGDATA不是有效目录,因为数据库没有在我指定的data_directory位置创建。
最后我尝试创建用户,组和文件路径,然后在puppet安装postgres之前将磁盘挂载到/var/lib/postgresql/9.1/main all in puppet,但是我收到此错误:
Notice: /Stage[main]/Mm_postgres::Server/Postgresql::Server::Config_entry[checkpoint_segments]/Postgresql_conf[checkpoint_segments]/ensure: created
Error: Puppet::Util::FileType::FileTypeFlat could not write /etc/postgresql/9.1/main/postgresql.conf: No such file or directory - /etc/postgresql/9.1/main/postgresql.conf
Error: /Stage[main]/Mm_postgres::Server/Postgresql::Server::Config_entry[checkpoint_segments]/Postgresql_conf[checkpoint_segments]: Could not evaluate: Puppet::Util::FileType::FileTypeFlat could not write /etc/postgresql/9.1/main/postgresql.conf: No such file or directory - /etc/postgresql/9.1/main/postgresql.conf
我相信一切都按照正确的顺序完成,权限很好,但我会继续研究这个问题。有没有人知道是否有可能通过ubuntu上的puppet安装postgres并更改data_directory,如果有的话,怎么样?
由于
答案 0 :(得分:1)
问题是来自puppetlabs的postgresql模块并不适合这种自定义。我想甚至还有一些bug报告。这就是我所做的,它没有问题:
file { '/data/postgresql':
ensure => directory,
}
file { '/var/lib/postgresql':
ensure => link,
target => '/data/postgresql',
before => Class['::postgresql::server::install'],
}
class { '::postgresql::globals':
}->class { '::postgresql::server':
}
希望它有所帮助!
PS。我使用了puppetlabs-postgresql版本3.3.3