鉴于我不是 puppet DSL 方面的专家,而且我对 Puppet 还很陌生,我还没有设法弄清楚这一点,我有一个 puppet manifest 抵制我试图让它正常工作的尝试。
我正在尝试使用 puppetlabs posgres 模块安装 Postgres,创建默认角色,并修复 DB 以在 UTF8 上工作。
一切都运行并安装,但没有创建角色。但是,如果我再次运行配置,那么就会创建角色。我认为可能与执行顺序有关,但老实说我迷路了。
这是我在清单文件中使用的代码。
user { "user_vagrant":
ensure => "present",
}->
exec { 'apt_update':
command => 'apt-get update',
path => '/usr/bin/'
}
package { ['vim','postgresql-server-dev-9.1','libmysqlclient-dev','nodejs']:
ensure => 'installed',
before => Class['postgresql::server'],
require => Exec['apt_update'],
}
class { 'postgresql::server':
ip_mask_allow_all_users => '0.0.0.0/0',
listen_addresses => '*',
ipv4acls => ['local all all md5'],
postgres_password => 'postgres',
require => User['user_vagrant'],
}
postgresql::server::role { 'vagrant':
createdb => true,
login => true,
password_hash => postgresql_password("vagrant", "vagrant"),
require => Class['postgresql::server'],
} ->
exec { 'utf8_postgres':
command => 'pg_dropcluster --stop 9.1 main ; pg_createcluster --start --locale en_US.UTF-8 9.1 main',
unless => 'sudo -u postgres psql -t -c "\l" | grep template1 | grep -q UTF',
path => ['/bin', '/sbin', '/usr/bin', '/usr/sbin'],
}