【发布时间】:2016-11-22 01:06:28
【问题描述】:
我想运行以下设置脚本来配置一个通过虚拟机部署的 postgresql 数据库,通过 vagrant 使用 puppet 进行配置:
#!/bin/bash -e
sudo su - postgres
createdb testdb
psql -s tm351test -c "create user test password 'test';GRANT ALL PRIVILEGES ON DATABASE testdb TO test;"
touch /root/postgresql.done
我的 vagrant 配置采用以下形式:
package {
[
'postgresql',
'postgresql-client'
]: ensure => latest;
}
file {
'/root/postgresql.setup':
source => 'puppet:///modules/infinite_interns/root/postgresql.setup',
owner => root,
group => root,
mode => '0744';
}
#TO DO - how do we guarantee the postgresql server is running and tools available?
exec {
'setup-postgresql':
cwd => '/root',
command => '/root/postgresql.setup',
creates => '/root/postgresql.done';
}
service {
'postgresql':
ensure => running,
enable => true;
}
Package['postgresql'] -> Service['postgresql']
在运行配置脚本之前,如何保证 postgresql 服务器已安装并运行,并且命令行工具可用?
我是 Puppet 的新手 - 如果创建的文件 postgresql.done 存在,Exec() 不运行吗?
我怀疑psql 命令也可能期望确认“返回”来执行命令 - 我该怎么做?
【问题讨论】:
标签: postgresql vagrant puppet