我正在通过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 %}
如何通过反应堆推送矿井更新,然后不久后获取数据?
答案 0 :(得分:0)
我从支柱部署mine_functions
,以便我可以动态更新功能
然后你只需要salt <target> saltutil.refresh_pillar
和salt <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_cidr
和zk_pub_ips
的我的函数,我可以从中提取数据。
这种方法的一个警告是必须在minion配置中定义mine_interval
,因此该参数不能通过支柱来实现。虽然如果您使用默认的60分钟间隔,但这不是问题。