我有关于 Jinja2
的问题模板,这个问题是在编写 state
时将一行字符串分成多行。或 salt
中的任何内容[我的确切情况是指试图在一个列表中一个接一个地编写一个机器列表,而不是仅仅在一个非常长的行中]。
我想说的是,我想实现这一目标:
nodegroups:
- group: 'L@adsdasdadas' +
'dasdasdasdas'
.............->imagine 10.000 names coming here
'adsasdasddsa'
与我现在必须做的方法相比:
nodegroups:
- group: 'L@adsdasdadas,dasdsadasdsa,dasdsadasdsa,......,asdqwe'
有没有更好的方法呢?有没有更好的方法来处理数千台机器?
你可以说
grains
,我想过,但我想知道是否有更好和优雅的方式来做到这一点。任何想法或意见都会对我有很大帮助
[编辑1]:
我写了一个脚本,它接受主机名列表并将它们添加到节点组部分的主配置文件中。现在它可能工作
最佳答案
数据源的选择
我会推荐 targeting with pillars 因为它们是从 Master 集中管理 = 方便,而不是 静态自定义颗粒 (在每个 Minion 上分布式配置)= 不方便 - see comparison summary here .
配置文件的限制nodegroups
在 Salt 配置文件 /etc/salt/master
中指定这不是 Jinja 模板(它具有纯 YAML 格式)。因此,您无法选择 use Jinja to join 带有字符串列表的外部输入。
可能的解决方案
为什么甚至提到加入?您可以将“在多行上断开一行字符串”的问题立即转化为使用列表的解决方案 - 无需中断(如果您在某处需要“一行字符串”,加入列表项很容易)。
换句话说,您可以定义 nodegroups
通过柱子(避免在您的示例中使用长字符串)。支柱,反过来,是 由 Jinja 渲染。因此,使用在某处定义的相同 Minion 列表,您可以通过 Jinja 在柱子中生成派生产品(无论是连接它们的字符串还是按原样列出)。有一个技巧可以让 reusing the same external data in multiple pillars files .
关于yaml - 改进的 SaltStack 缩放方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31542586/