14

我遵循了 OpsCode快速入门指南,事情进展得相当顺利,但现在我在尝试角色时遇到了问题。我在我的存储库中有一个由 OpsCode 提供的“启动器”角色。当我遵循第一个官方文档时,我可以从我的 chef repo 顶部找到并运行以下内容:

knife upload roles

它只是返回,没有任何反应。我的厨师服务器上没有任何角色(新的或更新的)。以下行确实适用于创建和更新:

knife role from file .\roles\starter.rb

但我发现它过于繁琐,我更喜欢将我的整个 repo 推送到服务器(或至少所有角色)的东西,以使我更有信心一切都是最新的。

4

3 回答 3

31

是的,在这种情况下,厨师有点不一致。我使用接下来的 3 行将整个 repo 推送到 chef-server(当然在测试通过之后):

knife cookbook upload --all
knife role from file roles/*.rb
knife data bag from file --all
于 2013-08-16T10:15:06.417 回答
5

小刀上传基于之前的小刀必备 gem(现在以 chef_fs 的名称合并到厨师中)。

https://github.com/opscode/chef/issues/1641(和https://github.com/jkeiser/knife-essentials/issues/67)描述了这个问题:刀上传仅支持角色的 .json 文件。

这就是您的命令knife upload不输出任何内容的原因。

如果要使用刀上传,则必须先将所有角色转换为json(以https://gist.github.com/red56/834890为例)

于 2014-08-18T09:47:19.513 回答
0

Draco 建议的解决方案对我上传 data_bags 不起作用。这就是我所做的。

knife cookbook upload --all
knife role from file roles/*.rb
knife upload data_bags/
于 2017-03-22T06:03:35.410 回答