I'm trying to use rsync.synchronized in SaltStack to sync a directory from master to a minion. Here's the SLS configuration I've used:
sync_pyenv:
rsync.synchronized:
- source: /home/user/test/
- force: True
Executing salt 'test01' state.sls sync_files saltenv=dev results in the following error:
rsync: change_dir "/home/user/test" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23)
After ensuring the test directory exists on test01 and tweaking the SLS to include - prepare: True, the state runs successfully but doesn't sync the contents of /home/user/test/. The output indicates a successful run but shows "total size is 0".
I also tried adding - name: /home/user/test/ to the SLS, but it didn't resolve the issue. The directory and its contents are not being synced to the minion. I want to sync the test directory and its files without moving it to the Salt file_roots. What could be the issue here?
You have not specified a remote server for either the source or target. Nor have you specified a target directory. Thus it is running this command on
test01:The correct state would be:
You will still need to have set up SSH access for root from the minion to the master for this to work.
If the source files are on the master, you should probably mount them on the fileserver (i.e. with
file_roots) and usefile.recurse:Or, recreate the pyenv using states to set it up from scratch, rather than copying from a random user's home directory.