如何在salt-stack上将文件从master复制到minions?

Jan*_*ith 5 saltstack

我想将文件从 salt stack 主服务器复制到 minion 服务器。我从/sf/ask/1938152051/找到了一个脚本。但我得到了一个错误。

copy_my_files:
  file.recurse:
    - source: salt://srv/salt/nginx.conf
    - target: /etc/nginx
    - makedirs: True
Run Code Online (Sandbox Code Playgroud)

错误:-

  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:
Run Code Online (Sandbox Code Playgroud)

我已经为两者提供了正确的路径。

小智 2

如果我是正确的, file.recurse 用于复制目录的内容。在这里,如果只复制一个文件,您需要使用file.managed

例如重用您的示例,这应该有效:

copy_my_files:
  file.managed:
    - name: /etc/nginx/nginx.conf
    - source: salt://nginx.conf
    - makedirs: True
Run Code Online (Sandbox Code Playgroud)

请注意,您要复制的 nginx.conf 文件必须位于 salt master 上的 /srv/salt 中。这是 salt:// 指向的默认位置(除非您修改了配置)

如果你想使用file.recurse复制多个文件,这也很容易

deploy linter configuration:
  file.recurse:
    - name: "/usr/local/linter"
    - source: salt://devtools/files/linter
    - makedirs: True
    - replace: True
    - clean: True
Run Code Online (Sandbox Code Playgroud)