4

我正在尝试根据自定义事实和基本模数在 hiera 中设置 crontab 的工作日,但我什至无法弄清楚这是否可能。

我想做类似的事情:

  cron-job:
    command:  "do something"
    user:    myuser
    hour:    "%{::instance}"
    minute:  "%{::instance}"
    weekday: "%{::instance}" % 7

甚至可以做到吗?

4

2 回答 2

4

不,这是不可能的。请记住,YAML 只是数据,而不是代码。

Hiera 确实提供了一些使用插值标记的转换,但只有两个函数可以用于这些,没有算术。

于 2015-03-01T23:24:42.333 回答
1

我不确定我是否遵循用例,但你可能会使用inline_eppinline_template让它看起来像这个功能存在。

例如:

# In real usage this would be the result of a hiera lookup
$simple_lookup_result = '9 % 7'
$simple_evaluated = inline_template("<%= ${simple_lookup_result} %>")

exec { 'simple':
  command => "/bin/echo $simple_evaluated",
  logoutput => true,
}

# Again, hiera...
$complex_lookup_result = 'sprintf("The value is %i", 9 % 7)'
$complex_evaluated = inline_template("<%= ${complex_lookup_result} %>")

exec { 'complex':
  command => "/bin/echo $complex_evaluated",
  logoutput => true,
}

结果:

$ puppet apply eval.pp 
Notice: Compiled catalog for box in environment production in 0.06 seconds
Notice: /Stage[main]/Main/Exec[simple]/returns: 2
Notice: /Stage[main]/Main/Exec[simple]/returns: executed successfully
Notice: /Stage[main]/Main/Exec[complex]/returns: The value is 2
Notice: /Stage[main]/Main/Exec[complex]/returns: executed successfully
Notice: Applied catalog in 0.05 seconds

请记住,Hiera 可以插入变量Hiera 查找,查找也可以在inline_eppinline_template将最终评估的代码中完成。

请注意,这是一个示例,除非您信任您的用户并且非常喜欢头痛,否则您不应将 Hiera 输入传递给 shell 命令。

于 2018-08-20T06:14:22.037 回答