所以这可能有点令人困惑,但请耐心等待。简而言之,我想遍历具有特定键值的所有属性,然后在值不为空的情况下将它们插入模板。这是我的代码:
属性:
# === Default file Configurations
#
default['elasticsearch']['default']['ES_USER'] = ''
default['elasticsearch']['default']['ES_GROUP'] = ''
default['elasticsearch']['default']['ES_HEAP_SIZE'] = ''
default['elasticsearch']['default']['MAX_OPEN_FILES'] = ''
default['elasticsearch']['default']['MAX_LOCKED_MEMORY'] = 'unlimited'
default['elasticsearch']['default']['MAX_MAP_COUNT'] = ''
default['elasticsearch']['default']['LOG_DIR'] = '/var/log/elasticsearch'
default['elasticsearch']['default']['DATA_DIR'] = '/var/lib/elasticsearch'
default['elasticsearch']['default']['WORK_DIR'] = '/tmp/elasticsearch'
default['elasticsearch']['default']['CONF_DIR'] = '/etc/elasticsearch'
default['elasticsearch']['default']['CONF_FILE'] = '/etc/elasticsearch/elasticsearch.yml'
default['elasticsearch']['default']['RESTART_ON_UPGRADE'] = ''
模板:
<% node['elasticsearch']['default'].each do |host| -%>
<% if node.elasticsearch.default.host not nil -%>
<%= host %>=<%= node.elasticsearch.default.host %>
<% end %>
输出(希望):
MAX_LOCKED_MEMORY=unlimited
LOG_DIR=/var/log/elasticsearch
DATA_DIR=/var/lib/elasticsearch
WORK_DIR=/tmp/elasticsearch
CONF_DIR=/etc/elasticsearch
CONF_FILE=/etc/elasticsearch/elasticsearch.yml
我的红宝石并不是最好的,因为我只是从所有这些东西开始,但是我找不到这种情况的任何例子。任何帮助将是巨大的,谢谢。
您可能的意思是:
<% node['elasticsearch']['default'].each do |key, value| -%>
<% unless value.empty? -%>
<%= key %>=<%= value %>
<% end %>
<% end %>
遍历a时Hash
,将遍历其键值对。因此对于第一次迭代,key
将是'ES_USER'
,并且value
将是''
(不是nil
…)。
接下来,检查该值是否不是blank?
,然后打印出该key=value
行。
模板(template)是一种高级别的文本文件。它可以做计算、执行 Ruby 代码或者引用你在 Puppet 配置清单中定义的变量值。能被 Puppet 部署的任何一个文本文件,你都可以使用模板来代替。 最简单的情况,一个模板可以仅是一个静态文本文件。更有用的情况是,你可以使用 ERB (嵌入式 Ruby)语法在模板中插入变量。例如: <%= name %>, this is a very l
问题内容: 我正在尝试显示健身课程清单(瑜伽,普拉提等)。对于每个班级类型,都有几个班级,因此我想将所有瑜伽班和所有普拉提班归为一组,依此类推。 我做了这个功能来切片并绘制它的地图 现在的问题是,根据http://golang.org/pkg/text/template/,我该如何遍历它,您需要以格式访问它,我不知道键(除非我也传递了一个切片模板中的键数)。如何在我的视图中解包此地图。 我目前所拥
在前面的例子中,我们已经看到使用 Ruby 可以根据表达式的结果插入不同的值。 你也可以使用循环对数组中的每个元素生成内容。 操作步骤 添加如下代码到你的配置清单: $ipaddresses = [ '192.168.0.1', '158.43.128.1', '10.0.75.207' ] file { "/tmp/addresslist.txt": c
问题内容: 我想在Django模板中进行以下列表迭代: django代码: 尝试此操作时出现以下错误: 我该如何完成? 问题答案: 有可能做 但你无法zip在for结构内进行调用。你必须先将压缩列表存储在另一个变量中,然后对其进行迭代。
问题内容: 我试图遍历并拾取目录中的文件,但是在实现它时遇到了一些麻烦。如何提取多个文件,然后将它们移动到另一个文件夹? 问题答案: 带回调的旧答案 您想要使用fs.readdir函数获取目录内容,并使用fs.rename函数实际执行重命名。如果您 需要 等待它们完成之后再运行代码,则这两个函数都具有同步版本。 我写了一个快速脚本来完成您所描述的。 在我的本地机器上测试。 更新:fs.promis
问题内容: 我毫不费力地使用JSON对象和jQuery-rails(jQuery库以及一个特殊的rails.js文件)进行Rails(3)的典型AJAX调用。 但是,在一个控制器中,我想在AJAX调用后在erb模板(create.js.erb)中返回一些JSON。 我已经尝试了控制器中所有事物的组合(@ object.to_json,’[{“ content”:“ hello world”}]’‘