我想将文件从 salt stack master 服务器复制到 minion 服务器。我找到了一个脚本https://stackoverflow.com/questions/27687886/copy-a-file-from-salt-master-to-minions。但我收到一个错误。
copy_my_files:
file.recurse:
- source: salt://srv/salt/nginx.conf
- target: /etc/nginx
- makedirs: True
错误:-
ID: copy_my_files
Function: file.recurse
Result: False
Comment: Specified file copy_my_files is not an absolute path
Started: 09:46:24.850682
Duration: 1.473 ms
Changes:
我已经为两者给出了正确的路径。
答案1
如果我没记错的话,file.recurse 用于复制目录的内容。在这里,如果要复制一个文件,你需要做的就是使用文件管理。
例如,重复使用您的示例,这应该可以工作:
copy_my_files:
file.managed:
- name: /etc/nginx/nginx.conf
- source: salt://nginx.conf
- makedirs: True
请注意,您要复制的 nginx.conf 文件必须位于 salt master 上的 /srv/salt 中。这是 salt:// 指向的默认位置(除非您修改了配置)
如果要使用复制多个文件文件递归也很容易
deploy linter configuration:
file.recurse:
- name: "/usr/local/linter"
- source: salt://devtools/files/linter
- makedirs: True
- replace: True
- clean: True
答案2
要简单地复制文件(而不是作为状态的一部分),请使用salt-cp
。
源可以是主服务器上的任何文件。它不需要位于 salt 文件服务器内。
salt-cp '*' SOURCE [SOURCE2 SOURCE3 ...] DEST
答案3
不幸的是@OrangeDog的答案目前不起作用,因为这个错误
要解决这个问题,您可以使用以下选项--chunked
:
salt-cp 'minion_node_id' --chunked SOURCE_ON_MASTER DEST_ON_MINION