安装后立即访问Mine数据

时间:2018-02-06 14:50:23

标签: salt-stack

我正在通过SaltStack部署集群(在Azure上)我已经安装了客户端,它启动了一个反应堆,运行一个业务流程来推送一个Mine配置,进行更新,重新启动salt-minion。 (我将其升级为重新启动框)

在完成所有这些之后,在重新启动minion之前我无法访问我的数据

/srv/reactor/startup_orchestration.sls

startup_orchestrate:
  runner.state.orchestrate:
    - mods: orchestration.startup

orchestration.startup

orchestration.mine:
  salt.state:
    - tgt: '*'
    - sls:
      - orchestration.mine

saltutil.sync_all:
  salt.function:
    - tgt: '*'
    - reload_modules: True

mine.update:
  salt.function:
    - tgt: '*'

highstate_run:
  salt.state:
    - tgt: '*'
    - highstate: True

orchestration.mine

  {% if salt['grains.get']('MineDeploy') != 'complete' %}

/etc/salt/minion.d/globalmine.conf:
  file.managed:
    - source: salt:///orchestration/files/globalmine.conf


MineDeploy:
  grains.present:
    - value: complete
    - require: 
      - service: rabbit_running

sleep 5 && /sbin/reboot:
  cmd.run


{%- endif %}

如何通过反应堆推送矿井更新,然后不久后获取数据?

1 个答案:

答案 0 :(得分:0)

我从支柱部署mine_functions,以便我可以动态更新功能 然后你只需要salt <target> saltutil.refresh_pillarsalt <target> mine.update来获取新主机上的我的信息。

示例:

/srv/pillar/my_mines.sls

mine_functions:
  aws_cidr:
    mine_function: grains.get
    delimiter: '|'
    key: ec2|network|interfaces|macs|{{ mac_addr }}|subnet_ipv4_cidr_block
  zk_pub_ips:
    - mine_function: grains.get
    - ec2:public_ip

然后,您需要确保您的支柱top.sls以适当的仆从为目标,然后执行saltutil.refresh_pillar / mine.update以更新您的防雷功能&amp;地雷提供数据。在接受上述支柱后,我现在拥有名为aws_cidrzk_pub_ips的我的函数,我可以从中提取数据。

这种方法的一个警告是必须在minion配置中定义mine_interval,因此该参数不能通过支柱来实现。虽然如果您使用默认的60分钟间隔,但这不是问题。