gpt4 book ai didi

ubuntu - 如何让 schedule.present 在 saltstack 中工作?

转载 作者:行者123 更新时间:2023-12-04 18:41:06 27 4
gpt4 key购买 nike

我想在我的 salt-master 上有一个目录,它与我正在运行的 windows 7 minion 保持同步。我尝试使用 schedule.present ,但我的运气很少。我不确定我的问题是什么,但我也认为这可能不是完成任务的最佳方式。

这是我的环境的样子:

salt 师

操作系统: CentOS7

salt 版: 2016.3.0

salt minion

操作系统: Ubuntu 14.04

salt 版: 2016.3.0

这是我当前的配置:

初始化.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 上添加函数,我很想知道它是什么,但我至少想学习如何在 saltsatck 中运行计划。

任何帮助表示赞赏。

旁注

最终,这将是一个 Windows 7 minion,而不是 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/salt/文件

此目录包含要同步的文件

主人返回所有成功:
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/salt/master
interface: 192.168.0.1
user: salt

这些是我的主配置文件中仅有的两行。我想测试以 root 以外的用户身份运行,并且在我更改了一些文件权限后一切正常。也许这就是问题所在……也许我错过了什么。

最佳答案

schedule.present 的函数必须是 salt 函数。在您的情况下,您可能想要做的是使用 state.sls .这是一个类似于您对我有用的示例:

foo.sls

syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10

测试文件.sls
/tmp/foo:
file.recurse:
- source: salt://files

顶部.sls
base:
'*':
- foo

所以,这里发生的是 - top.sls申请 foo.sls对一个奴才。 foo.sls反过来让一个仆从申请 testfile.sls每 30 秒。

希望这可以帮助!

关于ubuntu - 如何让 schedule.present 在 saltstack 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37819472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com