4

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

文档提到了这一点:

使用 chef-client 时,以下节点属性存储在 Chef 服务器上。因为 chef-solo 根本不连接到服务器或保存节点对象,要让密码在 chef-solo 运行中保持不变,您必须在使用的 json_attribs 文件中指定它们。例如:

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

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

“没用”,我的意思是我提出了 vagrant,ssh'ed 并尝试了“psql -U postgres -W”,然后输入了我创建的密码......但总是得到一个身份验证错误. 另请注意,我了解我为密码提供的值(例如,代替上面示例中的“iloverandompasswordsbutthiswilldo”)应该是密码的 MD5 哈希,而不是明文,所以这就是我提供的。

4

1 回答 1

7

由于您使用的是 Vagrant,您应该适当地将以下内容添加到您的 Vagrantfileconfig.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 文档

于 2013-03-08T14:44:53.220 回答