我试图理解如何使用Salt和像Chef这样的角色可以使用,但是我的理解中有一些漏洞,即在这一点上阅读大量文档时未能填写。
主要问题是我尝试使用Salt管理角色,就像Chef一样,但我不知道如何恰当地设置支柱值。我想要做的是通过脚本或手动将角色分配给流浪盒,然后让机器在其上安装适当的文件。
我不明白的是,我能够设置一些东西,告诉盐主人在给出我想要的特定角色的情况下在盒子上安装什么。我试过设置
salt.pillar('site' => 'my_site1')
在Vagrantfile中然后使用
在salt状态top.sls
文件中检查它
{{ pillar.get('site') == 'my_site1'
-<do some stuff>
但这不起作用。这样做的正确方法是什么?
答案 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