Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Goal is to have a collection of dot files (.bashrc, .vimrc, etc.) in a central location. Once it's there, Puppet should push out the files to all managed servers.

I initially was thinking of giving users FTP access where they could upload their dot files and then having an rsync cron job. However, it might not be the most elegant or robust solution. Wanted to see if anyone else had some recommendations.

share|improve this question
up vote 2 down vote accepted

If you use puppet, you could setup your puppet master to pull latest dot files from version control periodically.

On the version control side, you can let users have permission to manage their personal dot files. ( I'm not 100% sure on the details here, but you could use git submodules for example, and have a git sub repository for each users files. Before you sync the "main" git repo, you update the sub repos. )

Puppet can then push those files after a version control sync.

If the user breaks something, it should break only for him. He can then update the dot files in version control and wait for puppet to pick it up.

Assuming you use puppet environments, if it breaks, it should break on a small subset of hosts only.

Edit: Similar setup could work with Chef also.

share|improve this answer

There is a tool named csync2. It keep files on multiple hosts in a cluster in sync.

share|improve this answer
Great suggestion. I'll keep this one in mind. – Belmin Fernandez Nov 13 '11 at 22:04

My puppet users module handles dot files, but it doesn't have any mechanism to let users define theirs. Still, you might want to take a look at it.

share|improve this answer

If you don't mind having a big single point of failure, a central NFS server with all home directories auto-mounted is the classic way to solve this problem. That way, whenever a user SSH's to a new server, his/her home directory is already on the system.

This solution isn't very "cloudy", but it works really well if you're dealing with lots of servers in one physical location.

share|improve this answer

Your Answer


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.