You’ve been walking all night. Yet another of those times, one more night within the uninterrupted line which stretches from all you’ve known to all you can imagine. Even now, it merges together into one long night, one long walk, one deep pain within your head somewhere behind the tears which have dried in the cold. No one knows where you are, not even you. Your phone’s been off for hours, although there’s no one you would call anyway. For all anyone else knows, you’re spending time with friends or doing whatever it is you do in between the weekly punctuation of how was your weekend it was okay thanks how was your weekend yeah really good saw some friends drank too much but yeah we had a good time.
If you’re looking to ship logs from multiple servers and perform all sorts of magic, you might like to consider Logstash or Fluentd. But what if you want something really lightweight, or simply don’t have the time to configure a full-blown solution? Rsync over SSH can provide a simple alternative, provided that all you really want to do is have logs accessible from a central place and are a happy Grep user. You’ve probably got the packages installed already, too.
She would never forget the moment she’d finally realised. It was a Saturday morning, a few months ago, sunny for once. They’d slept in, tired from the week before. He, with a job in the city, working late on some project, paying the bills, keeping the bosses happy, that sort of thing. She, still on maternity leave, working out how to care for this beautiful, screaming child, her first. Their first. He set the table for breakfast whilst she fetched milk, cereal, toast, black coffee. They always tried to make a bit more of an effort on weekends; a chance to slow the pace.
Using Librarian-puppet, it is possible to extensively clean up a vendored Puppet config when versioning the manifests. Much like Ruby Bundler, dependencies can be specified and locked, with the lock file checked into the VCS. This is arguably more straightforward than maintaining module dependencies as Git submodules. If using an approach similar to puppet master git repository, the Git hook can be updated to satisfy the modules immediately prior to triggering the Puppet run. Not only does this reduce the complexity of a repository compared to vendoring modules, it makes upgrading individual modules much easier.
Setting up a Puppet Master to deploy from a Git repository without GitHub or Bitbucket or similar is straightforward, thanks to the flexibility of Git hooks. Versioning manifests for Puppet or alternatives such as Chef is an excellent idea, allowing the benefits of a VCS to be leveraged to provide a centralised comprehensive historical trail even when working with multiple devops. One good approach is to host the repository using external service GitHub or Bitbucket or similar, setting appropriate access permissions and using Capistrano or similar to deploy and trigger a Puppet run. This has the disadvantage of placing a large amount of trust in the VCS service, however. An alternative would be to run your own repository server internally; however, that seems overkill for a single-repository case. A much lighter solution is to simply use Git over SSH and host the repository directly on your Puppet Master.