{"id":1904,"date":"2011-02-26T18:52:21","date_gmt":"2011-02-26T17:52:21","guid":{"rendered":"http:\/\/www.devco.net\/?p=1904"},"modified":"2011-02-27T23:12:48","modified_gmt":"2011-02-27T22:12:48","slug":"mcollective_101_demo_using_aws_cloudformation","status":"publish","type":"post","link":"https:\/\/www.devco.net\/archives\/2011\/02\/26\/mcollective_101_demo_using_aws_cloudformation.php","title":{"rendered":"MCollective 1.0.1 demo using AWS CloudFormation"},"content":{"rendered":"
Amazon is keeping things ticking along nicely by constantly adding features to their offerings. I’m almost more impressed at the pace and diversity of innovation than the final solution.<\/p>\n
During the week they announced AWS CloudFormation<\/a>. Rather than add to the already unbearable tedium of “it’s not a Chef or Puppet killer” blog posts I thought I’d just go ahead and do something with it.<\/p>\n Till now people who wanted to evaluate MCollective had to go through a manual process of starting first the ActiveMQ instance, gathering some data and then start a number of other instances supplying user data for the ActiveMQ instance. This was by no means a painful solution but CloudFormation can make this much better. <\/p>\n I’ve created a new demo using CloudFormation and recorded a video showing how to use it etc, you can read all about it here<\/a>.<\/p>\n The demo has been upgraded with the latest production MCollective version that came out recently<\/a>. This collective has the same features as the previous demos, registration, package and a few other bits.<\/p>\n Impact<\/strong> It’s still markup aimed at machines and the following pretty much ensures user error as much as XML does:<\/p>\n <\/code><\/p>\n CloudFormation represents a great opportunity for the Framework builders like Puppet Labs and Opscode as it can enhance their offerings by a long way especially for Puppet a platrform wide view is something that is very desperately needed – not to mention basic Cloud integration.<\/p>\n Tools like Fog and its peers will no doubt soon support this feature so will knife as a side effect. <\/p>\n Issues<\/strong> Fn::GetAtt is too limited<\/strong> <\/code><\/p>\n
\nOverall I think this is a very strong entry into the market, it needs work still but its a step in the right direction. I dislike typing JSON about as much as I dislike typing XML but this isn’t an Amazon problem to fix – that’s what frameworks and API clients are for. <\/p>\n<\/p>\n
\r\n \"UserData\" : { \r\n \"Fn::Base64\" : { \r\n \"Fn::Join\" : [ \":\", [ \r\n \"PORT=80\", \r\n \"TOPIC=\", {\r\n \"Ref\" : \"logical name of an AWS::SNS::Topic resource\" \r\n }, \r\n \"ACCESS_KEY=\", { \"Ref\" : \"AccessKey\" },\r\n \"SECRET_KEY=\", { \"Ref\" : \"SecretKey\" } ] \r\n ] \r\n } \r\n },\r\n<\/pre>\n
\nI have a few issues with the current offering, it seems a bit first-iteration like and I have no doubt things will improve. The issues I have are fairly simple ones and I am surprised they weren’t addressed in the first release really.<\/p>\n
\nYou can gain access to properties of other resources using the Fn::GetAtt<\/em> function, for instance say you created a RDS database and need its IP address:<\/p>\n<\/p>\n
\r\n\"Fn::GetAtt\" : [ \"MyDB\" , \"Endpoint.Address\"]\r\n<\/pre>\n