【问题标题】:Validation of result of a CHEF Recipe验证 CHEF 食谱的结果
【发布时间】:2019-01-26 20:49:44
【问题描述】:

我正在为我的应用程序设置环境。这将涉及各种 CHEF 食谱的融合,例如包安装、文件夹创建、nfs挂载等

我必须在大约 5k+ 台服务器上执行这些操作,因此我希望对配方的操作进行某种验证;

要做: 配方应验证其操作的结果并记录状态,以便稍后对其进行解析并填充到状态仪表板

将此视为创建目录的通用方法。

node['my_cookbook']['directory'].each do |directory|
  directory "Applying #{directory['path']} directory configuration" do
    path directory['path']
    group directory['group']
    owner directory['owner']
    mode directory['mode']
    recursive directory['recursive'] || true
    action directory['action'] || :create
  end
end

考虑到上述情况应该是什么方法?

是否有任何特定的 CHEF 资源可供我们用来验证?

【问题讨论】:

  • 提高话题

标签: validation chef-infra


【解决方案1】:

您可以使用多种测试框架:

  • chefspec(单元\有意测试)

    使用 ChefSpec 模拟节点上资源的收敛:

    • 是 RSpec 的扩展,RSpec 是 Ruby 的行为驱动开发 (BDD) 框架
    • 是测试资源和配方的最快方法 ChefSpec 是一个框架,用于测试资源和食谱,作为模拟厨师客户端运行的一部分。 ChefSpec 测试执行得非常快。当用作说明书创作工作流程的一部分时,ChefSpec 测试通常是说明书中可能存在问题的第一个指标。

    ChefSpec 在禁用所有资源操作的情况下运行您的食谱代码。这意味着 ChefSpec 擅长测试食谱中的复杂逻辑,但实际上无法告诉您食谱是否在做正确的事情。

  • test-kitchen(集成和系统测试)

    Test Kitchen 是一种集成工具,用于在隔离的目标平台上开发和测试基础架构代码和软件。

  • inspec(系统测试)

    将您的合规性、安全性和其他政策要求转化为自动化测试。

可以将 inspec 安装集成为 chef-client 运行的一部分,并创建一个 an handler 用于在 chef-client 运行结束时调用 inspec。作为其中的一部分,序列化节点对象并在检查中反序列化它以轻松访问节点属性;)

【讨论】:

  • 谢谢,我们的框架中确实有 chefspec、testkitchen 和 inspec 实现。然而,这些将测试/检查虚拟环境中的说明书实施或模拟一些虚拟服务器上的聚合。我的要求是检查实际目标节点上的说明书实现,例如,如果我的说明书打算创建一个自定义目录,我应该能够检查说明书收敛是否成功,这不仅意味着厨师客户端成功,而且验证是否在正确的位置创建了正确的文件夹,并具有适当的权限、所有者和组。
  • @baggi:我已经更新了我的帖子。希望它能涵盖您的担忧(顺便说一下,我所描述的我对我的工作完美无缺):)
  • 谢谢。我通读了处理程序文档。如那里所述;假设我需要在配方本身中初始化处理程序,您能否建议现有配方文件中的内容,w.r.t 我第一篇文章中的示例,即文件夹创建?
  • 我决定如下实现:# Creating folder目录路径do``recursive true``action :create``end``#如果文件夹被创建则记录状态``log" [#{role}][#{recipe_name}]: 文件夹 '#{path}' 创建 - OK" do` ` only_if { Dir.exist?(path) }` ` end` 我需要对文件夹权限进行类似检查, 和所有者。您能否建议是否有任何方法可以检查/验证文件夹属性?
  • @baggi:很难在评论中阅读这样的内容。无论如何,我可能会在下周发布一个实现。一旦我这样做了,我会在这里更新它。
猜你喜欢
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
  • 2015-02-25
  • 1970-01-01
相关资源
最近更新 更多