使用例: DevOpsチームは以前にノードを起動しましたが、私のチームはバージョンを知りたいと考えていますrun_listで使用されている1つまたは複数のクックブック。 DevOpsチームは消防活動を行っているので、自給自足の方法を見つけたいと考えています。
試したコマンド:knife cookbook show COOKBOOK
可能なすべてのバージョンを提供しますが、使用されているバージョンを指定しません。
knife node show NODE
はすべてのクックブックを表示しますが、バージョン情報は添付されていません。
質問:コマンドがありますか(knife search
、ohai
)ノードにデプロイされたバージョンをchef-serverに照会するには?
ボックスにSSHでログインできる場合は、/var/chef/cache/cookbooks/<cookbook name>/metadata.json
の下でバージョンを確認できます。
また、シェフの実行中に@run_context.cookbook_collection
を参照してアクセスすることもできますが、おそらく役に立ちません。
通常、クックブックのバージョンは環境によって定義されますが、環境は時間の経過とともに変化するため、このノードが最後に収束したときに使用されたものと同じセットであるとは本当に信頼できません(特にしばらくの間)。
これまでで最も安全なオプションは、chefキャッシュを確認することです。
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
この組織では、ベースクックブックを使用して、クックブックのバージョンを含むノードに属性を設定します。
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
私はこれ(およびそのバージョン)をWindowsクライアントに使用しています
Invoke-Command -ComputerName $nodename -ScriptBlock { gci "c:\chef\cache\cookbooks\*\metadata.rb" | % { select-string $_ -pattern '^version.*$' } | % { $_.Path.replace('\metadata.rb','') } } -Credential $creds
この投稿に出くわし、これを行うためのgrepコマンドを作成しました。
Sudo grep -o -e '\"version\"\:\"[a-zA-Z0-9.]*\"' -e '\"version\"\: \"[a-zA-Z0-9.]*\"' /var/chef/cache/cookbooks/*/metadata.json
新しいバージョンのクックブックを公開し、どのノードが私のクックブックの最新バージョンを使用しているかを知りたいという同様の要件がありました。以下のナイフコマンドは私のために働いた。
knife search -i node "cookbooks:<cookbook-name> AND cookbooks_<cookbook-name>_version:100.1.0"
ナイフを使った方法はわかりませんが、 https://manage.chef.io でManaged Chefにログインして、組織のノードセクションに移動できます。問題のノード名をクリックし、右下のRun List
、 クリック Expand All
リンク。これにより、各レシピが実行されるクックブックのバージョンが表示されます。
2つのステップの解決策を考えることができます。
手順1:ナイフノードショー<%node-name%>。出力には、ノードで使用されている環境が含まれているはずです。
手順2:ナイフ環境の表示<%environment-name%>。この出力には、ノードにデプロイされているすべてのクックブックとそのバージョンの詳細が表示されます