knife node show my_chef_node
将为您提供食谱,角色等信息,但理想情况下我想要的是能够看到这些食谱食谱的版本。
knife search node 'recipes:my_cookbook\:\:default'
返回节点,但knife search node 'recipes:my_cookbook\:\:default@0.3.1'
没有。
答案 0 :(得分:1)
除非您约束运行列表,否则它将在运行时计算。通过查看加载到服务器中的cookbook版本来确定这一点非常困难。
如何限制运行列表?一种机制是在运行列表上明确设置版本,但这只会部分帮助,因为它不会锁定依赖项的版本(除非您在cookbook元数据中添加了约束)。
最佳方法是设置Chef环境并将其与受管节点关联。在加载cookbook时使用工具设置cookbook约束。例如,使用Berkshelf
public async Task SaveFilesAsync(string path, List<string> list, CancellationToken token)
{
int counter = 0;
var options = new ParallelOptions
{
CancellationToken = token,
MaxDegreeOfParallelism = Environment.ProcessorCount,
TaskScheduler = TaskScheduler.Default
};
await Task.Run(
() =>
{
try
{
Parallel.ForEach(
list,
options,
(item, state) =>
{
// if cancellation is requested, this will throw an OperationCanceledException caught outside the Parallel loop
options.CancellationToken.ThrowIfCancellationRequested();
// safely increment and get your next file number
int index = Interlocked.Increment(ref counter);
string fullPath = string.Format(@"{0}\{1}_element.txt", path, index);
using (var sw = File.CreateText(fullPath))
{
sw.WriteLine(item);
}
Debug.Print(
"Saved in thread: {0} to {1}",
Thread.CurrentThread.ManagedThreadId,
fullPath);
});
}
catch (OperationCanceledException)
{
Debug.Print("Operation Canceled");
}
});
}
另一种出租人已知的方法是使用刀烹饪书上传命令
berks upload
berks apply my-special-runtime-env
最后,可以选择使用新的Chef策略文件功能。我没有亲自使用它,但为了完整性而包括它。