私は puppet DSL の専門家ではなく、Puppet にかなり慣れていないため、正しく機能させる試みに抵抗する puppet マニフェストを持っています。これを理解することができませんでした。
puppetlabs posgres モジュールを使用して Postgres をインストールし、デフォルトのロールを作成し、UTF8 で動作するように DB を修正しようとしています。
すべてが実行され、インストールされますが、役割は作成されません。しかし、もう一度プロビジョニングを実行すると、ロールが作成されます。おそらく実行順序と関係があると思いますが、正直迷っています。
マニフェスト ファイルで使用しているコードは次のとおりです。
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'],
}