[emacs-berlin] tramp contact point

Max(☭) suraev at alumni.ntnu.no
Tue May 7 14:13:03 UTC 2019


Pardon the delay, some medical issues kept me busier than I hoped.

I've been playing with systemd-nspawn [1] containers recently - it's a 
really neat implementation which is available on pretty-much any modern 
GNU/Linux distro. What triggerred my curiosity though is machinectl [2] 
- interface tool to manage container interaction. It looks like that's a 
ready-made basis for yet another tramp transport: it allows to copy 
files to and from containers and even run shell commands inside the 
container. Moreover, it can do the same thing transparently over the 
network (see -H parameter).

Here's distilled quickstart:

# Obtain whatever will be run inside the container

machinectl pull-tar 

# Enable corresponding systemd target:

systemctl enable --now machines.target

# Enable and start container

systemctl enable --now 
systemd-nspawn at bionic-server-cloudimg-amd64-root.service

# Open the root shell inside container

machinectl shell bionic-server-cloudimg-amd64-root

Now it's possible to add new user and use it for further interactions:

machinectl shell user at bionic-server-cloudimg-amd64-root

machinectl copy-from user at bionic-server-cloudimg-amd64-root /tmp/test-file

machinectl copy-to user at bionic-server-cloudimg-amd64-root /tmp/test-file

To get the network working inside the container with systemd-networkd on 
the host I've got to create 
/etc/systemd/nspawn/bionic-server-cloudimg-amd64-root.nspawn as follows:


because default template use virtual ethernet link instead of real network.

That's pretty-much it. Seems like pretty natural addition to existing 
tramp transports.

[1] https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html

[2] https://www.freedesktop.org/software/systemd/man/machinectl.html



More information about the emacs-berlin mailing list