How to copy file from master to minions on salt-stack?
Solution 1:
file.recurse is for copying the content of a directory if I'm correct. Here, what you have to do to copy just one file would be to use file.managed.
For instance reusing your example, this should be working:
copy_my_files:
file.managed:
- name: /etc/nginx/nginx.conf
- source: salt://nginx.conf
- makedirs: True
Note that the nginx.conf file you want to copy has to be located in /srv/salt on the salt master. Thats the default place were the salt:// is pointing (unless you modified your configuration)
If you want to copy multiple file using the file.recurse it's also quite easy
deploy linter configuration:
file.recurse:
- name: "/usr/local/linter"
- source: salt://devtools/files/linter
- makedirs: True
- replace: True
- clean: True
Solution 2:
To simply copy a file, not as part of a state, use salt-cp
.
The source can be any file on the master. It does not need to be within the salt fileserver.
salt-cp '*' SOURCE [SOURCE2 SOURCE3 ...] DEST