厨师和postgres;我该如何指定密码?

时间:2013-03-04 05:59:40

标签: postgresql chef vagrant

我是厨师新手,我正在尝试解释文档。我已将opscode postgresql配方添加到我的chef-solo环境中。 postgresql似乎安装和启动就好了,但不幸的是我无法登录到服务器,使其几乎无法使用。

文档提到了这一点:

  

以下节点属性在使用时存储在Chef服务器上   厨师客户端。因为chef-solo没有连接到服务器或保存   完全是节点对象,让密码在chef-solo中保持不变   运行时,必须在使用的json_attribs文件中指定它们。对于   例如:

{
  "postgresql": {
    "password": {
      "postgres": "iloverandompasswordsbutthiswilldo"
    }
  },
  "run_list": ["recipe[postgresql::server]"]
}

但是,我不知道“json_attribs”文件是什么。配方本身不包含这样的文件,我尝试使用谷歌搜索,没有结果。我也尝试创建这样一个文件并将其粘贴在我的目录结构中的随机位置,但当然这不起作用。

并且“没有工作”,我的意思是我带来了流浪汉,ssh'ed,并尝试“psql -U postgres -W”,然后输入我创建的密码...但总是得到身份验证错误。还要注意,我理解我为密码提供的值(例如,代替上面示例中的“iloverandompasswordsbutthiswilldo”)应该是密码的MD5哈希,而不是明文,所以这就是我提供的。

1 个答案:

答案 0 :(得分:7)

由于您使用的是Vagrant,您应该在Vagrant文​​件中添加类似以下内容的config.vm.provision :chef_solo do |chef|部分(其中也存在一个或多个chef.add_recipe个调用):

config.vm.provision :chef_solo do |chef|
  # other stuff... like: chef.add_recipe "postgresql::server"
  chef.json = {
    "postgresql" => {
      "password" => {
        "postgres" => "iloverandompasswordsbutthiswilldo"
      }
    }
  }
end

chef.json哈希是所有节点特定属性所在的位置,并且在Vagrant运行的配置期间将其移交给chef-solo,有关详细信息,请参阅Vagrant doc