私は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 paramを使用し、knife.rbに「environment」および「chef_environment」パラメーターを追加しようとしましたが(ドキュメントはどちらを使用するかについて少しあいまいです)、役に立ちませんでした。誰かがこれについて何かアドバイスがありますか?
Knifeを使用しているローカルシステムにインストールしているChefのバージョンは何ですか? 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オブジェクトへのメソッドであり、ノードの環境の値を返しますが、これは属性ではありません。
また、Chefリポジトリの.chef
ディレクトリまたはホームディレクトリにknife.rbを配置することをお勧めします。 Knifeは、gitと同様に、.chef/knife.rb
を検索することで構成を自動的に検出します。
Knifeは、シェル環境変数EDITORで指定されたエディターも使用します。
export EDITOR=`which vim`
Vimを使用してもらいます。