Why ansible? I'm storing my dotfiles in a private git repo and sync across multiple laptops. Works fine so far.
Put the dotfiles and directories into git. Symlink from ~/.vim to ~/dotfiles/.vim and be done with it. (~/dotfiles would contain the git checkout of course).
I was also using a simple bootstrap script and I too felt I was "killing mosquitos with a bazooka" using Ansible.
But I wanted to symlink my Sublime settings. That meant tinkering with shell code and separating the files in different dirs. Then I wanted to preinstall my Brew apps, but only for Mac.
So these tasks pilled up in shell scripts and became ugly. So Ansible, with it's easy YAML configs, is the perfect tool for a dev like me that wants to setup machines and maintain the configurations synced.
You should take a look at GNU stow. I also felt the same frustration as my bootstrap script got ugly and uglier. And then I shifted to stow. And now its just a single line:
stow * --target ~
With respect to ansible, I've been thinking of managing my laptop using just ansible to install new packages, and update configuration (apache, sshd and so on). Kinda like chef-solo, but using ansible. Has anyone done anything like that?
Thanks for the tip about Stow, never knew about it and I will research it.
Ansible can be used for your local machine without any central server by default. I use this[0] playbook to update my packages daily on my DigitalOcean machines.
Sounds interesting. Could you explain a bit more how this works, briefly? I find the GNU stow page not really good to understand and lack some example of how it would be used...
I have a ~/dotfiles directory in which I have one directory for each program/entity I want to manage using stow. Let's say I want to manage my GNOME keyrings and my settings for the program EasyStroke. My ~/dotfiles directory would look like this:
Then, in ~/dotfiles I can do "stow easystroke" and it will create ~/.easystroke and there it will symlink "actions-0.5.6" to ~/dotfiles/easystroke/.easystroke/
actions-0.5.6 and "preferences-0.5.5" to ~/dotfiles/easystroke/.easystroke/preferences-0.5.5
Question on stow that you might have knowledge on.
Could I say have stow manage separate or conflicting files?
An example is in order, say for work I have a .gitconfig that has a separate email address etc... and for home I have basically the same but not quite. Would there be any easy-ish way to say something akin to: ok this is the base of things, these are the generalized components that override?
I have a jacky way of doing this now but any way to eliminate the nonsense would be helpful. xstow looks interesting however.
Stow can do that if you only need files to be replaced, not sections of files. Let's say you want to manage the file ~/test/.gitconfig, you can create this structure:
That helps thanks. So note for now I just copy/update my entire gitconfig and replace the one off changes every so often.
Its not ideal but each difference is really an entire file. I worded my question poorly in that regard but i'll have a look at dotdee.
I'm somewhat tempted to just use m4 for generating the dot files for things that may change and doing a conf.d type setup that just lets me copy a fragment file into place then instantiate the file.
Put the dotfiles and directories into git. Symlink from ~/.vim to ~/dotfiles/.vim and be done with it. (~/dotfiles would contain the git checkout of course).