Just as a follow up, now that I've been able to dig into this project - 

I settled on ansible.  Even for a single system, this is a very clear win over 
what I was doing before, and I wish I had done it sooner, and I *really* wish 
the former IT guys that I inherited stuff from had done it sooner.

For a single system, was it a net time gain?  No.  I think it was a net time 
sink.  But there are some huge benefits that make it worthwhile.  

#0  The time sink was surprisingly small.  I found, for basically everything I 
wanted to do, I would just google for it and immediately find exactly what I 
want.  Search for "ansible localtime" or "ansible timezone" and people have 
already written exactly what you want.  Ansible's module index is well 
organized and intuitive, well documented, easy to use.  Covers almost 
everything I could want - 

For some things, the old way was faster.  For other things, the new way is 
faster.  For example, simply installing a yum package was probably faster 
before - because I would paste a command and there was nothing to gain over 
that.  The new way, by the time I figured out what package I need to install, I 
could have had it installed before I wrote the command in the playbook.  
However, many things are actually faster the new way - because as mentioned 
below, it's difficult to script "Find the line 'enabled=0' in the [foobar] 
section of the config file and change that line to 1" whereas, ansible handles 
that perfectly because it knows how to parse that config file.

#1 now that I'm familiar with the tool, there's literally no reason I would 
ever go hand-edit config files on that system ever again, which makes it 
completely native and natural for every single config change to be documented 
and executable.  

I formerly had things written like "Go edit sshd_config, find the place where 
it says "foobar" and change it" ... And even when shell scripting something, 
it's difficult to script something like "Edit the yum repo file, find the 
[epel] section (not to be confused with the other [blah] sections) and the 
location where it says Enabled=0 specifically within the [epel] section, and 
change it to 1" ...  But ansible handles this no sweat.  Because it knows how 
to parse ini files.  As follows:   ini_file: dest=/etc/yum.repos.d/epel.repo 
section=epel option=enabled value=1

#2  Formerly, I had a combination of instructions and commands to copy and 
paste, and executable shell scripts to run on a new server to configure it.  I 
have now converted all that into a single document with minimal instructions to 
get up to the point where ssh is available, and then an ansible playbook takes 
everything from that point onward.  I have found in the past, that my 
documentation with commands and scripts, would sometimes either break or human 
error would occur, pasting something in the wrong order or something like that. 
 Now there's no possibility of human error anymore - Yes it's possible for a 
new OS environment to become incompatible with something in the playbook, but 
the playbook will actually *stop* and notify me of which thing went wrong, 
whereas a shell script error would bomb onward, and if you're lucky maybe you 
can understand what went wrong by the error message (I emphasize, if you're 
lucky.)

#3  I have gained freedom.  Formerly, I felt locked in, if I ever need to 
rebuild this server for some reason, I know it would be a significant hassle in 
terms of time suck and potential error.  No more!  If I want to move this thing 
from Amazon to Digital Ocean, or whatever...  No hesitation.  Total confidence. 
 If I leave this job and I want to make sure my successor knows what I did and 
how to manage it...  Awesome!  Job done.

Yes, this was highly worthwhile, for the sake of consistency and repeatability, 
etc.
_______________________________________________
Tech mailing list
Tech@lists.lopsa.org
https://lists.lopsa.org/cgi-bin/mailman/listinfo/tech
This list provided by the League of Professional System Administrators
 http://lopsa.org/

Reply via email to