chef/knife 环境配置帮助

chef/knife 环境配置帮助

我的 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 添加“环境”和“chef_environment”参数(文档对于我应该使用哪个有点含糊),但无济于事。有人对此有什么建议吗?

答案1

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

您可以使用‘-VV’从 Knife 中获取更多信息。

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

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

另外,我建议将 knife.rb 放在.chefChef 存储库的目录中,或者放在主目录中。Knife 将通过查找自动检测配置.chef/knife.rb,类似于 git。

Knife 也将使用 shell 环境变量中指定的编辑器 EDITOR。

export EDITOR=`which vim`

将让它使用 vim。

相关内容