Salt-Stack 将目录从 salt master 复制到 minion

sim*_*nra 4 saltstack

背景:我一直致力于设置盐环境,并且达到了不仅要分发文件而且要分发目录的地步。我发现最明智的方法是将我想要复制的目录/srv/salt/path_to_dir放在主服务器上,然后使用cp.get_dir命令分发它。

我所做的:为了测试我创建的设置和命令,/srv/salt/tmp/foo并在其中放置了两个文件。然后当我salt minion_name cp.get_dir salt://tmp/foo /tmp/foo在主服务器上运行命令时,有一行输出正好读取minion_name:. 有点奇怪,除了minion 名称之外没有任何输出,甚至错误,但是好吧,我去检查minion 看看是否发生了任何事情。

在仆从还没有出现/tmp/,并且在没有新的内容/etc/salt//var/cache/salt/任。我登记了/var/log/salt/minion,但除了我一小时前试图找出为什么我不能使用file.copy递归设置为 true 来分发文件之外,什么也没有。

我的问题:有什么明显的我做错了吗?根据文档,我发现我所做的应该有效。似乎也没有任何错误输出。我应该尝试使用不同的命令或方法来通过 salt 分发包含来自 master 的内容的文件夹吗?

附加信息:master 和所有minions 都是Debian 系统。盐的已安装的版本是salt 2014.1.3 (Hydrogen)在主及salt-minion 0.17.5salt-minion 2015.5.3对爪牙我曾尝试这种方法。

Gra*_*avy 5

我不确定如何使用模块来做到这一点,我尝试了与您相同的模块并得到了相同的结果,所以可能是一个错误,但是如果您想设置 sls 状态,您可以使用 file.recurse 功能,它看起来像这样:

作为我使用的参考:

  • /srv/salt/test1/init.sls 作为我的 sls 文件,
  • 里面test1src目录testdir
  • 我们的目标,我们要复制到机器上是/test

init.sls

/test:
 file.recurse:
  - source: salt://test1/testdir
  - include_empty: True
Run Code Online (Sandbox Code Playgroud)

从那时起你可以

salt '<targetmachine>' state.sls test1
Run Code Online (Sandbox Code Playgroud)