繁体   English   中英

通过带有用户data_directory的p安装postgres

[英]installing postgres via puppet with customer data_directory

我正在尝试使用puppet v3.4.3和puppetlabs / postgresql模块v3.3.0在ubuntu 12.04机器上安装postgres 9.1。 我希望data_directory指向我已挂载的大磁盘。

如果我更改了postgresql :: globals的datadir属性,它似乎什么也没做。 postgres.conf文件仍然具有指向/var/lib/postgresql/9.1/main的data_directory,然后我也尝试使用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]

我相信这会失败,因为postgres是在配置data_directory之前启动的,并且此参数是进程启动的一部分,因此,当您更改该值时,它将找不到停止并启动它的进程。 如果我杀死postgres并尝试启动它,则会收到一条错误消息,提示/ data / PGDATA不是有效目录,因为该数据库未在我指定的data_directory位置中创建。

最后,我尝试创建用户,组和文件路径,然后在puppet安装postgres之前将磁盘安装到puppet中的/var/lib/postgresql/9.1/main中,但出现此错误:

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,如果可以,如何?

谢谢

问题在于,来自puppetlabs的postgresql模块不适用于这种定制。 我认为甚至还有一些错误报告。 这是我所做的,并且可以正常工作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM