Ubuntu 如何获得saltstack工作的schedule.present?
我想在我的salt主机上有一个目录,该目录与我运行的windows7 minion保持同步。我试过用,但运气不好。我不确定我的问题是什么,但我也认为这可能不是完成任务的最佳方式 我的环境是这样的: 盐母版Ubuntu 如何获得saltstack工作的schedule.present?,ubuntu,centos7,salt-stack,Ubuntu,Centos7,Salt Stack,我想在我的salt主机上有一个目录,该目录与我运行的windows7 minion保持同步。我试过用,但运气不好。我不确定我的问题是什么,但我也认为这可能不是完成任务的最佳方式 我的环境是这样的: 盐母版 interface: 192.168.0.1 user: salt OS:CentOS7 salt版本:2016.3.0 盐仆 OS:Ubuntu 14.04 salt版本:2016.3.0 以下是我当前的配置: init.sls syncFiles: schedule.presen
interface: 192.168.0.1
user: salt
OS:CentOS7
salt版本:2016.3.0
盐仆 OS:Ubuntu 14.04 salt版本: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/
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- mirrordirectory
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- foo
当我运行此命令时,所有内容都会成功返回,mirrordirectory
会按预期第一次运行,但以后不会运行
仆从的调试输出如下
[INFO ] Invalid function: mirrordirectory in scheduled job syncFiles.
我猜我需要把这个功能放在仆从身上,但我在文档中找不到
如果有一种方法可以做到这一点,而不必在仆从身上设置函数,我很想知道它是什么,但我想至少学习如何在saltsatck中运行时间表
感谢您的帮助
旁注 最终,这将是一个Windows7迷你版,而不是ubuntu,我只是想让它首先工作
更新1 以下是我根据下面的答案所做的尝试(但仍然不起作用) /srv/salt/mirrordirectory/init.sls
syncFiles:
schedule.present:
- function: /home/user/directory
- seconds: 30
- splay: 10
/home/user/directory:
file.recurse:
- source: salt://source/directory/
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- mirrordirectory
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- foo
/srv/salt/testfile.sls
syncFiles:
schedule.present:
- function: /home/user/directory
- seconds: 30
- splay: 10
/home/user/directory:
file.recurse:
- source: salt://source/directory/
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- mirrordirectory
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- foo
/srv/salt/top.sls
syncFiles:
schedule.present:
- function: /home/user/directory
- seconds: 30
- splay: 10
/home/user/directory:
file.recurse:
- source: salt://source/directory/
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- mirrordirectory
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- foo
/srv/salt/files
syncFiles:
schedule.present:
- function: /home/user/directory
- seconds: 30
- splay: 10
/home/user/directory:
file.recurse:
- source: salt://source/directory/
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- mirrordirectory
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- foo
此目录包含要同步的文件
主控返回所有成功:
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
仆从的调试显示了一个问题:
[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
这一行似乎是问题所在。[“在env'base'”中找不到与'testfile'匹配的sls]
。知道为什么找不到文件吗
更新2 /etc/salt/master
interface: 192.168.0.1
user: salt
这是我的主配置文件中仅有的两行。我想以root以外的用户身份测试运行,在我更改了一些文件权限后,一切都很正常。也许这就是问题所在……也许我错过了什么。时间表的功能。present必须是salt功能。在您的情况下,您可能需要使用
state.sls
。下面是一个类似于您为我工作的示例:
foo.sls
syncFiles:
schedule.present:
- function: /home/user/directory
- seconds: 30
- splay: 10
/home/user/directory:
file.recurse:
- source: salt://source/directory/
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- mirrordirectory
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- foo
testfile.sls
syncFiles:
schedule.present:
- function: /home/user/directory
- seconds: 30
- splay: 10
/home/user/directory:
file.recurse:
- source: salt://source/directory/
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- mirrordirectory
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- foo
top.sls
syncFiles:
schedule.present:
- function: /home/user/directory
- seconds: 30
- splay: 10
/home/user/directory:
file.recurse:
- source: salt://source/directory/
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- mirrordirectory
syncFiles:
schedule.present:
- function: state.sls
- job_args:
- testfile
- seconds: 30
- splay: 10
/tmp/foo:
file.recurse:
- source: salt://files
base:
'*':
- foo
因此,这里发生的是-top.sls
将foo.sls
应用于仆从foo.sls
每隔30秒依次应用一个仆从testfile.sls
希望这有帮助 我仍然有一个问题。我用我当前的调试工具更新了问题的结尾。看来它找不到testfile文件。我刚刚尝试了完全相同的salt配置,它对我来说非常有用。我怀疑您的盐主机配置可能有问题。您是否以任何方式更改了默认设置?你能把它粘贴到这里吗?我唯一更改的是
user:root
到user:salt
。我将把我的配置文件粘贴到问题中。再次感谢所有的帮助。为了以防万一,我取出了user:root行,它再次以root身份运行。这似乎没有什么帮助。我在两个干净的虚拟机上再次尝试,效果很好。为了排除任何配置问题,有没有办法在两个干净的设置(一个centOS和一个Ubuntu)上进行测试?