【问题标题】:Puppet PostgresQL managementPuppet PostgresQL 管理
【发布时间】:2016-04-05 21:59:11
【问题描述】:

我正在尝试使用 puppet 配置 EC2 实例。在此过程中,我从 puppetlabs 下载了 puppetlabs-postgresql 模块。由于我对 puppet 还很陌生,我不想通过在 /etc/puppet/manifests/site.pp 中的 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 文件中,我包含了 数据库类,如下所示:

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类和资源并在模块中创建数据库的正确方法是什么?

【问题讨论】:

    标签: postgresql ubuntu-14.04 puppet packer puppet-enterprise


    【解决方案1】:

    您在正确的轨道上,但是在您使用 postgresql 模块的方式上存在一些问题。您收到Invalid resource type 错误的原因是您试图将postgresql::globals 用作定义的类型,而它实际上是一个类。您使用的其他两个类也有同样的问题。试试这个...

    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 中,对类和资源(也就是定义的类型)进行了细分。我使用的postgresql::server::db 类型是一次创建数据库、用户和权限的最简单方法。每种类型都有不同的类型,以提供更细粒度的控制。

    【讨论】:

    • 非常感谢,它解决了我的问题,除了 postgresql::server 类不存在“ensure”参数。除此之外,很高兴您的帮助
    • 好收获。我刚刚解决了这个问题。
    猜你喜欢
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2017-02-04
    • 2012-09-30
    • 1970-01-01
    相关资源
    最近更新 更多