web-dev-qa-db-ja.com

シェフ/ナイフ環境構成ヘルプ

私は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」パラメーターを追加しようとしましたが(ドキュメントはどちらを使用するかについて少しあいまいです)、役に立ちませんでした。誰かがこれについて何かアドバイスがありますか?

1
Mediocre Gopher

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を使用してもらいます。

1
jtimberman