加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 盐堆栈中的正则表达式匹配

发布时间:2020-12-14 05:47:18 所属栏目:百科 来源:网络整理
导读:我正在重写从木偶到盐栈的一些模块. 在木偶中我们可以使用节点来具体这部分用于这台机器, 例如: node /williamd+.aws.dev/ { # some codes here.. } 但在盐栈中,它并不那么优雅: {% if grains['fqdn'] == 'william.aws.dev' %} # some codes here..{% end
我正在重写从木偶到盐栈的一些模块.

在木偶中我们可以使用节点来具体这部分用于这台机器,
例如:

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中完成所有这些逻辑和正则表达式相关的匹配,这对我来说似乎有点混乱.

everytime I add some node in salt,I just need to create a new file under the node directory.

好的,您可以通过仅使用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/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读