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

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

我想将文件从 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

相关内容