In my last article on Razor, I discussed my experiences setting it up and getting a single OS loaded. That was fun, but let’s do more!
I figured that I would start by loading a second operating system and take advantage of this heterogeneous kickstart-like capability, but something else has come up. I just upgraded the RAM in each node with some cheap, used stuff on eBay (I got a really good deal).
Now, for my three servers, I’m adding nearly 50 DIMMs, and I want to check them for faults before I give eBay feedback :-). I typically turn to Memtest86 for this kind of diagnostic, and I could pretty easily burn an ISO, and go plug it into each server, but 1.) that’s boring, and 2.) how would I do that for a hundred or a thousand servers? That’d suck. Let’s see if our new toy, Razor, can get the job done.
In this article, I’ll setup a Razor task for Memtest86, and see how it goes! Continue reading “Hardware Diagnostics with Puppet Razor”
I recently came into some good fortune. You see, I’ve been in need of some physical servers for a couple of projects that I’m working on (which, hopefully, I’ll write about soon) and have moped around thinking about how I was going to simulate SAN host-bus adapters for VMs. Then out of the blue, I received a gift of three, free six-year-old servers — some Dell R710s. Now this might not seem like a jackpot to all of you, but these guys have everything that I need: remote-console iDRAC, a couple of PCIe ports & Broadcom NICs, 4 x PCIe slots and Intel-VT.
Now, I have about a dozen different ideas of things to try out with my new lab, and with these possibilities, I wanted a nice clean way to build up and tear down these systems without a bunch of effort. I had heard about Puppet Razor, which was originated by a fellow EMCer (like myself), Nick Weaver, before being adopted by Puppetlabs.
In this article, I’ll review my experience getting Razor up & running for my lab, and some of my opinions on it.
Continue reading “My Experience with Puppet Razor”
Possibly the least necessary article, ever.
Did you read the subtitle up there? Read it. This article is not required. Deploying Angular.JS is so to Cloud Foundry is insanely easy. If you start thinking that it should be complex, stop — step back, it’s not hard. It’s really easy.
Continue reading “Angular apps in Cloud Foundry”
This article is the second in a series on implementing an Erlang distributed service with BOSH & Cloud Foundry. In the first article, I created a simple BOSH release which compiled a couple of packages and ran a single Erlang job (a monitored daemon) on three virtual-machines. My eventual goal here is to have a running service broker, and conduct some experiments with distributed Erlang and Cloud Foundry, but before we get there, we have some more work to do.
While developing the broker, it became clear that I need a few more build-tool dependencies. I want to keep these articles as short and focused as possible, so in this article, we’ll do just that.
Continue reading “Adding Packages to a BOSH Deployment”
I’m preparing to do a couple of experiments with Cloud Foundry & Erlang. They’re not ready for prime-time yet, but I think the prep work might be at least as interesting as the experiment (particularly, if it goes up in flames).
If you’ve never heard of BOSH or Cloud Foundry before, you should probably visit those links, because I won’t be covering them in detail. There is a lot of good material on the net that I can’t help to match, but I’ll give you a couple of one-liners:
- BOSH is a declarative orchestration tool that deploys & monitors applications within virtual machines (on AWS, vSphere, Google Compute, etc.)
- Cloud Foundry is a Platform as a Service built on top of BOSH that deploys, runs & monitors applications.
In this article, we’ll create a BOSH release for an Erlang runtime, and deploy it to a tiny personal cloud using BOSH-Lite. In subsequent articles, I’ll expand on this with a Cloud Foundry Service Broker. With that in place we can play around with the service broker with some Cloud Foundry deployed Erlang applications.
If you’d like to follow along, you’ll need a couple of things setup:
Continue reading “Using BOSH to deploy Erlang Nodes”
I’m not talking about Strings of characters here. I’m talking about Ukelele strings. What?
Yeah, Ukelele strings. My wife and 2 of my kids are all learning Ukelele, and we watched a glut of YouTube videos about Jake Shimabukuro
. He’s pretty awesome, but I don’t have an Ukelele blog — I have a programming blog. So what is this about?
One of Shimabukuro’s comments struck me. A Ukelele player feels the absence of those two strings present on the guitar, but not his instrument. He wrestles to express a full sound with fewer strings at his disposal. I don’t know what that means for Jake’s music (which is fantastic), but I can appreciate the struggle. Starting with functional programming, I felt like I was striving for expression with a reduced set of tools. At the same time, I’ve gained a lot! It’s been exciting and enlightening.
As my functional skills mature, I thought I’d share some thoughts on what is taken away, and what is given as a result. In this series, we’ll explore several functional concepts including:
- External State vs Objects: A different view of managing complexity
- Function Composition: This is really why it’s called functional programming
- Immutability and Recursion: You may not realize it, but they’re related
'Tis but the SQL is my enemy. Thou art thyself not a join.
What's a join? It is nor log nor table. Nor interface,
Nor storage-format, nor any other part belonging to a database.
O, be something web-scale! What's in a join? That which we call
relational by an embedded document or denormailization would
smell as sweet... Doth thy join, and for that join,
Take all myself.
Ok Juliette. We’ve got it. You hate SQL and you hate joins. But let’s take a step back before you stab yourself over it.
Continue reading “What’s in a Join?”