我正在尝试从一个刀查询创建一个动态创建的逗号分隔的Splunk索引器列表(数据端口附加到每个主机名),该查询将返回的主机列表提供给模板和相应的erb。
然而,当我收敛到我的测试Docker实例时,虽然没有抛出任何错误,但conf文件中的字符串永远不会被创建。
这是刀查询,它引用的属性和模板资源
attribute file entry:
default['forwarder']['indexer_role'] = 'splunk_indexer'
knife query and template resource:
indexers = search(:node, "role:#{node['forwarder']['indexer_role']}")
template '/opt/splunkforwarder/etc/system/local/outputs.conf' do
source "system_local_outputs.erb"
owner 'nobody'
group 'nobody'
mode 0600
action :create
variables(
:indexers => indexers
)
end
这是该模板资源的相应erb文件
[tcpout]
defaultGroup = default-autolb-group
[tcpout:default-autolb-group]
disabled = false
<% @indexers.each do |member| %>
server = <%= member[ :hostname] + ":5501," %>
<% end %>
我不知道查询是否被错误地指定,或者模板资源是否错误,或者我是否在erb代码中犯了错误。
正如我上面提到的,没有抛出任何错误,代码编译和收敛而没有任何错误消息。这条线根本就不存在。
答案 0 :(得分:0)
这不会创建以逗号分隔的列表,它会生成多行,如:
server = <%= @indexers.map {|n| "#{n}:5501" }.join(",") %>
您在模板中可能需要的内容更像是:
knife search
但是,如果您没有首先看到这些行,则可能是您的搜索查询无效。请尝试使用roles:
进行检查,并使用role:
代替// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("your secret api key");
// You can find your endpoint's secret in your webhook settings
$endpoint_secret = "whsec_...";
$payload = @file_get_contents("php://input");
$sig_header = $_SERVER["HTTP_STRIPE_SIGNATURE"];
$event = null;
try {
$event = \Stripe\Webhook::constructEvent(
$payload, $sig_header, $endpoint_secret
);
} catch(\UnexpectedValueException $e) {
// Invalid payload
http_response_code(400); // PHP 5.4 or greater
exit();
} catch(\Stripe\Error\SignatureVerification $e) {
// Invalid signature
http_response_code(400); // PHP 5.4 or greater
exit();
}
// Do something with $event
http_response_code(200); // PHP 5.4 or greater
,因为它通常更正确。