Puppet PostgresQL 管理
Puppet PostgresQL management
我正在尝试使用 puppet 提供 EC2 实例。在此过程中,我从 puppetlabs 下载了 puppetlabs-postgresql 模块。由于我对 puppet 还很陌生,所以我不想通过在位于 的 site.pp 文件 中创建 classes 来管理我的数据库/etc/puppet/manifests/site.pp。相反,我想在 /etc/puppet/modules/database 中有一个模块调用 database。
到目前为止我所做的是在 /etc/puppet/modules/database 中创建一个 init.pp 文件。以下是我的 init.pp 文件的内容:
class database {
# resources
postgresql::globals{'globals':
version => '9.3',
manage_package_repo => true,
encoding => 'UTF8',
locale => 'it_IT.utf8',
}
postgresql::server{'server':
ensure => 'present',
listen_addresses => '*',
manage_firewall => true,
}
postgresql::server::contrib{'contrib':
package_ensure => 'present',
}
}
然后在我的 /etc/puppet/manifests/site.pp 文件中我包含了 数据库 class 如下:
node default {
include localusers
include database
}
但是我一直收到错误消息:
Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type postgresql::globals at /etc/puppet.manifests/init.pp:12
请问在我自己的模块中使用 postgresql classes 和资源并在模块中创建数据库的正确方法是什么?
您的方向是正确的,但是您使用 postgresql 模块的方式存在一些问题。您收到 Invalid resource type
错误的原因是您试图将 postgresql::globals
用作定义的类型,而实际上它是 class。您使用的其他两个 classes 也有同样的问题。试试这个...
class database {
# set global defaults before creating server
class { 'postgresql::globals':
version => '9.3',
manage_package_repo => true,
encoding => 'UTF8',
locale => 'it_IT.utf8',
}->
class { 'postgresql::server':
listen_addresses => '*',
manage_firewall => true,
}
# install the postgresql contrib package
class { 'postgresql::server::contrib':
package_ensure => 'present',
}
# create database with user and default permissions
postgresql::server::db { 'my_awesome_db':
user => 'my_db_user',
password => 'puppetRocks',
}
}
在 reference section of the module documentation 中,有 classes 和资源(a.k.a。已定义类型)的细分。我使用的 postgresql::server::db
类型是同时创建数据库、用户和权限的最简单方法。每个类型都有单独的类型以提供更多 fine-grained 控制。
我正在尝试使用 puppet 提供 EC2 实例。在此过程中,我从 puppetlabs 下载了 puppetlabs-postgresql 模块。由于我对 puppet 还很陌生,所以我不想通过在位于 的 site.pp 文件 中创建 classes 来管理我的数据库/etc/puppet/manifests/site.pp。相反,我想在 /etc/puppet/modules/database 中有一个模块调用 database。 到目前为止我所做的是在 /etc/puppet/modules/database 中创建一个 init.pp 文件。以下是我的 init.pp 文件的内容:
class database {
# resources
postgresql::globals{'globals':
version => '9.3',
manage_package_repo => true,
encoding => 'UTF8',
locale => 'it_IT.utf8',
}
postgresql::server{'server':
ensure => 'present',
listen_addresses => '*',
manage_firewall => true,
}
postgresql::server::contrib{'contrib':
package_ensure => 'present',
}
}
然后在我的 /etc/puppet/manifests/site.pp 文件中我包含了 数据库 class 如下:
node default {
include localusers
include database
}
但是我一直收到错误消息:
Error: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type postgresql::globals at /etc/puppet.manifests/init.pp:12
请问在我自己的模块中使用 postgresql classes 和资源并在模块中创建数据库的正确方法是什么?
您的方向是正确的,但是您使用 postgresql 模块的方式存在一些问题。您收到 Invalid resource type
错误的原因是您试图将 postgresql::globals
用作定义的类型,而实际上它是 class。您使用的其他两个 classes 也有同样的问题。试试这个...
class database {
# set global defaults before creating server
class { 'postgresql::globals':
version => '9.3',
manage_package_repo => true,
encoding => 'UTF8',
locale => 'it_IT.utf8',
}->
class { 'postgresql::server':
listen_addresses => '*',
manage_firewall => true,
}
# install the postgresql contrib package
class { 'postgresql::server::contrib':
package_ensure => 'present',
}
# create database with user and default permissions
postgresql::server::db { 'my_awesome_db':
user => 'my_db_user',
password => 'puppetRocks',
}
}
在 reference section of the module documentation 中,有 classes 和资源(a.k.a。已定义类型)的细分。我使用的 postgresql::server::db
类型是同时创建数据库、用户和权限的最简单方法。每个类型都有单独的类型以提供更多 fine-grained 控制。