Saltstack通过盐反应器和跑步者对小兵施加状态

时间:2016-07-26 01:02:28

标签: salt-stack

我有多个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循环环境。 也可以使用除了编排之外的任何东西。

1 个答案:

答案 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”节点组中的所有小兵。

希望这有帮助。