背景:我一直在努力设置 salt 环境,现在我不仅想分发文件,还想分发目录。我发现最明智的方法是将我想要复制的目录放在/srv/salt/path_to_dir
主服务器上,然后使用cp.获取目录命令来分发它。
我做了什么:为了测试设置和命令,我创建了/srv/salt/tmp/foo
两个文件并将其放入其中。然后,当我salt minion_name cp.get_dir salt://tmp/foo /tmp/foo
在主服务器上运行命令时,有一行输出内容正是minion_name:
。有点奇怪的是,除了 minion 名称甚至错误之外没有输出,但没关系,我去检查 minion 以查看是否发生了什么事情。
在 minion 上它没有出现在 中,并且在或中也/tmp/
没有新内容。我检查了,但除了我花了一个小时尝试弄清楚为什么我不能使用将递归设置为 true 来分发文件之外什么也没有。/etc/salt/
/var/cache/salt/
/var/log/salt/minion
file.copy
我的问题:我做错了什么吗?根据文档,我发现我所做的应该有效。似乎也没有任何错误输出。我是否应该尝试使用其他命令或方法通过 salt 分发包含来自主服务器内容的文件夹?
附加信息:主服务器和所有从属服务器都是 Debian 系统。安装的 salt 版本salt 2014.1.3 (Hydrogen)
在主服务器和salt-minion 0.17.5
从属salt-minion 2015.5.3
服务器上,我已尝试过这种方法。
答案1
我不确定您如何使用模块来做到这一点,我尝试了与您相同的模块并得到了相同的结果,所以可能是错误,但如果您想设置 sls 状态,您可以使用 file.recurse 功能,它看起来像这样:
作为参考,我使用:
/srv/salt/test1/init.sls
作为我的 sls 文件,- 里面
test1
是源码目录testdir
- 我们的目标我们要复制到的机器是
/test
init.sls
/test:
file.recurse:
- source: salt://test1/testdir
- include_empty: True
从那时起你就可以
salt '<targetmachine>' state.sls test1