Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I've got about 10 remote servers being managed, through SSH, and I typically just SSH into each of them for remote management tasks. This requires me to have duplicated many of my dotfiles (like .zshrc, .vimrc) across each server so that I have a uniform experience across each one. Therefore, making a change to one of these files means distributing it out to all servers (worst case, manually, and in the best case using a provisioning tool like Ansible).

But if I were to mount the root filesystems of all those servers on my local workstation (like at /mnt/servers/server1/, /mnt/servers/server2/, etc) using something like NFS, SSHFS, Samba, or something else, then would that eliminate the need to share and copy dotfiles across each of these servers?

Because I'm using my local shell and Vim so only my local .zshrc and .vimrc get used. If I need to edit /etc/hosts on server3 I do it from my local workstation 'vi /mnt/servers/server3/etc/hosts' to edit the hosts file.

Will this eliminate the need for synchronizing my dotfiles across all the servers I'm managing?

share|improve this question
1  
You might be interested in this: vim.wikia.com/wiki/Editing_remote_files_via_scp_in_vim –  glenn jackman Jan 14 at 21:42
    
If you need to restart services running on the remote server, you have to be on that server. –  glenn jackman Jan 14 at 21:43
1  
Have you tried keeping the dotfiles on a single share and use symlinks on all the managed servers? After mounting that share on all the servers of course. –  BigHomie Jan 14 at 22:48

2 Answers 2

up vote 6 down vote accepted

This is a bad practice on what you are trying to do. First, you shouldn't be ssh-ing as often to the servers so that you require your .vimrc and .zshrc on remote hosts. Production machines need to be logged on in emergency situation mostly and even then all the work is done with root.

Second, if you still need to do that you can accomplish it utilizing ssh client configuration file "~/.ssh/config".

Put this in your "~/.ssh/config" on the client you are constantly connecting from:

cat ~/.ssh/config

Host *
  PermitLocalCommand yes
  LocalCommand scp /home/my_username/.*rc my_username@%h:/home/my_username/

This will copy your ~/.*rc files to every server you ssh to. But again it is not secure and desirable solution to use.

share|improve this answer
    
I didn't dv, but what's wrong with some config files on a production server, if it allows you to work faster? –  BigHomie Jan 14 at 23:27
1  
I think it is a bad practice. Servers are not meant to be of your convenience. Configured once, they never get touched, configuration management should do all the work. –  Danila Ladner Jan 14 at 23:32

I keep my dotfiles in a git repository along with a script that manages symlinks to them. In my profile file (that is sourced on login) I run a git pull and that script.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.