0

我正在尝试洒水,但遇到了第一个障碍 - 出现此错误:

“策略 myapp 将安装在 :app 上,但没有服务器具有这样的作用。”

这是我的脚本:

package :ubuntu_version do
  runner "lsb_release -r"
end


policy :myapp, :roles => :app do
  requires :ubuntu_version
end

deployment do
  delivery :ssh do
    user 'root'
    password 'secret'
    role :app, 'server'
  end
end

这是完整的错误:

$ sprinkle -c -s install_kimptoc2.rb                             
/Users/kimptoc/.rvm/gems/ruby-1.9.3-p429@p-box-mgr/gems/sprinkle-0.5.2/lib/sprinkle/policy.rb:87:in `process': Policy myapp is to be installed on :app but no server has such a role. (Sprinkle::Policy::NoMatchingServersError)
  from /Users/kimptoc/.rvm/gems/ruby-1.9.3-p429@p-box-mgr/gems/sprinkle-0.5.2/lib/sprinkle/deployment.rb:79:in `block in process'
    from /Users/kimptoc/.rvm/gems/ruby-1.9.3-p429@p-box-mgr/gems/sprinkle-0.5.2/lib/sprinkle/deployment.rb:78:in `each'
    from /Users/kimptoc/.rvm/gems/ruby-1.9.3-p429@p-box-mgr/gems/sprinkle-0.5.2/lib/sprinkle/deployment.rb:78:in `process'
    from /Users/kimptoc/.rvm/gems/ruby-1.9.3-p429@p-box-mgr/gems/sprinkle-0.5.2/lib/sprinkle/script.rb:20:in `sprinkle'
    from /Users/kimptoc/.rvm/gems/ruby-1.9.3-p429@p-box-mgr/gems/sprinkle-0.5.2/lib/sprinkle/script.rb:16:in `sprinkle'
    from /Users/kimptoc/.rvm/gems/ruby-1.9.3-p429@p-box-mgr/gems/sprinkle-0.5.2/bin/sprinkle:108:in `<top (required)>'
    from /Users/kimptoc/.rvm/gems/ruby-1.9.3-p429@p-box-mgr/bin/sprinkle:19:in `load'
    from /Users/kimptoc/.rvm/gems/ruby-1.9.3-p429@p-box-mgr/bin/sprinkle:19:in `<main>'
    from /Users/kimptoc/.rvm/gems/ruby-1.9.3-p429@p-box-mgr/bin/ruby_noexec_wrapper:14:in `eval'
    from /Users/kimptoc/.rvm/gems/ruby-1.9.3-p429@p-box-mgr/bin/ruby_noexec_wrapper:14:in `<main>'

我从这个味噌指南开始。还检查了备忘单和乘客堆栈

4

2 回答 2

2

升级洒水并检查我的install.rb配置文件后,我遇到了这个错误:

sprinkle -s install.rb -t

我正在使用 capistrano,并且在我的 capistrano deploy.rb 文件中确实有一个“应用程序”角色。我还有一个packages/deploy.rb包,可以创建部署用户、添加 SSH 密钥等。

对于我自己,我通过确保requires :deploy在策略配置中指定来修复错误:

policy :appserver, :roles => :app do
  requires :deploy
end

根据Sprinkle 文档中的示例配置,该交付和 capistrano 在部署块中配置如下。

deployment do
  delivery :capistrano do
    recipes 'deploy'
  end
end

通过这些更改,当我重新检查配置时,我不再看到引发的异常。

于 2013-05-27T22:27:13.847 回答
0

似乎这是此版本 Sprinkle (0.5.2) 的错误

https://github.com/sprinkle-tool/sprinkle/issues/109

于 2013-05-28T21:28:28.863 回答