正则表达式 – 盐堆栈中的正则表达式匹配
我正在重写从木偶到盐栈的一些模块.
在木偶中我们可以使用节点来具体这部分用于这台机器, node /williamd+.aws.dev/ { # some codes here.. } 但在盐栈中,它并不那么优雅: {% if grains['fqdn'] == 'william.aws.dev' %} # some codes here.. {% endif %} 并且不支持正则表达式. 有没有办法用更少的代码在saltstack中重写它? 注意我不想使用top.sls来定义使用哪个sls的节点.因为它会使top.sls文件太大而无法维护. 我只想在top.sls中定义一个简单的两行: '*': - node.* 每次我在salt中添加一些节点时,我只需要在节点目录下创建一个新文件. 解决方法
我仍然建议将SLS分配给topfile中的节点,只是因为你现在设置它的方式,每个节点都得到一个节点/目录下每个SLS的副本,其中的逻辑运行编码在SLS自己.考虑到你可以在你的top.sls中完成所有这些逻辑和正则表达式相关的匹配,这对我来说似乎有点混乱.
好的,您可以通过仅使用top.sls来获得此功能,同时仍将其保持在可管理的大小.您的意图似乎是让每个节点获得自己的SLS文件,并将节点分配给与其fqdn匹配的SLS.如果是这种情况,那么看看这个示例top.sls,从salt grains documentation调整 {% set grain_fqdn = salt['grains.get']('fqdn','') %} base: 'fqdn:{{ grain_fqdn }}': - match: grain - node.{{ grain_fqdn }} 这将确保带有grain fqdn = williams.aws.dev的节点被分配了node.williams.aws.dev.sls状态文件.请注意,您的匹配可以使用盐允许的任何类型的正则表达式或复合匹配:http://docs.saltstack.com/en/latest/topics/targeting/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |