首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在傀儡中用epp模板加载json数据

在傀儡中用epp模板加载json数据
EN

Stack Overflow用户
提问于 2022-06-16 15:36:04
回答 1查看 145关注 0票数 1

在木偶中从.epp模板打印值时,我将面对

  1. I在hiera中有以下数据,它定义组(散列数组)

代码语言:javascript
复制
profiles::groups:
  - name: 'admins'
    type: 1
    rights: []
  - name: 'users'
    type: 2
    rights: []

  1. 上面的hiera键在.epp模板中被调用,如这个

代码语言:javascript
复制
   .....    
   groups = <%= require 'json'; JSON.pretty_generate scope['groups'] %> 
   .....

上述声明中的

  1. 应以下列格式(来自上述epp模板)打印文件中的值,但如下面所述

所示,会出现错误。

代码语言:javascript
复制
....... 
groups = [
  {
    "name": "admins",
    "type": 1,
    "rights": []
  },
  {
    "name": "users",
    "type": 2,
    "rights": []
  }
]
.....
代码语言:javascript
复制
Error Message: Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, epp(): Invalid EPP: Syntax error at 'json' 

虽然在.erb中声明相同的格式,但模板工作正常,并产生所需的输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-18 19:14:44

在erb中,它是嵌入的红宝石,你可以使用常规的红宝石函数,而在epp上,它是嵌入式的木偶,所以你需要使用木偶函数。在stdlib https://forge.puppet.com/modules/puppetlabs/stdlib中有一个可以使用的to_json_pretty,它可以完成这项工作,您可以这样使用它;

代码语言:javascript
复制
groups = <%= $groups.to_json_pretty %> 

我刚用它测试过;

代码语言:javascript
复制
# test/manifests/jsontest.pp
class test::jsontest {

  $groups = lookup('test::groups')

  file { '/root/epp':
    ensure  => file,
    content => epp("test/jsondata.epp", {groups => $groups})
  }
}
代码语言:javascript
复制
# test/templates/jsondata.epp
groups = <%= $groups.to_json_pretty %> 
代码语言:javascript
复制
# common.yaml
test::groups:
  - name: 'admins'
    type: 1
    rights: []
  - name: 'users'
    type: 2
    rights: []
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72648419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档