web-dev-qa-db-ja.com

ノードのクックブックのバージョンをクエリする方法は?

使用例: DevOpsチームは以前にノードを起動しましたが、私のチームはバージョンを知りたいと考えていますrun_listで使用されている1つまたは複数のクックブック。 DevOpsチームは消防活動を行っているので、自給自足の方法を見つけたいと考えています。

試したコマンド:knife cookbook show COOKBOOK可能なすべてのバージョンを提供しますが、使用されているバージョンを指定しません。

knife node show NODEはすべてのクックブックを表示しますが、バージョン情報は添付されていません。

質問:コマンドがありますか(knife searchohai)ノードにデプロイされたバージョンをchef-serverに照会するには?

16
digit plumber

ボックスにSSHでログインできる場合は、/var/chef/cache/cookbooks/<cookbook name>/metadata.jsonの下でバージョンを確認できます。

また、シェフの実行中に@run_context.cookbook_collectionを参照してアクセスすることもできますが、おそらく役に立ちません。

通常、クックブックのバージョンは環境によって定義されますが、環境は時間の経過とともに変化するため、このノードが最後に収束したときに使用されたものと同じセットであるとは本当に信頼できません(特にしばらくの間)。

これまでで最も安全なオプションは、chefキャッシュを確認することです。

12
Tejay Cardon

Ohaiを使用している場合(おそらくそうです)、次のようなことができます。

knife search -i 'cookbooks:your-cookbook' -a cookbooks.your-cookbook.version

これにより、ホスト名とクックブックのバージョンを示す出力が得られます。

1 items found

server.name.example:
  cookbooks.cs-redis.version: 0.3.2
5
oskarpearson

この組織では、ベースクックブックを使用して、クックブックのバージョンを含むノードに属性を設定します。

run_context.cookbook_collection.each do |key, cookbook|
  node.set['base_cookbook']['cookbook_versions'][cookbook.name] = cookbook.version
end

次に、ノードで使用されているバージョンをクエリできます

knife node show <node-name> -a base_cookbook.cookbook_versions
5
Matt Cole

私はこれ(およびそのバージョン)をWindowsクライアントに使用しています

Invoke-Command -ComputerName $nodename -ScriptBlock { gci "c:\chef\cache\cookbooks\*\metadata.rb"  | % { select-string $_ -pattern '^version.*$' } | % { $_.Path.replace('\metadata.rb','') } } -Credential $creds
0
Craig Roberts

この投稿に出くわし、これを行うためのgrepコマンドを作成しました。

Sudo grep -o -e '\"version\"\:\"[a-zA-Z0-9.]*\"' -e '\"version\"\: \"[a-zA-Z0-9.]*\"' /var/chef/cache/cookbooks/*/metadata.json
0
Saedar

新しいバージョンのクックブックを公開し、どのノードが私のクックブックの最新バージョンを使用しているかを知りたいという同様の要件がありました。以下のナイフコマンドは私のために働いた。

knife search -i node "cookbooks:<cookbook-name> AND cookbooks_<cookbook-name>_version:100.1.0"
0
Santosh Vemu

ナイフを使った方法はわかりませんが、 https://manage.chef.io でManaged Chefにログインして、組織のノードセクションに移動できます。問題のノード名をクリックし、右下のRun List、 クリック Expand Allリンク。これにより、各レシピが実行されるクックブックのバージョンが表示されます。

0
Derek

2つのステップの解決策を考えることができます。

手順1:ナイフノードショー<%node-name%>。出力には、ノードで使用されている環境が含まれているはずです。

手順2:ナイフ環境の表示<%environment-name%>。この出力には、ノードにデプロイされているすべてのクックブックとそのバージョンの詳細が表示されます

0
Arif Akram Khan