3

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.

4 Answers 4

2

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.

0
2

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

1
  • Great suggestion. I'll keep this one in mind. Nov 13, 2011 at 22:04
1

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.

0

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .