Ansible: SSH Error: unix_listener: too long for Unix domain socket
Customizing the control_path
solves the problem for me. Here is how to do it without spamming the home directory.
The control_path
defaults to (documentation):
control_path=%(directory)s/ansible-ssh-%%h-%%p-%%r
Edit ansible config.
vim ~/.ansible.cfg
Here are sample file contents with new control_path
value:
[defaults]
inventory=/etc/ansible/hosts
[ssh_connection]
control_path=%(directory)s/%%h-%%r
control_path_dir=~/.ansible/cp
The limit is 104 or 108 characters. (I found different statements on the web)
You XXXed out some sensitive information in the error message so it's not clear how long your path actually is.
I guess %(directory)s
is replaced with the .ansible
directory in your users folder. Removing that and using directly your user folder would save you 12 characters:
control_path=~/%%h‐%%r
Sure, that will spam your home directory with control sockets.
Depending on the actual length of your username, you could see if you can just create another directory or find a shorter path anywhere. For example, I use ~/.ssh/tmp/%%h_%%r
Only 3 chars less but it's enough.
Finally if none of that helps, you still could fall back using /tmp
for storing the sockets. But be aware that anyone with access to /tmp
on that machine might be able to use your sockets then.