厨师/刀的环境configuration帮助

我有以下作为我的knife.rb:

log_level :info log_location STDOUT node_name 'user' client_key '/home/user/.chef/user.pem' validation_client_name 'chef-validator' validation_key '~/.chef/validation.pem' chef_server_url 'url:4000' cache_type 'BasicFile' cache_options( :path => '/home/user/.chef/checksums' ) cookbook_path [ './', './site-cookbooks' ] 

我可以做“菜谱”和所有有趣的东西就好,但是当我去编辑我得到:

 # knife node edit test.domain.com -c knife.rb -e vim ERROR: ArgumentError: Attribute chef_environment is not defined! 

我有一个环境设置:

 # knife environment list _default production 

而我试图编辑的节点就是在那个环境下。 我已经尝试使用-E参数,并且为我的knife.rb添加了一个“environment”和“chef_environment”参数(文档对于我应该使用的有点模糊),但是无济于事。 任何人有任何意见呢?

在您使用Knife的本地系统上安装了哪个版本的Chef? 厨师服务器上运行的是什么版本? (我假设用'url:4000'chef_server_url你运行你自己的服务器而不是Opscode的)。

你可以用“-VV”获得更多的信息。

 knife node edit test.example.com -c knife.rb -e vim -VV 

knife.rb中的默认环境设置是environment 。 在节点本身上, chef_environment是Node对象的一种方法,它返回节点环境的值,而不是属性。

另外,我build议把knife.rb放在Chef Repository的.chef目录下,或者放在你的主目录下。 刀会通过查找.chef/knife.rb自动检测configuration,类似于git。

Knife也将使用在shell环境variablesEDITOR中指定的编辑器。

 export EDITOR=`which vim` 

将它使用vim。