我有以下作为我的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。