在 Hiera 中做基础数学
Do basic math inside Hiera
我正在尝试根据自定义事实和基本模数在 hiera 中设置 crontab 的工作日,但我什至不知道这是否可行。
我想做类似的事情:
cron-job:
command: "do something"
user: myuser
hour: "%{::instance}"
minute: "%{::instance}"
weekday: "%{::instance}" % 7
能做到吗?
不,这是不可能的。请记住,YAML 只是 数据,而不是代码。
Hiera 确实提供了一些使用插值标记的转换,但只有 two functions 可以与这些一起使用,不能使用算术。
我不确定我是否遵循了用例,但您可能可以使用 inline_epp
或 inline_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 可以插入 variables or Hiera lookups,查找也可以在 inline_epp
或 inline_template
最终计算的代码中完成。
N.B。这是一个示例,您不应该将 Hiera 输入传递给 shell 命令,除非您信任您的用户并且真的喜欢头痛。
我正在尝试根据自定义事实和基本模数在 hiera 中设置 crontab 的工作日,但我什至不知道这是否可行。
我想做类似的事情:
cron-job:
command: "do something"
user: myuser
hour: "%{::instance}"
minute: "%{::instance}"
weekday: "%{::instance}" % 7
能做到吗?
不,这是不可能的。请记住,YAML 只是 数据,而不是代码。
Hiera 确实提供了一些使用插值标记的转换,但只有 two functions 可以与这些一起使用,不能使用算术。
我不确定我是否遵循了用例,但您可能可以使用 inline_epp
或 inline_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 可以插入 variables or Hiera lookups,查找也可以在 inline_epp
或 inline_template
最终计算的代码中完成。
N.B。这是一个示例,您不应该将 Hiera 输入传递给 shell 命令,除非您信任您的用户并且真的喜欢头痛。