如何使用salt-stack支柱管理minion角色?

时间:2014-12-23 10:42:47

标签: python virtual-machine salt-stack

我试图理解如何使用Salt和像Chef这样的角色可以使用,但是我的理解中有一些漏洞,即在这一点上阅读大量文档时未能填写。

主要问题是我尝试使用Salt管理角色,就像Chef一样,但我不知道如何恰当地设置支柱值。我想要做的是通过脚本或手动将角色分配给流浪盒,然后让机器在其上安装适当的文件。

我不明白的是,我能够设置一些东西,告诉盐主人在给出我想要的特定角色的情况下在盒子上安装什么。我试过设置

salt.pillar('site' => 'my_site1') 
在Vagrantfile中

然后使用

在salt状态top.sls文件中检查它
{{ pillar.get('site') == 'my_site1'
  -<do some stuff>

但这不起作用。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

因此,在支柱中匹配ID时会变得更容易。首先,将minion_id设置为可识别的东西,例如test-mysite1-db(最重要的是唯一。因此,最后的用户名首字母为例。 top.sls中的/srv/pillar执行

base:
 '<regex_matching_id1>':
   - webserver.mysite1
 '<regex_matching_id2>':
   - webserver.mysite2

然后在webserver.mysite1 put

role : mysiteid1

例如。

然后在/srv/state/top.sls中,您可以与jinja或仅与

匹配
base:
 'role:mysiteid1':
   - match: pillar
   - state
   - state2

因此,角色来自ids。适合我。

答案 1 :(得分:2)

如何实现和利用角色在salt文档中有意模糊。关于如何实施以及如何使用角色的每一种排列都会带来权衡 - 所以由你来决定如何去做。

在您的场景中,我可以假设您需要相当独特的角色。或与虚拟机VM关联的用途,然后让state.highstate运行与该角色关联的状态。

如果以上是正确的,为了简单起见,在学习盐的同时,我会选择谷物而不是支柱。

每个小兵

只需将role: webserver添加到/ etc / salt / grain并重新启动salt-minion。

在主人

更新/srv/state/top.sls文件,然后将状态.sls文件与该粒度相关联。

base:
  '*':
    - fail2ban

  role:webserver:
    - match: grain
    - nginx

  role:dbserver:
    - match: grain
    - mysql