使用Chef postgresql安装PostgreSQL 9.2

Tob*_*ede 7 postgresql chef-infra vagrant ubuntu-12.04

我很难在Vagrant VM(Ubuntu 12.04)上安装带有Opscode postgresql cookbook的 PostgreSQL 9.2 .

这是我的食谱:

node.set['postgresql']['version']             = "9.2"
node.set['postgresql']['enable_pgdg_apt']     = true
node.set['postgresql']['password']            = {postgres: "pwd"}
node.set['postgresql']['server']['packages']  = ["postgresql-9.2"]

include_recipe "postgresql::apt_pgdg_postgresql"
include_recipe "postgresql::server"
include_recipe "database"
Run Code Online (Sandbox Code Playgroud)

运行结果如下:

[2013-05-23T11:00:52+00:00] FATAL: Chef::Exceptions::EnclosingDirectoryDoesNotExist:
template[/etc/postgresql/9.2/main/postgresql.conf] (postgresql::server line 60) had an error: 
Chef::Exceptions::EnclosingDirectoryDoesNotExist: Parent directory /etc/postgresql/9.2/main does not exist.
Run Code Online (Sandbox Code Playgroud)

我正在使用poostgresql cookbook的最新3.0.0版本.

使用干净的VM(vagrant destroy,up等)从头开始重新运行所有内容会出现此错误:

[2013-05-23T11:16:37+00:00] FATAL: Chef::Exceptions::EnclosingDirectoryDoesNotExist:
template[/etc/postgresql/9.1/main/postgresql.conf] (postgresql::server line 60) had an error: 
Chef::Exceptions::EnclosingDirectoryDoesNotExist: Parent directory /etc/postgresql/9.1/main does not exist.
Run Code Online (Sandbox Code Playgroud)

突然间我们甚至没有合适的版本.

sko*_*zen 9

这是最终为我修复的内容:

  1. update-alternatives --remove postmaster.1.gz /usr/share/postgresql/9.1/man/man1/postmaster.1.gz

  2. 使用下面的conf.

剪断:

postgresql: {
    enable_pgdg_apt: true,
    dir: "/etc/postgresql/9.2/main",
    config: {
        data_directory: "/var/lib/postgresql/9.2/main",
        hba_file: "/etc/postgresql/9.2/main/pg_hba.conf",
        ident_file: "/etc/postgresql/9.2/main/pg_ident.conf",
        external_pid_file: "/var/run/postgresql/9.2-main.pid",
        ssl_key_file: "/etc/ssl/private/ssl-cert-snakeoil.key",
        ssl_cert_file: "/etc/ssl/certs/ssl-cert-snakeoil.pem",
    },
    client: {
        packages: ["postgresql-client-9.2",],
    },
    server: {
        packages: ["postgresql-9.2", "postgresql-server-dev-9.2"],
    },
    contrib: {
        packages: ["postgresql-contrib-9.2"],
    },
    password: {
      postgres: 'postgres'
    },
    pg_hba: [
      {type: 'local', db: 'all', user: 'all', addr: nil, method: 'trust'},
      {type: 'host', db: 'all', user: 'all', addr: '127.0.0.1/32', method: 'trust'},
      {type: 'host', db: 'all', user: 'all', addr: '::1/128', method: 'trust'}
    ],
    version: "9.2",
},
Run Code Online (Sandbox Code Playgroud)


Ric*_*ton 7

我能够通过设置目录来解决这个问题:

node.set['postgresql']['dir'] = "/var/lib/postgresql/9.2/main"
Run Code Online (Sandbox Code Playgroud)

看起来这是同样的问题:http://tickets.opscode.com/browse/COOK-2113