我有多个salt部署环境。 我有一个要求,我从minions,主人收到事件,提出一个事件,生成一些文件然后我想复制到minions。 我该怎么做呢? 我试图使用orchestrate让它工作。这就是我现在所拥有的:
reactor sls->
copy_cert:
runner.state.orchestrate:
- mods: _orch.copy_certs
- saltenv: 'central'
copy_certs sls->
copy_kube_certs:
salt.state:
- tgt: 'kubeminion'
- tgt_type: nodegroup
- sls:
- kubemaster.copy_certs
问题在于我想要在所有环境中实现,而不仅仅是一个环境。我怎么做? 或者有没有办法以某种方式使用jinja循环环境。 也可以使用除了编排之外的任何东西。
答案 0 :(得分:0)
您不需要为此协调,您只需要盐反应堆。
让我们说你从小兵salt-call event.send tag='event/test'
发射一个事件(你可以使用salt-run state.event pretty=True
观看盐事件总线):
event/test {
"_stamp": "2017-05-24T10:36:05.907438",
"cmd": "_minion_event",
"data": {
"__pub_fun": "event.send",
"__pub_jid": "20170524133601757005",
"__pub_pid": 4590,
"__pub_tgt": "salt-call"
},
"id": "minion_A",
"tag": "event/test"
}
现在你需要决定当salt收到事件时会发生什么,编辑/创建/etc/salt/master.d/reactor.conf(记得在编辑这个文件后重新启动salt-master):
reactor:
- event/test: # event tag to match
- /srv/reactor/some_state.sls # sls file to run
some_state.sls:
some_state:
local.state.apply:
- tgt: kubeminion
- tgt_type: nodegroup
- arg:
- kubemaster.copy_certs
- kwarg:
- saltenv: central
这会将状态kubemaster.copy_certs
应用于“kubeminion”节点组中的所有小兵。
希望这有帮助。