Yaml saltstack中缩放的改进方法

Yaml saltstack中缩放的改进方法,yaml,state,salt-stack,jinja2,Yaml,State,Salt Stack,Jinja2,我对Jinja2模板有一个问题,这个问题是在编写state或salt中的任何内容时,在多行上断开一行字符串[我的确切情况是指尝试在列表中一个接一个地编写机器列表,而不是仅仅在一个很长的行中] 我想说的是,我想实现这一点: nodegroups: - group: 'L@adsdasdadas' + 'dasdasdasdas' .............->imagine 10.000 names coming here

我对
Jinja2
模板有一个问题,这个问题是在编写
state
salt
中的任何内容时,在多行上断开一行字符串[我的确切情况是指尝试在列表中一个接一个地编写机器列表,而不是仅仅在一个很长的行中]

我想说的是,我想实现这一点:

nodegroups:
  - group: 'L@adsdasdadas' +
            'dasdasdasdas'
             .............->imagine 10.000 names coming here
             'adsasdasddsa'
与我现在必须采取的方法相比:

nodegroups:
  - group: 'L@adsdasdadas,dasdsadasdsa,dasdsadasdsa,......,asdqwe'
有更好的方法吗?有更好的方法处理成千上万台机器吗

你可以说
grains
,我想了想,但我想知道是否有更好、更优雅的方法

任何想法或意见都会对我有很大帮助

[Edit1]: 我编写了一个脚本,获取主机名列表,并将它们添加到节点组部分的主配置文件中 我推荐,因为它们是从Master=conventive集中管理的,而不是静态自定义颗粒(在每个仆从上分布配置)=conventive-

配置文件的限制 节点组在Salt配置文件
/etc/Salt/master
中指定,该文件不是Jinja模板(它具有纯YAML格式)。因此,您没有使用字符串列表进行外部输入的选项

可能的解决办法 为什么还要提到加入?您可以将“在多行上断开一行字符串”的问题转化为立即使用列表的解决方案—无需断开(如果您在某个地方需要“一行字符串”,则连接列表项很容易)


换句话说,您可以通过支柱定义
节点组
(避免像示例中那样使用长字符串)。柱子依次由金贾渲染。因此,使用在某处定义的同一个仆从列表,您可以通过Jinja在支柱中生成衍生产品(无论是它们的连接字符串还是按原样列表)。有一个技巧允许

首先,我要感谢uvsmtid提出了这个绝妙的想法。对于造成的混乱,我也深表歉意

因此,我所做的是创建一个带有每个仆从名字的柱子[碰巧是它的id],然后在一个状态下,我所做的是将该列表中的值与仆从的实际id进行比较

{%for item in salt['pillar.get']('info') %}
  {%if grains['id'] == item %}
    something:
      cmd.run:
         - name: touch something

  {%endif%}
{%endfor%}

我希望这个解决方案能像帮助我一样帮助别人

你试过了吗?如果有效,可以通过它定义节点组。@uvsmtid对不起,我不明白你说的是什么mean@uvsmtid我确实尝试过,但不知怎么的,它不起作用…我将尝试并研究一下如何从命令行设置NdeGroups。它也不适合我,但这可能是。好的,这真是太棒了。非常感谢你的想法,也很抱歉confusion@tudoricc我希望它对你有用!我曾经尝试使用
节点组
,但我不再在我的用例中使用它们。我目前的具体情况是多个<10个节点的复杂编排-单个组
*
:)因此,如果您能在解决此问题后发表以下评论,我将不胜感激。请您解释一下当前设置的含义好吗?我看了您的答案,意识到我认为您确实需要从
节点组
配置中提取值。但你实现了不同的目标。所以,没关系。我对此也有评论。通常,我定义一个主机角色,并为该角色分配仆从。然后在各州,我可以使用仆从id来匹配角色-。这样,只有特定角色的仆从才能获得特定的配置。我刚才写的是一个非常基本的东西。但是,是的,你写的应该是我的下一步。谢谢