在州申请期间发送事件的Saltstack

问题描述 投票:0回答:1

我正在尝试在中央主机文件中注册我的小兵,然后将此主机文件推送到我所有连接的小兵。

以下是我的想法:

  1. Minion发送一个事件'register',其ip和hostname将在master的中心主机文件中注册
  2. 主人听取事件“注册”并与反应堆/srv/reactor/register.sls作出反应
  3. Reactor调用安装在主服务器主机上的minion上的状态/srv/salt/register.sls来修改中心文件,并在修改完成后发送事件'hosts_modified'
  4. Master监听事件'hosts_modified'并与reactor /srv/reactor/deploy_hosts.sls做出反应,它在所有连接的minions上应用状态/srv/salt/hosts.sls来推送新修改的hosts文件

前3个步骤正常,但主人没有对最后一个事件'hosts_modified'作出反应。

命令启动minion上的注册:

salt-call event.send register minion_host=somehostname minion_ip=1.1.1.1

主反应堆配置(/etc/salt/master.d/reactor.conf):

reactor:
  - salt/beacon/*/inotify//etc/hosts:
    - /srv/reactor/revert.sls
  - 'deployment':
    - /srv/reactor/deployment.sls
  - 'register':
    - /srv/reactor/register.sls
  - 'hosts_modified':
    - /srv/reactor/deploy_hosts.sls

/虽然V/reactor/register.少林寺

{% set forwarded_data = data.data %}
test:
  local.state.sls:
    - tgt: 'master'
    - args:
      - mods: register
      - pillar:
          forwarded_data: {{ forwarded_data | json() }}

/虽然V/salt/register.少林寺

{% set data = salt.pillar.get('forwarded_data') %}

add_host:
   cmd.run:
     - name: /srv/scripts/hosts-manage.sh {{ data.minion_ip }} {{ data.minion_host }}

event_host_modified:
   event.send:
     - name: hosts_modified
     - require:
       - cmd: add_host

/虽然V/reactor/deploy_hosts.少林寺

deploy_hosts:
  local.state.sls:
    - tgt: '*'
    - name: hosts

/虽然V/salt/hosts.少林寺

# Hosts file management
/etc/hosts:
  file.managed:
    - source: salt://repo/conf/hosts

我做错了吗?

是否无法处理应用状态时发送的事件?

编辑

我终于用一个Orchestrate Runner做到了。

/虽然V/reactor/register.少林寺:

{% set forwarded_data = data.data %}
register:
  runner.state.orch:
    - args:
      - mods: orch.register
      - pillar:
          forwarded_data: {{ forwarded_data | json() }}

/虽然V/salt/or唱/register.少林寺:

{% set data = salt.pillar.get('forwarded_data') %}

add_host:
   cmd.run:
     - name: /srv/scripts/hosts-manage.sh {{ data.minion_ip }} {{ data.minion_host }}
     - stateful: True

refresh hosts on minions:
  salt.state:
    - tgt: '*'
    - sls: hosts
    - watch:
      - cmd: add_host

/虽然V/salt/hosts.少林寺:

# Hosts file management
/etc/hosts:
  file.managed:
    - source: salt://repo/conf/hosts

它似乎是这样工作的。

salt-stack
1个回答
0
投票

我终于用一个Orchestrate Runner做到了。

/虽然V/reactor/register.少林寺:

{% set forwarded_data = data.data %}
register:
  runner.state.orch:
    - args:
      - mods: orch.register
      - pillar:
          forwarded_data: {{ forwarded_data | json() }}

/虽然V/salt/or唱/register.少林寺:

{% set data = salt.pillar.get('forwarded_data') %}

add_host:
   cmd.run:
     - name: /srv/scripts/hosts-manage.sh {{ data.minion_ip }} {{ data.minion_host }}
     - stateful: True

refresh hosts on minions:
  salt.state:
    - tgt: '*'
    - sls: hosts
    - watch:
      - cmd: add_host

/虽然V/salt/hosts.少林寺:

# Hosts file management
/etc/hosts:
  file.managed:
    - source: salt://repo/conf/hosts

它似乎是这样工作的。

© www.soinside.com 2019 - 2024. All rights reserved.