【发布时间】:2018-01-31 20:47:34
【问题描述】:
我正在尝试在 salt orchestrator 上执行 redis-trib.rb 实用程序(用于配置 redis 集群),在多个 minions 上执行 salt 状态以启动 redis 进程之后。
阅读 salt 文档,它看起来像是编排运行器执行我想要执行的 minion 状态。
确实,当使用sudo salt-run state.orchestrate orch.redis_cluster 执行时,这个 sn-p 功能完美:
redis_cluster_instances_create:
salt.state:
- tgt: '*redis*'
- highstate: True
问题在于下一步,这需要我在 Orchestrator 上调用 redis-trib.rb。阅读文档,看起来我需要使用salt.runner 状态(执行另一个运行器),调用salt.cmd 运行器(在本地执行盐状态),然后调用cmd.run 状态来实际执行命令。
我的样子是这样的:
redis_cluster_setup_masters_{{ cluster }}:
salt.runner:
- name: salt.cmd
- fun: cmd.run
- args:
- srv/salt/orch/redis_cluster/usr/bin/redis-trib.rb create {% for shard in shards %}{{ shard['master'] }} {% endfor %}
- kwargs:
unless: srv/salt/orch/redis_cluster/usr/bin/redis-trib.rb info {{ shards[0]['master'] }} | grep 'cluster_state:ok'
- require:
- salt: redis_cluster_instances_create
但它不起作用,并且盐错误出现:
lab-orchestrator_master:
----------
ID: redis_cluster_instances_create
Function: salt.state
Result: True
Comment: States ran successfully. No changes made to lab-redis04, lab-redis01, lab-redis02, lab-redis03.
Started: 09:54:57.811313
Duration: 14223.204 ms
Changes:
----------
ID: redis_cluster_setup_masters_pdnocg
Function: salt.runner
Name: salt.cmd
Result: False
Comment: Exception occurred in runner salt.cmd: Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/salt/client/mixins.py", line 392, in _low
data['return'] = self.functions[fun](*args, **kwargs)
TypeError: cmd() takes at least 1 argument (0 given)
Started: 09:55:12.034716
Duration: 1668.345 ms
Changes:
谁能建议我做错了什么?还是在编排器上本地执行命令的另一种方式?
【问题讨论】: