木偶:这是生成外部事实的正确方法吗?

时间:2018-08-06 20:30:40

标签: puppet

我对外部事实有些困惑。
以最简单的形式,我可以在facts.d文件夹中创建一个json文件并使其工作。 但是我需要通过一些创建json文件的shell脚本来动态构建它。我创建了以下内容并使它起作用,但是我无法确定这是否是正确的方法:

    facts.d文件夹中的
  1. shell脚本

    import createHistory from 'history/createBrowserHistory'
    const history = createHistory()
    
    history.listen((location, action) => {
        // location is an object like window.location
        console.log(action, location.pathname, location.state)
    })
    
  2. yaml文件看起来像这样

    cat <<END>some_facts.yaml
    ---
    myfacts_array:
    END
    for file in `some folder`  
    do
      echo "  - $file" >>some_facts.yaml
    done
    

这是实现此目标的正确方法吗?

1 个答案:

答案 0 :(得分:1)

木偶依靠Facter收集事实,包括外部事实。 Facter仅在3.5年以下的版本中才支持结构化,可执行的外部事实。如果您的Facter版本较旧,并且无法升级,则需要找到一种解决方法,例如定期在外部事实目录中编写平面的YAML或JSON文件。

如果您有合适的Facter版本,则必须执行脚本

  • 驻留在外部事实目录中
  • 从适当的shebang行开始
  • 成为可执行文件
  • 产生格式正确的YAML或JSON输出,表示散列,其键是事实名称,其值是关联的事实值。 *

如果您提出的脚本源是一个完整的示例,则它至少缺少一个shebang行,但输出似乎格式正确。除此之外,对于您呈现的内容是否是“正确的方式”,我没有任何评论。


* 必须使用YAML或JSON才能以这种方式生成结构化的事实。对于纯字符串事实,您可以改为输出KEY = VALUE对,每行一对。