我正在通过SaltStack部署一个集群(在Azure上),我已经安装了客户端,它启动了一个反应器,运行了一个编排来推送一个Mine配置,执行一个更新,重新启动salt-minion。(我将其升级为重新启动计算机)
在所有这些之后,我不能访问挖掘数据,直到我重新启动minion
/srv/reactor/startup_orchestration.sls
startup_orchestrate:
runner.state.orchestrate:
- mods: orchestration.startuporchestration.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: Trueorchestration.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 %}我如何通过一个反应堆推送一个矿山更新,然后在不久之后获得数据?
发布于 2018-02-09 07:18:36
我从pillar部署我的mine_functions,这样我就可以动态地更新函数,然后你只需要运行salt <target> saltutil.refresh_pillar和salt <target> mine.update就可以在一个新的主机上获取你的mine信息。
示例:
/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然后,您将确保您的pillar的top.sls以适当的minion为目标,然后执行saltutil.refresh_pillar/mine.update来更新您的mine函数&为mine提供数据。在学习了上面的支柱之后,我现在有了名为aws_cidr和zk_pub_ips的函数,我可以从中提取数据。
此方法需要注意的一点是,必须在minion配置中定义mine_interval,因此该参数不能通过pillar实现。不过,如果您对默认的60分钟间隔没意见,这不是问题。
https://stackoverflow.com/questions/48645718
复制相似问题