Showing Blastwave Packages with Upgrades Available
Posted by Sam
I love love love Blastwave. I couldn't imagine using Solaris without it. One of the annoying things though is if you want to see if newer packages are available you have to wade through every package that they have. And they have a lot. So here is a super simple one liner for showing just the packages that need to be upgraded.
pkg-get -c | grep -v "Not installed" | grep -v SAME | \
mailx -s "Blastwave Updates" yourname@example.com
And since you are probably using Solaris Zones here is a simple script that will look in all non-global zones and email out a report. Currently this sends one email per zone but that could easily be changed to send one email per physical box.
#!/usr/bin/sh
for zone in `/usr/sbin/zoneadm list | /usr/bin/grep -v global`; do
zlogin $zone "/opt/csw/bin/pkg-get -c | \
/usr/bin/grep -v \"Not installed\" | \
/usr/bin/grep -v SAME | \
/usr/bin/mailx -s \"Blastwave Updates for $zone\" yourname@example.com"
done
Tags: solaris
The Initial release of ZoneMan
Posted by Sam
I've been wanting to switch from BIND to PowerDNS for a while now but I haven't been able to find any admin tools that worked the way I wanted them to. This is the problem when you can write software. It seems that hardly anything is just right. Since PowerDNS can use a SQL back-end it seems that everybody wants to create a web admin which is fine for lots of things. One of the things I'm working on now is something I like to call Agile Systems Administration. If nobody has coined the term to date I'm coining it now. Basically I'm looking for ways to automate whatever I can. Since I deploy a LOT of sites DNS was an obvious choice to start automating.
This is where ZoneMan comes into play. It's a command line tool that works with MySQL, PostgreSQL or any other database that Rails works with. The usage is pretty simple. Here's an example of adding a new record.
$ ./zoneman add_record example.com www.example.com A 10.1.1.1
That's it. To break out what we just did. add_record is the command. Example.com is the domain that you are adding the record to. www.example.com is the record itself. 'A' is the record type. And lastly '10.1.1.1' is where the record is pointing to. Using that example you can see how easy it is to script new site setups from the DNS perspective. You can wrap that command in a bash script and make it even shorter.
example.com has been created
The initial release is already hosted at RubyForge. It's very rough and untested. I've also set up a project page on this site. If you have suggestions feel free to leave them in the comments. I hope to make this a very useful tool for managing PowerDNS. Enjoy.
My Love Hate Relationship with MySQL
Posted by Sam
The Hate
It seems everybody is using MySQL these days. It's getting plenty of press, especially lately with them getting bought by Sun and all. I've been using MySQL for at least 10 years. Only recently did I throw out an old O'Reilly book that cover MySQL version 3. But lately I've been pretty dissatisfied with MySQL and it's annoying limitations. For instance, why do we need so many database engines that all do different things? MyISAM, HEAP, InnoDB, NDB, Falcon and NitroEDB to name but six and I've probably left out a couple. But with all these options there isn't a single option if you want something as simple as say, transactions AND Full Text Indexing. You can get Full Text Indexing with MyISAM and transactions with InnoDB but if you want/need both then you are out of luck or relying on a third party hack. No offense meant to the Sphinx folks with that 3rd party hack comment, it's just that I want to tightly integrated into my database and I'd prefer not to have compile, install and configure another application for FTI. Then there's also the well documented performance limitations concerning the use of lots of cores.
A while back I was working on a project that I needed a modern database engine and Full Text Indexing. The searching was going to be a critical part of the site so that's what I focused on. I spent hours researching FTI on MySQL only to walk away realizing that it just wasn't going to work without going the MyISAM route or some third party hack. And the more research I did on MyISAM the scarier it got because it apparently has some serious scaling issues regarding FTI. All this research led me to one thing. Postgres. Postgres has one database engine that does everything. Oh and these days it happens to be really fast. Often faster than MySQL. Now that it's fast and they have the vacuuming stuff more automatic Postgres is a great database and people really should be looking into it for replacing MySQL IMHO. But Postgres aside, the more I research MySQL the more convinced I was that the company just doesn't get it. They seem to be more interested in creating more engines than in making a single engine that does 90 - 95% of what most people want.
The Love
So what do I love about MySQL? Well I'm glad you asked. The other day I was talking to a co-worker and I was telling him how excited I was about our new MySQL cluster. We have a master/slave configuration set up so recovering from a database disaster should be just a quick reconfigure away. And if we need the capacity we can point sites at the slaves. And we can do backups on the slaves without taking down the site because the database is locked. Needless to say I was excited. So many possibilities. I like everything to be redundant. Everything. So the database redundancy was a big deal. And MySQL makes it easy to set up. It really is nice. So after I finished extolling the virtues of our set up he asked me if this means that I no longer hate MySQL. This is where I realized that I had a love/hate relationship with it. From the admin side I love it. MySQL is easy to work with, runs anywhere and makes some cool stuff (like clustering) uber easy. From the development side I hate it for the reasons I stated above. If I'm programming I'm going to lean towards Postgres, but if I'm wearing my sys admin hat I'm going to lean towards MySQL. It gets really confusing when I'm doing both roles as if often the case. Hrm, maybe I need to look into Postgres' clustering and then it will be an easy choice.
Where to now?
I'm really hoping that Sun can do something to turn around MySQL because for a lot of projects it's a really good database but for just as many it's an awful choice. They really need to fix the scaling issues and stop with the database engine madness. A couple of database engines are OK, but come on. They are just out of control. Pick a couple of engines and just pour all your time into supporting them. And the scaling issue is a no brainer. Lots of cores are the norm and MySQL needs to get with the times or risk being left behind.
Tags: mysql
Zone Manager Screencast
Posted by Sam
Sometimes it's hard to understand just how simple something is without seeing it first hand. In an attempt to show people just how powerful and extremely awesome Zone Manager is (not to mention Solaris Zones) I thought I would create a screencast. Screencasts are all the rage these days and for good reason. Running commands from the command line isn't sexy, but watching a video where I create an entirely new server in well under two minutes is dead sexy! And so without further ado I present Zonemgr!
Engine Yard to Create mod_rubinius
Posted by Sam
In a previous blog I posted a rebuttal of sorts against the DreamHost whine fest. Well at least that's how I saw their blog. The arguments spilled over to a another blog posted on Ruby Inside. One of the points that I took issue with was DreamHost saying that the Ruby on Rails folks needed to step up and create something that DreamHost could resell. In their words:
4. Officially support shared hosting environments.Alastair and I are in agreement that there is already a great way to deploy Rails applications and it is not Mongrel and [insert favorite web server/proxy solution here]. LiteSpeed is light years of ahead of everybody else in Rails support and deployment and it's also much, much faster than Apache in general. But in all honesty the bigger issue here was that I feel like DreamHost needs to step up and put their money where their mouth is. They are making money on hosting not the Ruby on Rails developers. If they want to make money on Ruby on Rails hosting then they should step up and create a solution.
Well it appears I wasn't the only one who felt the same way. Yesterday, the folks at Engine Yard announced that they hired a developer to work on mod_rubinius. Rubinius is a very promising Ruby implementation that is gaining a lot of momentum and Engine Yard is backing it with the hiring of several developers. It's been written about plenty on the web but it's nice to see that a hosting company that is making money from Rails hosting is actually putting it's money where it's mouth is instead of just expecting everybody else to do their work for free and let them reap the benefits.
I couldn't be happier deploying Rails apps on LiteSpeed, but I always welcome alternatives. So well done Engine Yard!
Tags: rubyonrails