我想在我的salt-master上有一个目录,它同步到我运行的Windows 7 minion。我尝试使用schedule.present,但我的运气很少。我不确定我的问题是什么,但我也认为这可能不是完成任务的最佳方法。
以下是我的环境:
盐主
操作系统:CentOS7
盐版: 2016.3.0
盐仆从
操作系统: Ubuntu 14.04
盐版: 2016.3.0
这是我目前的配置:
init.sls
syncFiles:
schedule.present:
- function: /home/user/directory
- seconds: 30
- splay: 10
/home/user/directory:
file.recurse:
- source: salt://source/directory/
当我运行它时,一切都会成功返回,mirrordirectory
会按预期第一次运行,但将来不会运行。
minion的调试输出就是这个。
[INFO ] Invalid function: mirrordirectory in scheduled job syncFiles.
我猜我需要把这个函数放在minion上,但我在文档中的任何地方都找不到。
如果有一种方法可以做到这一点而不在minion上放置一个函数,我很想知道它是什么,但我想至少学习如何运行saltatck中的时间表。
感谢任何帮助。
旁注
最终,这将是一个Windows 7小兵,而不是ubuntu,我只是想让它首先工作。
更新1
以下是我根据以下答案尝试的内容(并且它仍然无效)。
/srv/salt/mirrordirectory/init.sls
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/srv/salt/testfile.sls
/tmp/foo:
file.recurse:
- source: salt://files
/srv/salt/top.sls
base:
'*':
- mirrordirectory
/ SRV /盐/文件
此目录包含要同步的文件
主人返回所有成功:
myminion:
----------
ID: syncFiles
Function: schedule.present
Result: True
Comment: Job syncFiles in correct state
Started: 16:18:22.290216
Duration: 140.989 ms
Changes:
Summary for myminion
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
对minion的调试显示了一个问题:
[DEBUG ] Sending event - data = {'fun_args': ['testfile'], 'jid': 'req', 'return': ["No matching sls found for 'testfile' in env 'base'"], 'retcode': 1, 'success': True, 'schedule': 'syncFiles', 'cmd': '_return', 'pid': 24448, '_stamp': '2016-06-15T21:19:57.928894', 'fun': 'state.sls', 'id': 'myminion'}
[DEBUG ] Handling event tag '__schedule_return'
[INFO ] Returning information for job: req
这一行似乎是问题["No matching sls found for 'testfile' in env 'base'"]
。知道为什么它找不到文件吗?
更新2
的/ etc /盐/主
interface: 192.168.0.1
user: salt
这是我的主配置文件中唯一的两行。我想测试作为root以外的用户运行,并且在我更改了一些文件权限后,一切都运行正常。也许这就是问题...也许我错过了什么。
答案 0 :(得分:1)
schedule.present的函数必须是salt函数。在您的情况下,您可能想要做的是使用state.sls
。这是一个类似于你的工作的例子:
<强> foo.sls 强>
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
<强> testfile.sls 强>
/tmp/foo:
file.recurse:
- source: salt://files
<强> top.sls 强>
base:
'*':
- foo
所以,这里发生的是 - top.sls
将foo.sls
应用于仆从。 foo.sls
反过来使得一个小兵每30秒应用testfile.sls
。
希望这有帮助!