NixOS / nixops

NixOps is a tool for deploying to NixOS machines in a network or cloud.
https://nixos.org/nixops
GNU Lesser General Public License v3.0
1.77k stars 365 forks source link

nixops send-keys depends on rsync being on PATH #1399

Open andir opened 3 years ago

andir commented 3 years ago
$ nixops send-keys
someserver> uploading key ‘password’ to ‘/run/keys/password’...
someserver> Connecting to qemu:///system...
Traceback (most recent call last):
  File "/home/andi/.cache/pypoetry/virtualenvs/nixops-virtd-Oh6nY8rl-py3.8/bin/nixops", line 11, in <module>
    load_entry_point('nixops', 'console_scripts', 'nixops')()
  File "/home/andi/dev/nixos/nixops/nixops/__main__.py", line 710, in main
    args.op(args)
  File "/home/andi/dev/nixos/nixops/nixops/script_defs.py", line 643, in op_send_keys
    depl.send_keys(include=args.include or [], exclude=args.exclude or [])
  File "/home/andi/dev/nixos/nixops/nixops/deployment.py", line 1742, in send_keys
    nixops.parallel.run_tasks(
  File "/home/andi/dev/nixos/nixops/nixops/parallel.py", line 106, in run_tasks
    raise list(exceptions.values())[0]
  File "/home/andi/dev/nixos/nixops/nixops/parallel.py", line 70, in thread_fun
    work_result = (worker_fun(t), None, t.name)
  File "/home/andi/dev/nixos/nixops/nixops/deployment.py", line 1740, in worker
    m.send_keys()
  File "/home/andi/dev/nixos/nixops/nixops/backends/__init__.py", line 393, in send_keys
    self.upload_file(tmp, tmp_outfile)
  File "/home/andi/dev/nixos/nixops/nixops/backends/__init__.py", line 566, in upload_file
    return self._logged_exec(cmdline)
  File "/home/andi/dev/nixos/nixops/nixops/backends/__init__.py", line 478, in _logged_exec
    return nixops.util.logged_exec(command, self.logger, **kwargs)
  File "/home/andi/dev/nixos/nixops/nixops/util.py", line 271, in logged_exec
    process = subprocess.Popen(
  File "/nix/store/fjgnz0xfl04hsblsi4ym5y5akfh6mlmy-python3-3.8.5/lib/python3.8/subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/nix/store/fjgnz0xfl04hsblsi4ym5y5akfh6mlmy-python3-3.8.5/lib/python3.8/subprocess.py", line 1702, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'rsync'

Actually the target system also needs rsync installed once it has been provided to the client side.

andir commented 3 years ago

Related https://github.com/NixOS/nixpkgs/pull/91213 & https://github.com/NixOS/nixpkgs/pull/97171