首页 > 解决方案 > 在另一本食谱中重复使用一本食谱的输出

问题描述

考虑我有 2 个说明书,A 和 B,它们都是在 AWS EC2 实例上执行的运行列表的一部分。第一个食谱 A 执行一些代码并生成一个值并将其存储在 node.run_state['pass'] 变量中。我需要食谱 B 中的这个值,所以我可以直接在食谱 B 中重用这个值,因为它是在同一个节点上执行的。我无法在厨房测试场景,因为由于某些依赖关系,食谱 A 在厨房失败。我需要直接在 EC2 中尝试,但在尝试之前需要了解。新手厨师,请帮助理解。

标签: chef-infra

解决方案


是的,您可以从不同的说明书中读取和写入节点属性和 run_state,并在它们之间共享一些信息。但是你需要记住:

  1. 食谱 A 必须在食谱 B 之前运行,要么在运行列表中,要么食谱 B 必须include_recipe 'A'在其配方中。
  2. Chef run 有两个阶段:编译和执行。首先编译阶段在两个说明书中执行,然后是执行阶段。因此,您必须确保在将 run_state 变量实际写入 A 之前,然后再将其读取到 B 中。

推荐阅读