<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Edmund Haselwanter's Blog Feed</title>
    <link>http://edmund.haselwanter.com/rss/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>The main blog feed for my Web site.</description>
    
    
        <item>
          <title>HTTP Basic Auth for Mysql password and old_password in Rails</title>
          <description>&lt;p&gt;I recently had to develop a small application for a client. The goal was to add a feature to grown Java web application.&lt;/p&gt;
&lt;p&gt;As the software was maintained for several years there are users with old an new MySql passwords in the system.&lt;/p&gt;&lt;p&gt;To authenticate the user I have chosen &lt;code&gt;authenticate_or_request_with_http_basic&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;As I just needed handful of actions all of them go in one controller:&lt;br /&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;JEntityNameType&quot;&gt;MyController&lt;span class=&quot;EntityInheritedClass&quot;&gt; &lt;span class=&quot;EntityInheritedClass&quot;&gt;&amp;lt;&lt;/span&gt; ApplicationController&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt;   before_filter &lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;authenticate&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   5 &lt;/span&gt;   &lt;span class=&quot;Keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;Entity&quot;&gt;index&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   6 &lt;/span&gt; &lt;span class=&quot;Comment&quot;&gt;   &lt;span class=&quot;Comment&quot;&gt;#&lt;/span&gt; [ ... ]&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   7 &lt;/span&gt;   &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   8 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   9 &lt;/span&gt;   &lt;span class=&quot;Keyword&quot;&gt;protected&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  10 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;  11 &lt;/span&gt;   &lt;span class=&quot;Keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;Entity&quot;&gt;authenticate&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  12 &lt;/span&gt;     authenticate_or_request_with_http_basic &lt;span class=&quot;Keyword&quot;&gt;do &lt;/span&gt;|&lt;span class=&quot;Variable&quot;&gt;id&lt;/span&gt;, &lt;span class=&quot;Variable&quot;&gt;password&lt;/span&gt;|
&lt;span class=&quot;line-numbers&quot;&gt;  13 &lt;/span&gt;       &lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;Variable&quot;&gt;@&lt;/span&gt;user&lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;Support&quot;&gt;User&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;find_by_name&lt;/span&gt;(id)
&lt;span class=&quot;line-numbers&quot;&gt;  14 &lt;/span&gt;       login_ok &lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;Variable&quot;&gt;@&lt;/span&gt;user&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;authenticate&lt;/span&gt;(password)
&lt;span class=&quot;line-numbers&quot;&gt;  15 &lt;/span&gt;       login_ok
&lt;span class=&quot;line-numbers&quot;&gt;  16 &lt;/span&gt;     &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  17 &lt;/span&gt;   &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  18 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;  19 &lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;To check if the user can be authenticated:&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;JEntityNameType&quot;&gt;User&lt;span class=&quot;EntityInheritedClass&quot;&gt; &lt;span class=&quot;EntityInheritedClass&quot;&gt;&amp;lt;&lt;/span&gt; ActiveRecord::Base&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt;   &lt;span class=&quot;Keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;Entity&quot;&gt;authenticate&lt;/span&gt;(&lt;span class=&quot;Variable&quot;&gt;password&lt;/span&gt;)
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt;     user &lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;Support&quot;&gt;User&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;find_by_sql&lt;/span&gt;([&lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;select * from user where user_pass=password('%s') &lt;span class=&quot;StringConstant&quot;&gt;\&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   5 &lt;/span&gt; &lt;span class=&quot;String&quot;&gt;                              OR user_pass=old_password('%s')&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,password,password])
&lt;span class=&quot;line-numbers&quot;&gt;   6 &lt;/span&gt;     (user.&lt;span class=&quot;Entity&quot;&gt;length&lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;Constant&quot;&gt;0&lt;/span&gt;)&lt;span class=&quot;Constant&quot;&gt;?t&lt;/span&gt;rue&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;false&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   7 &lt;/span&gt;   &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   8 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   9 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;  10 &lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  11 &lt;/span&gt; 
&lt;/pre&gt;&lt;p&gt;Its a very simple approach.&lt;/p&gt;
&lt;p&gt;What do you think?&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/http+basic+auth&quot; rel=&quot;tag&quot;&gt;http basic auth&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/mysql&quot; rel=&quot;tag&quot;&gt;mysql&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/rails&quot; rel=&quot;tag&quot;&gt;rails&lt;/a&gt;</description>
          <pubDate>Mon, 02 Nov 2009 14:52:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/11/02/http-basic-auth-for-mysql-password-and-old_password-in-rails/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/11/02/http-basic-auth-for-mysql-password-and-old_password-in-rails/</link>
        </item>
    
        <item>
          <title>chef from opscode and the power of ruby</title>
          <description>&lt;p&gt;Recent releases of &lt;a href=&quot;http://www.opscode.com/chef&quot;&gt;chef from opscode&lt;/a&gt; provide a new resource: &lt;a href=&quot;http://wiki.opscode.com/display/chef/Resources#Resources-RubyBlock&quot;&gt;ruby_block&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is really great news as this allows for interesting problem solving.&lt;/p&gt;
&lt;p&gt;Consider you want to do a very special &lt;span class=&quot;caps&quot;&gt;HTTP&lt;/span&gt; request. E.g. a &lt;span class=&quot;caps&quot;&gt;GET&lt;/span&gt; to localhost but with custom &amp;#8220;Host&amp;#8221; header information.&lt;/p&gt;&lt;h3&gt;Install a Ruby Http Client&lt;/h3&gt;
&lt;p&gt;First we have to install a Ruby http client library. I&amp;#8217;ll use &lt;a href=&quot;http://curb.rubyforge.org/&quot;&gt;curb&lt;/a&gt; in this example. It builds on top of libcurl so lets install that first.&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; curl_devel &lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt; package &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;curl-devel&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;do&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt;   action &lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;install&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   5 &lt;/span&gt; curl_devel.&lt;span class=&quot;Entity&quot;&gt;run_action&lt;/span&gt;(&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;install&lt;/span&gt;)
&lt;/pre&gt;&lt;p&gt;With this code we tell chef to immediately execute this code. Otherwise we would have to face the problem that we just fullfill the chefrun post-condition that we have curl-devel installed. Next we have to install the curb gem.&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; curb_gem &lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt; gem_package &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;curb&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;do&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt;   action &lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;install&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   5 &lt;/span&gt; curb_gem.&lt;span class=&quot;Entity&quot;&gt;run_action&lt;/span&gt;(&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;install&lt;/span&gt;)
&lt;/pre&gt;&lt;p&gt;as you see this is done the same way. Next we want to use curb in &lt;span class=&quot;caps&quot;&gt;THIS&lt;/span&gt; chef-run. So we have tell chef the update of Gem, followed by requiring curb&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; &lt;span class=&quot;Support&quot;&gt;Gem&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;clear_paths&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;'&lt;/span&gt;curb&lt;span class=&quot;String&quot;&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;h3&gt;Ruby Code in Action&lt;/h3&gt;
&lt;p&gt;Now we are ready to take action. &lt;br /&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; ruby_block &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;do-http-request-with-cutom-header&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;do&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt;   block &lt;span class=&quot;Keyword&quot;&gt;do&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt;     timeout &lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;Constant&quot;&gt;600&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt;     host &lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;localhost:8080&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   5 &lt;/span&gt;     real_host &lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;my.realhost.com&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   6 &lt;/span&gt;     &lt;span class=&quot;Support&quot;&gt;Chef&lt;/span&gt;::&lt;span class=&quot;Entity&quot;&gt;Log&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;info&lt;/span&gt; &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;call get on &lt;span class=&quot;StringEmbeddedSource&quot;&gt;&lt;span class=&quot;StringEmbeddedSource&quot;&gt;#{&lt;/span&gt;host&lt;span class=&quot;StringEmbeddedSource&quot;&gt;}&lt;/span&gt;&lt;/span&gt;, maximal request time: &lt;span class=&quot;StringEmbeddedSource&quot;&gt;&lt;span class=&quot;StringEmbeddedSource&quot;&gt;#{&lt;/span&gt;timeout&lt;span class=&quot;StringEmbeddedSource&quot;&gt;}&lt;/span&gt;&lt;/span&gt; seconds&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   7 &lt;/span&gt;     c &lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;Support&quot;&gt;Curl&lt;/span&gt;::&lt;span class=&quot;Entity&quot;&gt;Easy&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;new&lt;/span&gt;(&lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;http://&lt;span class=&quot;StringEmbeddedSource&quot;&gt;&lt;span class=&quot;StringEmbeddedSource&quot;&gt;#{&lt;/span&gt;host&lt;span class=&quot;StringEmbeddedSource&quot;&gt;}&lt;/span&gt;&lt;/span&gt;/maintenance/do_something&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;) &lt;span class=&quot;Keyword&quot;&gt;do &lt;/span&gt;|&lt;span class=&quot;Variable&quot;&gt;curl&lt;/span&gt;|
&lt;span class=&quot;line-numbers&quot;&gt;   8 &lt;/span&gt;       curl.&lt;span class=&quot;Entity&quot;&gt;headers&lt;/span&gt;[&lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;'&lt;/span&gt;Host&lt;span class=&quot;String&quot;&gt;'&lt;/span&gt;&lt;/span&gt;] &lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt; real_host
&lt;span class=&quot;line-numbers&quot;&gt;   9 &lt;/span&gt;       curl.&lt;span class=&quot;Entity&quot;&gt;verbose&lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;Constant&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  10 &lt;/span&gt;       curl.&lt;span class=&quot;Entity&quot;&gt;timeout&lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt; timeout
&lt;span class=&quot;line-numbers&quot;&gt;  11 &lt;/span&gt;     &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  12 &lt;/span&gt;     c.&lt;span class=&quot;Entity&quot;&gt;perform&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  13 &lt;/span&gt;     &lt;span class=&quot;Keyword&quot;&gt;if&lt;/span&gt; c.&lt;span class=&quot;Entity&quot;&gt;response_code&lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;Constant&quot;&gt;200&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  14 &lt;/span&gt;       &lt;span class=&quot;Support&quot;&gt;Chef&lt;/span&gt;::&lt;span class=&quot;Entity&quot;&gt;Log&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;info&lt;/span&gt; &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;GET success! response was:&lt;span class=&quot;StringEmbeddedSource&quot;&gt;&lt;span class=&quot;StringEmbeddedSource&quot;&gt;#{&lt;/span&gt;c&lt;span class=&quot;StringEmbeddedSource&quot;&gt;&lt;span class=&quot;StringEmbeddedSource&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;Entity&quot;&gt;body_str&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringEmbeddedSource&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  15 &lt;/span&gt;     &lt;span class=&quot;Keyword&quot;&gt;else&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  16 &lt;/span&gt;       &lt;span class=&quot;Support&quot;&gt;Chef&lt;/span&gt;::&lt;span class=&quot;Entity&quot;&gt;Log&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;error&lt;/span&gt; &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;GET FAILED. request response was HTTP &lt;span class=&quot;StringEmbeddedSource&quot;&gt;&lt;span class=&quot;StringEmbeddedSource&quot;&gt;#{&lt;/span&gt;c&lt;span class=&quot;StringEmbeddedSource&quot;&gt;&lt;span class=&quot;StringEmbeddedSource&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;Entity&quot;&gt;response_code&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringEmbeddedSource&quot;&gt;}&lt;/span&gt;&lt;/span&gt;, body: &lt;span class=&quot;StringEmbeddedSource&quot;&gt;&lt;span class=&quot;StringEmbeddedSource&quot;&gt;#{&lt;/span&gt;c&lt;span class=&quot;StringEmbeddedSource&quot;&gt;&lt;span class=&quot;StringEmbeddedSource&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;Entity&quot;&gt;body_str&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringEmbeddedSource&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  17 &lt;/span&gt;     &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  18 &lt;/span&gt;   &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  19 &lt;/span&gt;   action &lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;create&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  20 &lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Great. Isn&amp;#8217;t it? :-)&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/chef&quot; rel=&quot;tag&quot;&gt;chef&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opschef&quot; rel=&quot;tag&quot;&gt;opschef&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opscode&quot; rel=&quot;tag&quot;&gt;opscode&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opscookbook&quot; rel=&quot;tag&quot;&gt;opscookbook&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/sysadmin&quot; rel=&quot;tag&quot;&gt;sysadmin&lt;/a&gt;</description>
          <pubDate>Wed, 14 Oct 2009 09:52:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/10/14/chef-from-opscode-and-the-power-of-ruby/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/10/14/chef-from-opscode-and-the-power-of-ruby/</link>
        </item>
    
        <item>
          <title>webalizer cookbook and definition for chef from opscode</title>
          <description>&lt;p&gt;Install and run the webalizer with &lt;a href=&quot;http://wiki.opscode.com/display/chef/Home&quot;&gt;Chef&lt;/a&gt; from &lt;a href=&quot;http://www.opscode.com/&quot;&gt;Opscode&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;http://github.com/ehaselwanter/cookbooks/tree/&lt;span class=&quot;caps&quot;&gt;COOK&lt;/span&gt;-195/webalizer&lt;/p&gt;
&lt;p&gt;As &lt;span class=&quot;caps&quot;&gt;DRY&lt;/span&gt; as possible ;-)&lt;/p&gt;&lt;h3&gt;What it is for&lt;/h3&gt;
&lt;p&gt;Simply put it derives the log file name from its name and takes a server name for where to access the output of webalizer.&lt;/p&gt;
&lt;h3&gt;How to use it&lt;/h3&gt;
&lt;p&gt;The simplest use case is&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; webalizer &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;your.example.com&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;do&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt;   server_name &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;stats.example.com&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;/pre&gt;&lt;p&gt;This looks for a access log file in&lt;/p&gt;
&lt;p&gt;&lt;code&gt;#{node[:apache][:log_dir]}/your.example.com-access.log&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;und puts the webalizer results (&lt;code&gt;/etc/cron.daily/00-weablizer&lt;/code&gt; must be run either manually or from &lt;code&gt;cron&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;in&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/var/www/usage/your.example.com&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;accessable through&lt;/p&gt;
&lt;p&gt;&lt;code&gt;http://stats.example.com/your.example.com&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;options are&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; webalizer &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;your.example.com&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;do&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt;   server_name &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;stats.example.com&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;     &lt;span class=&quot;Comment&quot;&gt;&lt;span class=&quot;Comment&quot;&gt;#&lt;/span&gt; custom server name&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt;   conf_template &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;webalizer.conf.erb&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;  &lt;span class=&quot;Comment&quot;&gt;&lt;span class=&quot;Comment&quot;&gt;#&lt;/span&gt; custom webalizer config&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   5 &lt;/span&gt;   site_template  &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;webalizer.site.erb&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;   &lt;span class=&quot;Comment&quot;&gt;&lt;span class=&quot;Comment&quot;&gt;#&lt;/span&gt;custom webalizer apache file&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   6 &lt;/span&gt;   cron_schedule &lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;daily&lt;/span&gt;  &lt;span class=&quot;Comment&quot;&gt;&lt;span class=&quot;Comment&quot;&gt;#&lt;/span&gt; node[:webalizer][:cron_base_prefix]}#{params[:cron_schedule].to_s must be a cron directory&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   7 &lt;/span&gt;   log_type &lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;clf&lt;/span&gt; &lt;span class=&quot;Comment&quot;&gt;&lt;span class=&quot;Comment&quot;&gt;#&lt;/span&gt; :clf :ftp or :squid&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   8 &lt;/span&gt;   cookbook &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;webalizer&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; were the templates reside
&lt;span class=&quot;line-numbers&quot;&gt;   9 &lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  10 &lt;/span&gt; 
&lt;/pre&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/apache2&quot; rel=&quot;tag&quot;&gt;apache2&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/chef&quot; rel=&quot;tag&quot;&gt;chef&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opschef&quot; rel=&quot;tag&quot;&gt;opschef&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opscode&quot; rel=&quot;tag&quot;&gt;opscode&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opscookbook&quot; rel=&quot;tag&quot;&gt;opscookbook&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/sysadmin&quot; rel=&quot;tag&quot;&gt;sysadmin&lt;/a&gt;</description>
          <pubDate>Tue, 13 Oct 2009 15:42:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/10/13/webalizer-cookbook-and-definition-for-chef-from-opscode/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/10/13/webalizer-cookbook-and-definition-for-chef-from-opscode/</link>
        </item>
    
        <item>
          <title>Simple ping.fm extension for radiant</title>
          <description>&lt;p&gt;I just created a simple Ping.fm extension for RadiantCMS on github: &lt;a href=&quot;http://github.com/ehaselwanter/radiant-pingfm-extension&quot;&gt;ping.fm extension&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With this you can have updates to your site automatically send details to your &lt;br /&gt;
Ping.fm account. All you&amp;#8217;ll need to do is provide your account information in the &lt;code&gt;Radiant::Config&lt;/code&gt; settings.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; Key &lt;a href=&quot;http://ping.fm/key/&quot;&gt;http://ping.fm/key/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Application &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; Key &lt;a href=&quot;http://ping.fm/developers/&quot;&gt;http://ping.fm/developers/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;In the first iteration it just posts a link to the page and the title of the page to &lt;a href=&quot;http://ping.fm/&quot;&gt;ping.fm&lt;/a&gt;.&lt;br /&gt;
If you have the &lt;a href=&quot;http://github.com/jomz/radiant-tags-extension/&quot;&gt;tags extension&lt;/a&gt; installed it will add the page meta_tags to the post.&lt;/p&gt;
&lt;p&gt;Installation:&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; gem install pingfm &lt;span class=&quot;Comment&quot;&gt;&lt;span class=&quot;Comment&quot;&gt;#&lt;/span&gt; sudo gem install pingfm&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; cd &lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;path&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;to&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;radiant&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;installation&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt; git clone git&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;/&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;github.&lt;span class=&quot;Entity&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;ehaselwanter&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;radiant&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;pingfm&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;extension.&lt;span class=&quot;Entity&quot;&gt;git&lt;/span&gt; vendor&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;extensions&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;pingfm
&lt;span class=&quot;line-numbers&quot;&gt;   5 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   6 &lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;or&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   7 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   8 &lt;/span&gt; git submodule add git&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;/&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;github.&lt;span class=&quot;Entity&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;ehaselwanter&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;radiant&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;pingfm&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;extension.&lt;span class=&quot;Entity&quot;&gt;git&lt;/span&gt; vendor&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;extensions&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;pingfm
&lt;span class=&quot;line-numbers&quot;&gt;   9 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;  10 &lt;/span&gt; git submodule init
&lt;span class=&quot;line-numbers&quot;&gt;  11 &lt;/span&gt; git submodule update
&lt;span class=&quot;line-numbers&quot;&gt;  12 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;  13 &lt;/span&gt; rake db&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;migrate&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;extensions&lt;/span&gt;
&lt;/pre&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/ping.fm&quot; rel=&quot;tag&quot;&gt;ping.fm&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/radiantcms&quot; rel=&quot;tag&quot;&gt;radiantcms&lt;/a&gt;</description>
          <pubDate>Sun, 11 Oct 2009 15:57:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/10/11/simple-ping-fm-extension-for-radiant/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/10/11/simple-ping-fm-extension-for-radiant/</link>
        </item>
    
        <item>
          <title>Glassfish cookbook for chef from opscode</title>
          <description>&lt;p&gt;Install and run the Sun Glassfish Application Server from Sun with &lt;a href=&quot;http://wiki.opscode.com/display/chef/Home&quot;&gt;Chef&lt;/a&gt; from &lt;a href=&quot;http://www.opscode.com/&quot;&gt;Opscode&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At the moment its really dumb and just installs Glassfish and runs it:&lt;br /&gt;
http://github.com/ehaselwanter/cookbooks/tree/&lt;span class=&quot;caps&quot;&gt;COOK&lt;/span&gt;-191/glassfish/&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/chef&quot; rel=&quot;tag&quot;&gt;chef&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Glassfish&quot; rel=&quot;tag&quot;&gt;Glassfish&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/java&quot; rel=&quot;tag&quot;&gt;java&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opschef&quot; rel=&quot;tag&quot;&gt;opschef&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opscookbook&quot; rel=&quot;tag&quot;&gt;opscookbook&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Sun&quot; rel=&quot;tag&quot;&gt;Sun&lt;/a&gt;</description>
          <pubDate>Sun, 11 Oct 2009 14:50:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/10/11/glassfish-cookbook-for-chef-from-opscode/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/10/11/glassfish-cookbook-for-chef-from-opscode/</link>
        </item>
    
        <item>
          <title>cruise from Thougthworks and ant 1.7.1 on centos 5.2</title>
          <description>&lt;p&gt;This is on howto use apache ant 1.7.1 in Cruise 1.2 from Thoughtworks&lt;/p&gt;&lt;p&gt;Since Cruise 1.2 ant ist not bundled with Cruise. So the way to go is install either ant for the cruise user (agent), or provide a system wide ant installation.&lt;/p&gt;
&lt;p&gt;fetch ant from apache.org:&amp;#8220;http://ant.apache.org/&amp;#8221;&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; cd &lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;opt
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; wget http&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;/&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;mirror.&lt;span class=&quot;Entity&quot;&gt;deri&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;at&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;apache&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;ant&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;binaries&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;apache&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;ant&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;1.7&lt;/span&gt;.&lt;span class=&quot;Constant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;bin.&lt;span class=&quot;Entity&quot;&gt;tar&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;gz&lt;/span&gt;
&lt;/pre&gt;&lt;p&gt;install it in a suitable place&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; tar &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;xzvf apache&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;ant&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;1.7&lt;/span&gt;.&lt;span class=&quot;Constant&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;bin.&lt;span class=&quot;Entity&quot;&gt;tar&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;gz&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; ln &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;s apache&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;ant&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;1.7&lt;/span&gt;.&lt;span class=&quot;Constant&quot;&gt;1&lt;/span&gt; ant
&lt;/pre&gt;&lt;p&gt;and add the following file&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; vim &lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;profile.&lt;span class=&quot;Entity&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;ant.&lt;span class=&quot;Entity&quot;&gt;sh&lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; export &lt;span class=&quot;Variable&quot;&gt;ANT_HOME&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;opt&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;ant
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt; export &lt;span class=&quot;Variable&quot;&gt;PATH&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;opt&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;ant&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;bin:&lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;Variable&quot;&gt;$&lt;/span&gt;PATH&lt;/span&gt;
&lt;/pre&gt;&lt;p&gt;restart the cruise agent to pick up the new settings&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; vim &lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;profile.&lt;span class=&quot;Entity&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;ant.&lt;span class=&quot;Entity&quot;&gt;sh&lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; export &lt;span class=&quot;Variable&quot;&gt;ANT_HOME&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;opt&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;ant
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt; export &lt;span class=&quot;Variable&quot;&gt;PATH&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;opt&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;ant&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;bin:&lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;Variable&quot;&gt;$&lt;/span&gt;PATH&lt;/span&gt;
&lt;/pre&gt;&lt;p&gt;verify your new settings:&lt;/p&gt;
&lt;p&gt;&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; [cruise&lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;Variable&quot;&gt;@&lt;/span&gt;test&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;~&lt;/span&gt;] env &lt;span class=&quot;Keyword&quot;&gt;|&lt;/span&gt;grep &lt;span class=&quot;Variable&quot;&gt;ANT&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;ANT_HOME&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;opt&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;ant
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt; [cruise&lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;Variable&quot;&gt;@&lt;/span&gt;test&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;~&lt;/span&gt;] ant &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;version
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;Apache&lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;Ant&lt;/span&gt; version &lt;span class=&quot;Constant&quot;&gt;1.7&lt;/span&gt;.&lt;span class=&quot;Constant&quot;&gt;1&lt;/span&gt; compiled on &lt;span class=&quot;Variable&quot;&gt;June&lt;/span&gt; &lt;span class=&quot;Constant&quot;&gt;27&lt;/span&gt; &lt;span class=&quot;Constant&quot;&gt;2008&lt;/span&gt;
&lt;/pre&gt;&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/ant&quot; rel=&quot;tag&quot;&gt;ant&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/centos&quot; rel=&quot;tag&quot;&gt;centos&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/cruise&quot; rel=&quot;tag&quot;&gt;cruise&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Thougthworks&quot; rel=&quot;tag&quot;&gt;Thougthworks&lt;/a&gt;</description>
          <pubDate>Tue, 29 Sep 2009 14:03:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/09/29/cruise-from-thougthworks-and-ant-1-7-1-on-centos-5-2/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/09/29/cruise-from-thougthworks-and-ant-1-7-1-on-centos-5-2/</link>
        </item>
    
        <item>
          <title>Extending Chef from Opscode with header params for http_request</title>
          <description>&lt;p&gt;Added support for custom header options in chef for the http_request&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tickets.opscode.com/browse/CHEF-462&quot;&gt;Opscode Chef Ticket&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://github.com/ehaselwanter/chef/commits/CHEF-462&quot;&gt;Resolved on Github&lt;/a&gt;&lt;/p&gt;An example using a custom &quot;Host&quot; header property:

&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; http_request &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;localhost_with_host_header&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;do&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt;   url &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;localhost&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt;   message &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;my request&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   5 &lt;/span&gt;   headers &lt;span class=&quot;Support&quot;&gt;Hash&lt;/span&gt;[&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;Host&lt;/span&gt; =&amp;gt; &lt;span class=&quot;String&quot;&gt;&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;my-real.hostname.com&lt;span class=&quot;String&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;]
&lt;span class=&quot;line-numbers&quot;&gt;   6 &lt;/span&gt; &lt;span class=&quot;Keyword&quot;&gt;end&lt;/span&gt;
&lt;/pre&gt;

The new parameter is headers which takes a Hash and will add all values.to_s to the request header.&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/http_request&quot; rel=&quot;tag&quot;&gt;http_request&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opschef&quot; rel=&quot;tag&quot;&gt;opschef&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opscode&quot; rel=&quot;tag&quot;&gt;opscode&lt;/a&gt;</description>
          <pubDate>Fri, 31 Jul 2009 15:20:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/07/31/extending-chef-from-opscode-with-header-params-for-http_request/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/07/31/extending-chef-from-opscode-with-header-params-for-http_request/</link>
        </item>
    
        <item>
          <title>Upgraded Page to Radiant 0.8</title>
          <description>&lt;p&gt;
  used extensions
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
    blog
  &lt;/li&gt;
  &lt;li&gt;
    copy_move
  &lt;/li&gt;
  &lt;li&gt;
    gallery
  &lt;/li&gt;
  &lt;li&gt;
    link_roll
  &lt;/li&gt;
  &lt;li&gt;
    paperclipped
  &lt;/li&gt;
  &lt;li&gt;
    reorder
  &lt;/li&gt;
  &lt;li&gt;
    tags
  &lt;/li&gt;
  &lt;li&gt;
    twitter_tags
  &lt;/li&gt;
  &lt;li&gt;
    code
  &lt;/li&gt;
  &lt;li&gt;
    custom_tags
  &lt;/li&gt;
  &lt;li&gt;
    language_redirect
  &lt;/li&gt;
  &lt;li&gt;
    page_preview
  &lt;/li&gt;
  &lt;li&gt;
    ray
  &lt;/li&gt;
  &lt;li&gt;
    settings
  &lt;/li&gt;
  &lt;li&gt;
    twitter
  &lt;/li&gt;
  &lt;li&gt;
    wym_editor_filter
  &lt;/li&gt;
&lt;/ul&gt;&lt;br/&gt;Technorati Tags: </description>
          <pubDate>Sun, 28 Jun 2009 12:52:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/06/28/upgraded-page-to-radiant-0-8/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/06/28/upgraded-page-to-radiant-0-8/</link>
        </item>
    
        <item>
          <title>Twitter notification</title>
          <description> added Twitter notification to blog posts. Testing with Ping.fm &lt;br/&gt;Technorati Tags: </description>
          <pubDate>Sun, 28 Jun 2009 12:44:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/06/28/twitter-notification/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/06/28/twitter-notification/</link>
        </item>
    
        <item>
          <title>Howto add Secure Shell Client SSH Key to OpenSSH Server</title>
          <description>&lt;p&gt;You have to convert the key like so:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
ssh-keygen -i -f id_dsa_2048_a.pub &amp;gt;&amp;gt;.ssh/authorized_keys
&lt;/code&gt;&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/ssh&quot; rel=&quot;tag&quot;&gt;ssh&lt;/a&gt;</description>
          <pubDate>Wed, 13 May 2009 18:05:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/05/13/howto-add-secure-shell-client-ssh-key-to-openssh-server/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/05/13/howto-add-secure-shell-client-ssh-key-to-openssh-server/</link>
        </item>
    
        <item>
          <title>Chef: Cook your own automated environment</title>
          <description>&lt;p&gt;There is a new kid on the configuration management block &lt;a href=&quot;http://wiki.opscode.com/display/chef/Home&quot;&gt;Chef from Opscode&lt;/a&gt;. Here is a blog post about &lt;a href=&quot;http://junglist.gen.nz/chef-vs-puppet/&quot;&gt;Puppet vs. Chef&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Chef is kind of Puppet with integrated iClassify and a rubyish configuration &lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt;. No wonder, &lt;a href=&quot;http://www.hjksolutions.com//&quot;&gt;Adam Jacob&lt;/a&gt; joined forces on Chef.&lt;/p&gt;
&lt;p&gt;You can find it on github&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/opscode/chef/tree/master&quot;&gt;http://github.com/opscode/chef/tree/master&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/opscode/chef-repo/tree/master&quot;&gt;http://github.com/opscode/chef-repo/tree/master&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/opscode/cookbooks/tree/master&quot;&gt;http://github.com/opscode/cookbooks/tree/master&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/chef&quot; rel=&quot;tag&quot;&gt;chef&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/environment+2.0&quot; rel=&quot;tag&quot;&gt;environment 2.0&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/iclassify&quot; rel=&quot;tag&quot;&gt;iclassify&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opschef&quot; rel=&quot;tag&quot;&gt;opschef&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opscode&quot; rel=&quot;tag&quot;&gt;opscode&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/opscookbook&quot; rel=&quot;tag&quot;&gt;opscookbook&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/puppet&quot; rel=&quot;tag&quot;&gt;puppet&lt;/a&gt;</description>
          <pubDate>Fri, 13 Mar 2009 15:54:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/03/13/chef-cook-your-own-automated-environment/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/03/13/chef-cook-your-own-automated-environment/</link>
        </item>
    
        <item>
          <title>Tomcat: Too many open files</title>
          <description>&lt;h3&gt;the symptom&lt;/h3&gt;
&lt;p&gt;If tomcat just respondes with &lt;span class=&quot;caps&quot;&gt;HTTP&lt;/span&gt; 500 and you find something like &lt;br /&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; org.&lt;span class=&quot;Entity&quot;&gt;apache&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;tomcat&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;jni&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;Error&lt;/span&gt;: &lt;span class=&quot;Variable&quot;&gt;Too&lt;/span&gt; many open files
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt;        at org.&lt;span class=&quot;Entity&quot;&gt;apache&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;tomcat&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;jni&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;Socket&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;accept&lt;/span&gt;(&lt;span class=&quot;Variable&quot;&gt;Native&lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;Method&lt;/span&gt;)
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt;        at org.&lt;span class=&quot;Entity&quot;&gt;apache&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;tomcat&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;util&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;AprEndpoint&lt;/span&gt;&lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;Variable&quot;&gt;$&lt;/span&gt;Acceptor&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;run&lt;/span&gt;(&lt;span class=&quot;Support&quot;&gt;AprEndpoint&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;java&lt;/span&gt;:&lt;span class=&quot;Constant&quot;&gt;1110&lt;/span&gt;)
&lt;span class=&quot;line-numbers&quot;&gt;   5 &lt;/span&gt;        at java.&lt;span class=&quot;Entity&quot;&gt;lang&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;Thread&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;run&lt;/span&gt;(&lt;span class=&quot;Support&quot;&gt;Thread&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;java&lt;/span&gt;:&lt;span class=&quot;Constant&quot;&gt;619&lt;/span&gt;)
&lt;span class=&quot;line-numbers&quot;&gt;   6 &lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;Mar&lt;/span&gt; &lt;span class=&quot;Constant&quot;&gt;12&lt;/span&gt;, &lt;span class=&quot;Constant&quot;&gt;2009&lt;/span&gt; &lt;span class=&quot;Constant&quot;&gt;12&lt;/span&gt;:&lt;span class=&quot;Constant&quot;&gt;01&lt;/span&gt;:&lt;span class=&quot;Constant&quot;&gt;34&lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;PM&lt;/span&gt; org.&lt;span class=&quot;Entity&quot;&gt;apache&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;tomcat&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;util&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;AprEndpoint&lt;/span&gt;&lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;Variable&quot;&gt;$&lt;/span&gt;Acceptor&lt;/span&gt; run
&lt;span class=&quot;line-numbers&quot;&gt;   7 &lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;SEVERE&lt;/span&gt;: &lt;span class=&quot;Variable&quot;&gt;Socket&lt;/span&gt; accept failed
&lt;/pre&gt;&lt;br /&gt;
in catalina.out&lt;/p&gt;&lt;p&gt;then you might have too many open file handles.&lt;/p&gt;
&lt;h3&gt;Too be sure &amp;#8230; lsof and ulimit are you friends&lt;/h3&gt;
&lt;p&gt;use&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ulimit -a&lt;/code&gt; to see you current configuration:&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt; $ ulimit &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;a
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt; core file size          (blocks, &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;c) &lt;span class=&quot;Constant&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   5 &lt;/span&gt; data seg size           (kbytes, &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;d) unlimited
&lt;span class=&quot;line-numbers&quot;&gt;   6 &lt;/span&gt; scheduling priority             (&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;e) &lt;span class=&quot;Constant&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   7 &lt;/span&gt; file size               (blocks, &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;f) unlimited
&lt;span class=&quot;line-numbers&quot;&gt;   8 &lt;/span&gt; pending signals                 (&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;i) &lt;span class=&quot;Constant&quot;&gt;13664&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   9 &lt;/span&gt; max locked memory       (kbytes, &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;l) &lt;span class=&quot;Constant&quot;&gt;32&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  10 &lt;/span&gt; max memory size         (kbytes, &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;m) unlimited
&lt;span class=&quot;line-numbers&quot;&gt;  11 &lt;/span&gt; open files                      (&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;n) &lt;span class=&quot;Constant&quot;&gt;1024&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  12 &lt;/span&gt; pipe size            (&lt;span class=&quot;Constant&quot;&gt;512&lt;/span&gt; bytes, &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;p) &lt;span class=&quot;Constant&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  13 &lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;POSIX&lt;/span&gt; message queues     (bytes, &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;q) &lt;span class=&quot;Constant&quot;&gt;819200&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  14 &lt;/span&gt; real&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;time priority              (&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;r) &lt;span class=&quot;Constant&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  15 &lt;/span&gt; stack size              (kbytes, &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;s) &lt;span class=&quot;Constant&quot;&gt;8192&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  16 &lt;/span&gt; cpu time               (seconds, &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;t) unlimited
&lt;span class=&quot;line-numbers&quot;&gt;  17 &lt;/span&gt; max user processes              (&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;u) &lt;span class=&quot;Constant&quot;&gt;13664&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  18 &lt;/span&gt; virtual memory          (kbytes, &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;v) unlimited
&lt;span class=&quot;line-numbers&quot;&gt;  19 &lt;/span&gt; file locks                      (&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;x) unlimited
&lt;/pre&gt;&lt;p&gt;so&lt;/p&gt;
&lt;p&gt;&lt;code&gt;open files                      (-n) 1024&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;shows there are 1024 possible open file handles &lt;strong&gt;per&lt;/strong&gt; process.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ulimit -n &amp;lt;value&amp;gt;&lt;/code&gt; lets you set the value. You might increase it to e.g. 4096. But be sure there is not something in you code which consumes too much file handles. And don&amp;#8217;t forget to restart the process after tweaking with &lt;code&gt;ulimit&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;to check for the current open file handles use &lt;code&gt;lsof&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;lsof |grep tomcat&lt;/code&gt; shows you all open handles from tomcat (or use &lt;code&gt;grep java&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;to get a number to compare with you settings &lt;code&gt;wc&lt;/code&gt; comes in handy :-)&lt;/p&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; $ lsof &lt;span class=&quot;Keyword&quot;&gt;|&lt;/span&gt;grep tomcat&lt;span class=&quot;Keyword&quot;&gt;|&lt;/span&gt;wc &lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;l
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt; &lt;span class=&quot;Constant&quot;&gt;136&lt;/span&gt;
&lt;/pre&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/java&quot; rel=&quot;tag&quot;&gt;java&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/tomcat&quot; rel=&quot;tag&quot;&gt;tomcat&lt;/a&gt;</description>
          <pubDate>Fri, 13 Mar 2009 15:31:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/03/13/tomcat-too-many-open-files/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/03/13/tomcat-too-many-open-files/</link>
        </item>
    
        <item>
          <title>Setting up an SSL secured Webserver with CentOS</title>
          <description>&lt;p&gt;Here is a very good &lt;span class=&quot;caps&quot;&gt;HOWTO&lt;/span&gt; for &lt;a href=&quot;http://wiki.centos.org/HowTos/Https&quot;&gt;setting up an &lt;span class=&quot;caps&quot;&gt;SSL&lt;/span&gt; secured Webserver with CentOS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ensure there is no &lt;code&gt;ssl.conf&lt;/code&gt; for the default VirtualServer in &lt;code&gt;/etc/httpd/conf.d/&lt;/code&gt; or incorporate your changes there.&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/apache&quot; rel=&quot;tag&quot;&gt;apache&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/apache2&quot; rel=&quot;tag&quot;&gt;apache2&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/centos&quot; rel=&quot;tag&quot;&gt;centos&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/ssl&quot; rel=&quot;tag&quot;&gt;ssl&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/virtualhost&quot; rel=&quot;tag&quot;&gt;virtualhost&lt;/a&gt;</description>
          <pubDate>Mon, 09 Mar 2009 17:02:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/03/09/setting-up-an-ssl-secured-webserver-with-centos/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/03/09/setting-up-an-ssl-secured-webserver-with-centos/</link>
        </item>
    
        <item>
          <title>Use EBS on EC2 Centos 5.2 and snapshot with cron to S3</title>
          <description>&lt;h3&gt;Create the volume and assign it to your instance&lt;/h3&gt;
&lt;h3&gt;Attach it to your Centos 5.2 instance&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;yum install xfsprogs&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;according to Thread: &lt;a href=&quot;http://developer.amazonwebservices.com/connect/thread.jspa?threadID=28968&quot;&gt;Debian Lenny and &lt;span class=&quot;caps&quot;&gt;XFS&lt;/span&gt; causes kernel panic: Suggested Workaround&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mkfs.xfs -l version=1 /dev/sdh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;insert into &lt;code&gt;/etc/fstab&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/dev/sdh        /vol/shared     xfs     noatime 0 0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;mount the volume&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mount /vol/shared&lt;/code&gt;&lt;/p&gt;&lt;h3&gt;Setup ec2-extra-tools&lt;/h3&gt;
&lt;p&gt;copy over your EC2_CERT and EC2_PRIVATE_KEY&lt;/p&gt;
&lt;p&gt;setup &lt;code&gt;/etc/profile.d/ec2.sh&lt;/code&gt;&lt;br /&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; 
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; export &lt;span class=&quot;Variable&quot;&gt;EC2_HOME&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;home&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/e&lt;/span&gt;&lt;/span&gt;c2 
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt; export &lt;span class=&quot;Variable&quot;&gt;EC2_CERT&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;ec2&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;cert&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;xxx.&lt;span class=&quot;Entity&quot;&gt;pem&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt; export &lt;span class=&quot;Variable&quot;&gt;EC2_PRIVATE_KEY&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;.&lt;span class=&quot;Entity&quot;&gt;ec2&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;pk&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;xxx.&lt;span class=&quot;Entity&quot;&gt;pem&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   5 &lt;/span&gt; export &lt;span class=&quot;Variable&quot;&gt;AWS_ACCOUNT_NUMBER&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   6 &lt;/span&gt; export &lt;span class=&quot;Variable&quot;&gt;AWS_ACCESS_KEY_ID&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   7 &lt;/span&gt; export &lt;span class=&quot;Variable&quot;&gt;AWS_SECRET_ACCESS_KEY&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   8 &lt;/span&gt; export &lt;span class=&quot;Variable&quot;&gt;PATH&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;Variable&quot;&gt;$&lt;/span&gt;PATH&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;/&lt;/span&gt;home&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;ec2&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;
&lt;/pre&gt;
&lt;br /&gt;
install &lt;code&gt;http://github.com/cmer/ec2-extra-tools/tree/master&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;add the binaries to e.g. &lt;code&gt;/home/ec2/bin/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;test the setup with:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ec2-xfs-snapshot /dev/sdh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;sample output:&lt;br /&gt;
&lt;pre class=&quot;sunburst&quot;&gt;&lt;span class=&quot;line-numbers&quot;&gt;   1 &lt;/span&gt; &lt;br /&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   2 &lt;/span&gt; [root&lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;Variable&quot;&gt;@&lt;/span&gt;domU&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;Variable&quot;&gt;XX&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;Variable&quot;&gt;XX&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;Variable&quot;&gt;XX&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;Variable&quot;&gt;XX&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;Variable&quot;&gt;XX&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;Variable&quot;&gt;XX&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&lt;span class=&quot;Constant&quot;&gt;:&lt;/span&gt;~&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;] ec2-xfs-snapshot &lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;dev&lt;span class=&quot;Keyword&quot;&gt;/&lt;/span&gt;sdh&lt;br /&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   3 &lt;/span&gt; device: &lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;dev&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/s&lt;/span&gt;&lt;/span&gt;dh&lt;br /&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   4 &lt;/span&gt; mount point: &lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;vol&lt;/span&gt;&lt;span class=&quot;StringRegexp&quot;&gt;&lt;span class=&quot;StringRegexp&quot;&gt;/s&lt;/span&gt;&lt;/span&gt;hared&lt;br /&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   5 &lt;/span&gt; ec2&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;volume&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;id: vol&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;67890a&lt;br /&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   6 &lt;/span&gt; &lt;br /&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   7 &lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;Freezing&lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;caps&quot;&gt;XFS&lt;/span&gt;&lt;/span&gt; volume&amp;#8230;&lt;br /&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   8 &lt;/span&gt; &lt;br /&gt;
&lt;span class=&quot;line-numbers&quot;&gt;   9 &lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;Creating&lt;/span&gt; snapshot&amp;#8230;&lt;br /&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  10 &lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SNAPSHOT&lt;/span&gt;&lt;/span&gt;        snap&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;b99bh1d8   vol&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;67890a    pending &lt;span class=&quot;Constant&quot;&gt;2009&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;03&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;-&lt;/span&gt;06T14:&lt;span class=&quot;Constant&quot;&gt;56&lt;/span&gt;:&lt;span class=&quot;Constant&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;Keyword&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;0000&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  11 &lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;Unfreezing&lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;&lt;span class=&quot;caps&quot;&gt;XFS&lt;/span&gt;&lt;/span&gt; volume&amp;#8230;&lt;br /&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  12 &lt;/span&gt; &lt;br /&gt;
&lt;span class=&quot;line-numbers&quot;&gt;  13 &lt;/span&gt; &lt;span class=&quot;Variable&quot;&gt;Done&lt;/span&gt;!&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;Setup cron&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;
crontab -e
SHELL=/bin/bash
PATH=/usr/bin:/bin:/usr/sbin
5 20 * * * source /etc/profile.d/java.sh; source /etc/profile.d/ec2.sh ; \ 
ec2-xfs-snapshot /dev/sdh &amp;gt;&amp;gt; /var/log/ebs_snapshots  2&amp;gt;&amp;gt; /var/log/ebs_snapshots
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;you need both: &lt;code&gt;java.sh&lt;/code&gt; and &lt;code&gt;ec2.sh&lt;/code&gt; for the amazon tools.&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/amazon&quot; rel=&quot;tag&quot;&gt;amazon&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/aws&quot; rel=&quot;tag&quot;&gt;aws&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/cloud&quot; rel=&quot;tag&quot;&gt;cloud&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/cron&quot; rel=&quot;tag&quot;&gt;cron&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/ebs&quot; rel=&quot;tag&quot;&gt;ebs&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/ec2&quot; rel=&quot;tag&quot;&gt;ec2&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/environment+2.0&quot; rel=&quot;tag&quot;&gt;environment 2.0&lt;/a&gt;</description>
          <pubDate>Fri, 06 Mar 2009 15:30:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2009/03/06/use-ebs-on-ec2-centos-5-2-and-snapshot-with-cron-to-s3/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2009/03/06/use-ebs-on-ec2-centos-5-2-and-snapshot-with-cron-to-s3/</link>
        </item>
    
        <item>
          <title>Thoughtworks Cruise 1.1 on Centos 5.2 EC2 building repo from github</title>
          <description>In this blog post I will show how to launch a Centos 5.2 Amazon ami image, install Cruise 1.1 from Thoughtworks (also known as Cruise Control) and building a Java project, fetched from a github repository.&lt;p&gt;Start new image with ElasticFox&lt;/p&gt;
&lt;p&gt;RightImage CentOS 5.2 Base Image, Version 4.0.2 (32-bit) (ami-1363877a)&lt;br /&gt;
&lt;a href=&quot;http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1901&amp;amp;categoryID=101&quot;&gt;Centos 5.2.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;conntect to it with ssh&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ssh -i $EC2_PAMKEY_FILE root&lt;/code&gt;ec2-XX-XX-XX-XX.compute-1.amazonaws.com@&lt;/p&gt;
&lt;p&gt;install git (version working with submodules, last with working dependencies from &lt;a href=&quot;http://kernel.org/pub/software/scm/git/&quot;&gt;kernel.org&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cd /etc/yum.repos.d/; wget http://kernel.org/pub/software/scm/git/RPMS/git.repo&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;add&lt;br /&gt;
&lt;pre&gt; &lt;br /&gt;
&lt;code&gt;
[git]
name=Base source git repository
baseurl=http://www.kernel.org/pub/software/scm/git/RPMS/SRPMS
enabled=1
gpgcheck=0
&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
to git.repo&lt;br /&gt;
&lt;pre&gt; &lt;br /&gt;
&lt;code&gt;
yum install yum-utils
yumdownloader --source git
rpm -i git-1.6.0.2-1.fc9.src.rpm 
yum install openssl-devel curl-devel expat-devel xmlto asciidoc
rpmbuild -bb /usr/src/redhat/SPECS/git.spec 
&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&amp;#8230; make a coffee brake &amp;#8230;&lt;br /&gt;
&lt;pre&gt; &lt;br /&gt;
&lt;code&gt;
Wrote: /usr/src/redhat/RPMS/i386/git-1.6.0.2-1.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/git-all-1.6.0.2-1.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/git-svn-1.6.0.2-1.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/git-cvs-1.6.0.2-1.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/git-arch-1.6.0.2-1.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/git-email-1.6.0.2-1.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/git-gui-1.6.0.2-1.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/gitk-1.6.0.2-1.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/perl-Git-1.6.0.2-1.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/git-debuginfo-1.6.0.2-1.i386.rpm&lt;/p&gt;
&lt;p&gt;cd  /usr/src/redhat/&lt;span class=&quot;caps&quot;&gt;RPMS&lt;/span&gt;/i386/&lt;/p&gt;
&lt;p&gt;yum remove git&lt;/p&gt;
&lt;p&gt;rpm -i perl-Git-1.6.0.2-1.i386.rpm git-1.6.0.2-1.i386.rpm&lt;/p&gt;
&lt;p&gt;git &amp;#8212;version&lt;br /&gt;
git version 1.6.0.2&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
To be able to use Cruise you must register for a licence key &lt;a href=&quot;http://studios.thoughtworks.com/cruise-continuous-integration/trial&quot;&gt;at thougthworks&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;fetch rpm files&lt;br /&gt;
&lt;pre&gt; &lt;br /&gt;
&lt;code&gt;
wget http://download01.thoughtworks.com/cruise11/cruise-server-1.1-5477.noarch.rpm
wget http://download01.thoughtworks.com/cruise11/cruise-agent-1.1-5477.noarch.rpm
&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
install rpm files&lt;br /&gt;
&lt;pre&gt; &lt;br /&gt;
&lt;code&gt;
rpm -i cruise-server-1.1-5477.noarch.rpm 
using default settings from /etc/default/cruise-server
Started Cruise Server on http://domU-XX-XX-XX-XX-XX-XX:8153/cruise[  OK  ]
&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
add your key which was sent by mail:&lt;/p&gt;
&lt;p&gt;in the  pipelines panel add your git repo and check connection.&lt;/p&gt;
&lt;p&gt;first you might get:&lt;br /&gt;
&lt;pre&gt; &lt;br /&gt;
&lt;code&gt;
Repository git@github.com:user/my-repo.git not found! : 
Error performing command: --- Command --- 
git ls-remote git@github.com:user/repo.git --- Environment --- 
{} --- INPUT ---- --OUTPUT --- --- ERROR --- ERROR: Host key verification failed. 
ERROR: fatal: The remote end hung up unexpectedly ---  
&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
ssh into your centos amazon instance and do exactly that: accept the host-key:&lt;br /&gt;
&lt;pre&gt; &lt;br /&gt;
&lt;code&gt;
git ls-remote git@github.com:user/my-repo.git 
The authenticity of host 'github.com (65.74.177.129)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,65.74.177.129' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
check the connection again. the next error you probably will get is:&lt;br /&gt;
&lt;pre&gt; &lt;br /&gt;
&lt;code&gt;
Repository git@github.com:user/my-repo.git not found! : 
Error performing command: --- Command --- git ls-remote git@github.com:user/repo.git 
--- Environment --- {} --- INPUT ---- --OUTPUT --- 
--- ERROR --- ERROR: Permission denied (publickey). ERROR: fatal: 
The remote end hung up unexpectedly --- 
&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
so we need a public/private keypair.&lt;br /&gt;
follow the steps in &lt;a href=&quot;http://github.com/guides/providing-your-ssh-key&quot;&gt;providing-your-ssh-key&lt;/a&gt;&lt;br /&gt;
at github. No everything should work ok.&lt;/p&gt;
&lt;p&gt;define your pipeline and add the cruise agent&lt;br /&gt;
&lt;pre&gt; &lt;br /&gt;
&lt;code&gt;
rpm -i cruise-agent-1.1-5477.noarch.rpm 
Now please edit /etc/default/cruise-agent and set CRUISE_SERVER to the IP address of your Cruise Server.
Once that is done start the Cruise Agent with '/etc/init.d/cruise-agent start'
[root@domU-XX-XX-XX-XX-XX-XX:~/cruise] /etc/init.d/cruise-agent start
using default settings from /etc/default/cruise-agent
Started Cruise Agent.                                      [  OK  ]
&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/ami&quot; rel=&quot;tag&quot;&gt;ami&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/aws&quot; rel=&quot;tag&quot;&gt;aws&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/cruise&quot; rel=&quot;tag&quot;&gt;cruise&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/cruise+control&quot; rel=&quot;tag&quot;&gt;cruise control&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/ec2&quot; rel=&quot;tag&quot;&gt;ec2&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/environment+2.0&quot; rel=&quot;tag&quot;&gt;environment 2.0&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/git&quot; rel=&quot;tag&quot;&gt;git&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/github&quot; rel=&quot;tag&quot;&gt;github&lt;/a&gt;</description>
          <pubDate>Sun, 30 Nov 2008 21:53:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2008/11/30/thoughtworks-cruise-1-1-on-centos-5-2-ec2-building-repo-from-github/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2008/11/30/thoughtworks-cruise-1-1-on-centos-5-2-ec2-building-repo-from-github/</link>
        </item>
    
        <item>
          <title>Tomcat character enconding UTF-8</title>
          <description>As with EVERY project sooner or later I encounter character encoding problems. This time everything seemed to be ok. UTF-8 settings everywhere I can think of. Did I miss something?&lt;p&gt;On the development environment it worked well, but on production &lt;span class=&quot;caps&quot;&gt;UTF&lt;/span&gt;-8 pages showed off with this annoying ?? character sequences instead of german umlauts. What did I miss?&lt;/p&gt;
&lt;p&gt;Java seems do rely on default character enconding settings itself. Passing &lt;code&gt;-Dfile.encoding=UTF8 @ with @JAVA_OPTS&lt;/code&gt; did the trick :-)&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/java&quot; rel=&quot;tag&quot;&gt;java&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/tomcat&quot; rel=&quot;tag&quot;&gt;tomcat&lt;/a&gt;</description>
          <pubDate>Thu, 09 Oct 2008 14:45:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2008/10/09/tomcat-character-enconding-utf-8/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2008/10/09/tomcat-character-enconding-utf-8/</link>
        </item>
    
        <item>
          <title>Howto fork a repo on github and submit patches to the author</title>
          <description>&lt;p&gt;It&amp;#8217;s really easy. Some Documentation can be found at&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://github.com/guides/fork-a-project-and-submit-your-modifications&quot;&gt;http://github.com/guides/fork-a-project-and-submit-your-modifications&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://github.com/guides/changing-your-origin&quot;&gt;http://github.com/guides/changing-your-origin&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://railsontherun.com/2008/3/3/how-to-use-github-and-submit-a-patch&quot;&gt;http://railsontherun.com/2008/3/3/how-to-use-github-and-submit-a-patch&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;click on the fork button on github&lt;/li&gt;
	&lt;li&gt;clone it from there&lt;/li&gt;
	&lt;li&gt;add the old origin as e.g. upstream&lt;/li&gt;
	&lt;li&gt;make the changes&lt;/li&gt;
	&lt;li&gt;push to own repo&lt;/li&gt;
	&lt;li&gt;klick on the pull request button.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;now that is community developing. great stuff&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/git&quot; rel=&quot;tag&quot;&gt;git&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/github&quot; rel=&quot;tag&quot;&gt;github&lt;/a&gt;</description>
          <pubDate>Tue, 07 Oct 2008 22:21:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2008/10/07/howto-fork-a-repo-on-github-and-submit-patches-to-the-author/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2008/10/07/howto-fork-a-repo-on-github-and-submit-patches-to-the-author/</link>
        </item>
    
        <item>
          <title>How to use highline menu in Capistrano</title>
          <description>&lt;p&gt;Sometimes invoking a task in Capistrano requires to input data. A very comfortable approach is to use &lt;a href=&quot;http://highline.rubyforge.org/&quot;&gt;highline&lt;/a&gt; since it is build for this purpose.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
    task :ask_for_environment do
      set :environments, [:production,:testing,:development]
      set(:environment, Capistrano::CLI.ui.choose do |menu|

          environments.each do |choice|
            menu.choice choice do set(:environment,choice)
            end
          end
        end
       
      ) unless exists?(:environment)
      
      unless environments.include?(environment.to_sym)  
        puts &quot;&quot;.rjust(70,'-') &amp;lt;&amp;lt; &quot;\nERROR: environment \&quot;#{environment}\&quot; is NOT a valid option\n&quot; &amp;lt;&amp;lt; &quot;&quot;.rjust(70,'-')
        exit 1
      end

      puts &quot;#{environment}&quot;      
    end    
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I think this code is self explanatory (more or less ;-). &lt;code&gt;Capistrano::CLI.ui.&lt;/code&gt; returns a highline object we can work with. For more examples on how to use highline visit the &lt;a href=&quot;http://highline.rubyforge.org/svn/trunk/highline/examples/&quot;&gt;highline svn repo&lt;/a&gt; This can then be combined with any task you like through the before hook&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
before &quot;deploy&quot;, &quot;ask_for_environment&quot;
&lt;/code&gt;&lt;/pre&gt; &lt;br /&gt;
The &lt;code&gt;unless exists?(:environment)&lt;/code&gt; lets one bypass the menu through setting the parameter at the invocation line ( &lt;code&gt;-s environment=production&lt;/code&gt;)&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/capistrano&quot; rel=&quot;tag&quot;&gt;capistrano&lt;/a&gt;</description>
          <pubDate>Sat, 20 Sep 2008 23:48:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2008/09/20/how-to-use-highline-menu-in-capistrano/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2008/09/20/how-to-use-highline-menu-in-capistrano/</link>
        </item>
    
        <item>
          <title>Puppet and external node definition through icpuppet from iClassify</title>
          <description>&lt;p&gt;Puppet is great for &amp;#8220;implementing&amp;#8221; server infrastructure. Puppet has a concept of nodes and classes.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
node 'webserver.testing.com' { 
        include apache 
} 

class apache { 
 
$packagelist = [&quot;httpd&quot;, &quot;webalizer&quot;, &quot;mod_ssl&quot;] 
 
package { $packagelist: 
       ensure =&amp;gt; &quot;installed&quot; 
}
...
}
&lt;/pre&gt;&lt;p&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;This example shows how the hostname &lt;code&gt;webserver.testing.com&lt;/code&gt; is bound to the class &lt;code&gt;apache&lt;/code&gt;. This approach is a kind of static. To get to a more dynamic nature of implementing things we can use icpuppet which is bundled with iClassify. To enable it in puppet include&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
    external_nodes = &quot;/path/to/icpuppet&quot;
    node_terminus = exec
&amp;lt;/pre&amp;gt;&lt;/code&gt;&lt;br /&gt;
in you &lt;code&gt;/etc/puppet/puppet.conf&lt;/code&gt;. I modified my icpuppet to include my iClassify credentials directly:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
config = {
  :server    =&amp;gt; 'http://localhost:5000',
  :user      =&amp;gt; 'admin',
  :passwd    =&amp;gt; 'admin'
}
&amp;lt;/pre&amp;gt;&lt;/code&gt;&lt;br /&gt;
I also modified the search string to fit my needs&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
 results = client.search(&quot;hostname:\&quot;#{hostname}\&quot; OR fqdn:\&quot;#{hostname}\&quot; OR puppet_host_id:\&quot;#{hostname}\&quot;&quot;)
&amp;lt;/pre&amp;gt;&lt;/code&gt;&lt;br /&gt;
Here you can implement &lt;span class=&quot;caps&quot;&gt;ANYTHING&lt;/span&gt; which gives back the node you are searching for.&lt;br /&gt;
To test it, just invoke the icpuppet binary with a potential hostname. Already registered hostnames can be retrieved from puppet with&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
puppetca --list --all&lt;/p&gt;
&lt;p&gt;domu-12-XX-38-XX-42-XX.compute-1.internal&lt;br /&gt;
+ domu-XX-XX-XX-00-XX-c6.compute-1.internal&lt;br /&gt;
&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;
an invocation of icpuppet yields:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
icpuppet domu-XX-XX-38-00-8d-XX.compute-1.internal
--- 
parameters: 
  processorcount: &quot;1&quot;
  kernel: Linux
  puppet_host_id: domu-XX-XX-38-00-8d-XX.compute-1.internal
  .....&lt;/p&gt;
&lt;p&gt;classes: &lt;br /&gt;
- base&lt;br /&gt;
- apache&lt;br /&gt;
&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;
This result gets interpreted by puppet as if we would define a node &lt;code&gt;domu-XX-XX-38-00-8d-XX.compute-1.internal&lt;/code&gt; including the classes &lt;code&gt;base&lt;/code&gt; and &lt;code&gt;apache&lt;/code&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
node 'domu-XX-XX-38-00-8d-XX.compute-1.internal' { 
        include base
        include apache 
} 
&amp;lt;/pre&amp;gt;&lt;/code&gt;&lt;br /&gt;
Additionally all parameters can be accessed directly in puppet as normal variables. E.g. &lt;code&gt;puppet_host_id&lt;/code&gt; can be accessed with &lt;code&gt;$puppet_host_id&lt;/code&gt;. Another great feature is that all nodes are &amp;#8220;tagged&amp;#8221; with their classes. which enables for statements like:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
 if tagged(apache){
                notice(&quot;This is a webserver&quot;)&lt;/p&gt;
}
&lt;p&gt;&lt;/pre&gt;&lt;/code&gt;&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/environment+2.0&quot; rel=&quot;tag&quot;&gt;environment 2.0&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/iclassify&quot; rel=&quot;tag&quot;&gt;iclassify&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/puppet&quot; rel=&quot;tag&quot;&gt;puppet&lt;/a&gt;</description>
          <pubDate>Sat, 13 Sep 2008 22:55:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2008/09/13/puppet-and-external-node-definition-through-icpuppet-from-iclassify/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2008/09/13/puppet-and-external-node-definition-through-icpuppet-from-iclassify/</link>
        </item>
    
        <item>
          <title>Bootstraping ec2 with Puppet, iClassify, and Capistrano</title>
          <description>&lt;p&gt;Searching through github ( &lt;a href=&quot;http://github.com/search?q=puppet&quot;&gt;http://github.com/search?q=puppet&lt;/a&gt;) I came across a very similar approach on howto bootstrap EC2 images with capistrano puppet and iclassify. ec2-cap is build on top of the Rightscale Amazon EC2 gem (&lt;a href=&quot;http://rightaws.rubyforge.org/&quot;&gt;http://rightaws.rubyforge.org/&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://github.com/adamhjk/ec2-cap/tree/master&quot;&gt;http://github.com/adamhjk/ec2-cap/tree/master&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The main idea behind this is to&lt;/p&gt;&lt;ol&gt;
	&lt;li&gt;start an EC2 instance (based on a simple declarative description) with capistrano&lt;/li&gt;
	&lt;li&gt;trigger a register process from this instance to the puppet master.&lt;/li&gt;
	&lt;li&gt;sign the certificate on the puppet master&lt;/li&gt;
	&lt;li&gt;pull the default configuration on the newly created host from the puppet master&lt;/li&gt;
	&lt;li&gt;register the new host with the iClassify server&lt;/li&gt;
	&lt;li&gt;tag the new host for the desired purpose (e.g. app for application server)&lt;/li&gt;
	&lt;li&gt;pull the node specific configuration from the puppet master&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/assets/2/EC2-Infrastructure.png&quot;  alt='EC2 Infrastructure' /&gt;&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/aws&quot; rel=&quot;tag&quot;&gt;aws&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/capistrano&quot; rel=&quot;tag&quot;&gt;capistrano&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/cloud&quot; rel=&quot;tag&quot;&gt;cloud&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/ec2&quot; rel=&quot;tag&quot;&gt;ec2&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/iclassify&quot; rel=&quot;tag&quot;&gt;iclassify&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/puppet&quot; rel=&quot;tag&quot;&gt;puppet&lt;/a&gt;</description>
          <pubDate>Sat, 06 Sep 2008 20:05:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2008/09/06/bootstraping-ec2-with-puppet-iclassify-and-capistrano/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2008/09/06/bootstraping-ec2-with-puppet-iclassify-and-capistrano/</link>
        </item>
    
        <item>
          <title>Automated Environment: Puppet, iClassify, and Capistrano</title>
          <description>&lt;p&gt;There is a new hype: cloud computing. Your web site traffic grows? Add a new application server. Want to increase availability? Add a new web server. Among others Amazon offers a whole bunch of infrastructure to support these needs. But it is not enough to fire up a server. The web server should include apache, the app server should include tomcat. The deployment should be aware of the new app server. This is where Puppet, iClassify, and Capistrano come into play. Puppet does the configuration management, installs your desired web and app server.&lt;/p&gt;&lt;p&gt;Depending on the &amp;quot;server class&amp;quot; it automagically can install packages, configurations, etc. iClassify plugs into this nicely: each new server registers with iClassify, providing the vital information of itself (yes, its scriptable and there already is script for exposing all relevant EC2 data of an instance). Once tagged with a &amp;quot;server class&amp;quot; Puppet can do its work. iClassify nicely integrates with Capistrano, so deployment tasks can be rolled out through the result of searches in the iClassify database. &amp;quot;Deploy to all HOSTS in $CLOUD where hasTomcat=TRUE&amp;quot;.&lt;/p&gt;
&lt;p&gt;Following is a writeup of the Puppet and iClassify installation on a Rightscale CentOS 5.0 Amazon EC2 ami:&lt;/p&gt;
&lt;p class=&quot;p3&quot;&gt;It is mainly based on &lt;a href=&quot;https://wiki.hjksolutions.com/display/IC/Install+Instructions&quot;&gt;https://wiki.hjksolutions.com/display/IC/Install+Instructions&lt;/a&gt;, so credits go there :-)&lt;/p&gt;
&lt;h3&gt;Install iClassify&lt;/h3&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;a href=&quot;http://reductivelabs.com/trac/puppet/wiki/InstallationGuide&quot;&gt;http://reductivelabs.com/trac/puppet/wiki/InstallationGuide&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://ifireball.wordpress.com/docs/howto-install-puppet-on-centos-50/&quot;&gt;http://ifireball.wordpress.com/docs/howto-install-puppet-on-centos-50/&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;code&gt;cd /etc/yum.repos.d&lt;br /&gt;
wget &lt;a href=&quot;http://people.redhat.com/dlutter/yum/dlutter.repo&quot;&gt;http://people.redhat.com/dlutter/yum/dlutter.repo&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;Enable the proper repository, edit the dlutter.repo file, find the [dlutter-rhel5] section and set enabled=1&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;vi dlutter.repo&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;yum install puppet-server&lt;br /&gt;
yum install ruby-rdoc&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;Create a minimal manifest file in /etc/puppet/manifests with the following content:&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;# The name of the system running the file server&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;code&gt;$server = &amp;quot;pmaster&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;&amp;nbsp;node default {&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;code&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;vi /etc/puppet/manifests/minimal&lt;br /&gt;
/etc/init.d/puppetmaster start&lt;br /&gt;
chkconfig puppetmaster on&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;Install iClassify&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;a href=&quot;https://wiki.hjksolutions.com/display/IC/Install+Instructions&quot;&gt;http://github.com/adamhjk/iclassify/tree/master/INSTALL&lt;br /&gt;
https://wiki.hjksolutions.com/display/IC/Install+Instructions&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;install rails and rake (already on ami)&lt;br /&gt;
review this (capistrano tasks for puppet/iclassify):&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;a href=&quot;http://reductivelabs.com/trac/puppet/wiki/RegenerateSSL&quot;&gt;http://reductivelabs.com/trac/puppet/wiki/RegenerateSSL&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;recipes for puppet (should try out the iclassify thing):&lt;a href=&quot;http://github.com/apenney/puppet/tree/master&quot;&gt;&lt;br /&gt;
http://github.com/apenney/puppet/tree/master&lt;/a&gt;&lt;br /&gt;
contact: If you have any specific questions there's an irc channel on freenode (#puppet), and the major developers are all there and it's pretty easy to get advice (if it's in the work week between 9-5est I'll always help if I can.)&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;presentations:&lt;a href=&quot;http://reductivelabs.com/trac/puppet/wiki/PuppetPresentations&quot;&gt;&lt;br /&gt;
http://reductivelabs.com/trac/puppet/wiki/PuppetPresentations&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;other blog entries&lt;a href=&quot;http://www.red91.com/2008/07/09/puppet-setup-test-notes&quot;&gt;&lt;br /&gt;
http://plathrop.tertiusfamily.net/blog/category/tools/puppet/&lt;br /&gt;
http://www.red91.com/2008/07/09/puppet-setup-test-notes&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;install iClassify&lt;/b&gt;&lt;/h3&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;gem list|grep rails&lt;br /&gt;
gem list|grep rake&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;install&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;builder, UUID Tools. Mongrel, Highline&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;gem install builder uuidtools mongrel highline ruby-net-ldap&lt;br /&gt;
yum install mysql mysql-devel&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;/etc/init.d/mysqld start&lt;br /&gt;
/usr/bin/mysqladmin -u root password 'mysql'&lt;br /&gt;
mysqladmin create iclassify_production -p&lt;br /&gt;
mysql iclassify_production -p&lt;br /&gt;
GRANT ALL ON iclassify_production.* TO 'iclassify'@'localhost' IDENTIFIED BY 'yourpass'&lt;/code&gt;;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;a href=&quot;http://smangal.wordpress.com/2007/05/17/mysql-gem-on-centos/&quot;&gt;http://smangal.wordpress.com/2007/05/17/mysql-gem-on-centos/&lt;/a&gt;&lt;br /&gt;
&lt;code&gt;gem install mysql -- --with-mysql-include=/usr/include/mysql --with-mysql-lib=/usr/lib/mysql&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;wget https://wiki.hjksolutions.com/download/attachments/295039/mongrel_runit-0.2.0.gem&lt;br /&gt;
gem install mongrel_runit-0.2.0.gem&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;yum install git&lt;br /&gt;
yum install facter&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;a href=&quot;http://rubyworks.rubyforge.org/installation/centos.html&quot;&gt;http://rubyworks.rubyforge.org/installation/centos.html&lt;/a&gt;&lt;br /&gt;
&lt;code&gt;wget &lt;a href=&quot;http://rubyworks.rubyforge.org/RubyWorks.repo&quot;&gt;http://rubyworks.rubyforge.org/RubyWorks.repo&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;RubyWorks.repo /etc/yum.repos.d/&lt;br /&gt;
change baseurl to (does read to 5.0 --&amp;gt; no web site)&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;a href=&quot;file:///Users/ehaselwanter/Desktop/Outbox/baseurl=http://rubyworks.rubyforge.org/redhat/5/RPMS/$basearch&quot;&gt;baseurl=http://rubyworks.rubyforge.org/redhat/5/RPMS/$basearch&lt;/a&gt;&lt;br /&gt;
in&lt;br /&gt;
&lt;code&gt;vi /etc/yum.repos.d/RubyWorks.repo&lt;br /&gt;
yum install runit&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;b&gt;install IClassify&lt;/b&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;choose your ICLASSIFY_HOME directory&lt;br /&gt;
&lt;code&gt;git clone git://git.hjksolutions.com/iclassify iclassify&lt;br /&gt;
cd iclassify/&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;rake iclassify:install ICBASE=/srv/iclassify ICUSER=apache ICGROUP=apache DBUSER=iclassify DBPASS=yourpass&lt;br /&gt;
chown -R apache:apache /srv/iclassify/*&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;mkdir /etc/mongrel_runit&lt;br /&gt;
cp /srv/iclassify/examples/mongrel_runit_iclassify.yml /etc/mongrel_runit/iclassify.yml&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;change user and group to apache in&lt;br /&gt;
&lt;code&gt;/etc/mongrel_runit/iclassify.yml&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;mongrel_runit -c /etc/mongrel_runit/iclassify.yml create&lt;br /&gt;
chmod a+x /etc/init.d/mongrel_runit&lt;br /&gt;
ln -s /etc/init.d/mongrel_runit /etc/init.d/iclassify&lt;br /&gt;
/etc/init.d/iclassify -v status&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;mkdir -p /etc/sv/iclassify-solr/log/main&lt;br /&gt;
cp /srv/iclassify/examples/solr-run /etc/sv/iclassify-solr/run&lt;br /&gt;
cp /srv/iclassify/examples/solr-log /etc/sv/iclassify-solr/log/run&lt;br /&gt;
chmod a+x /etc/sv/iclassify-solr/run /etc/sv/iclassify-solr/log/run&lt;br /&gt;
ln -s /etc/sv/iclassify-solr /var/service&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;sv binary is in sbin (in this centos install)&lt;br /&gt;
&lt;code&gt; ln -s /usr/sbin/sv /etc/init.d/iclassify-solr&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;change JAVA_HOME to&lt;code&gt; /usr/java/default&lt;br /&gt;
vi /etc/sv/iclassify-solr/run&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;solr logfiles are in&lt;br /&gt;
&lt;code&gt; /var/service/iclassify-solr/log/main/current&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;for apache:&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;add a &lt;code&gt;/etc/httpd/conf.d/iClassify.conf&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;code&gt;&amp;lt;VirtualHost *:*&amp;gt;&lt;br /&gt;
ProxyPass / http://localhost:5000/&lt;br /&gt;
ProxyPassReverse / http://localhost:5000/&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;in your ICLASSIFY_HOME&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;./bin/icagent -d ./icangent -s http://localhost:5000 -n&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;/code&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;to show the status&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;and if it fit your needs:&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;code&gt;./bin/icagent -d ./icangent -s http://localhost:5000&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;now you are ready. log into the iclassify server and enjoy :-)&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;install the ssl for iClassify:&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;a href=&quot;http://www.electrictoolbox.com/mod-ssl-apache-centos-5/&quot;&gt;http://www.electrictoolbox.com/mod-ssl-apache-centos-5/&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/amazon&quot; rel=&quot;tag&quot;&gt;amazon&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/aws&quot; rel=&quot;tag&quot;&gt;aws&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/capistrano&quot; rel=&quot;tag&quot;&gt;capistrano&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/cloud&quot; rel=&quot;tag&quot;&gt;cloud&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/ec2&quot; rel=&quot;tag&quot;&gt;ec2&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/environment+2.0&quot; rel=&quot;tag&quot;&gt;environment 2.0&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/high+availability&quot; rel=&quot;tag&quot;&gt;high availability&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/iclassify&quot; rel=&quot;tag&quot;&gt;iclassify&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/puppet&quot; rel=&quot;tag&quot;&gt;puppet&lt;/a&gt;</description>
          <pubDate>Tue, 26 Aug 2008 22:03:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2008/08/26/automated-environment-puppet-iclassify-and-capistrano/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2008/08/26/automated-environment-puppet-iclassify-and-capistrano/</link>
        </item>
    
        <item>
          <title>Apache Webserver and Tomcat Virtual Hosts</title>
          <description>Problem description: You want to server multiple web applications with one Tomcat instance. The brute force variant is to just &quot;rewrite&quot; or ProxyPass the request from e.g. www.myhost.com to the local tomcat with localhost:8080/myhost. But this leads to context urls of ressources in the served html pages. You can either deploy you webapp in the ROOT context (but there is just ONE ROOT context, so this does not work). So let us use virtual hosts on both, the apache webserver and the tomcat servlet container. &lt;p class=&quot;p4&quot;&gt;create a app location in $CATALINA_HOME&lt;br /&gt;
mkdir www.your-server-name.net&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;deploy the webapp in ROOT context&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;edit server.xml according&lt;a href=&quot;http://tomcat.apache.org/tomcat-6.0-doc/&quot;&gt;&lt;br /&gt;
http://confluence.atlassian.com/display/DOC/Guide+to+using+Apache+Tomcat%27s+Virtual+Hosts&lt;br /&gt;
http://tomcat.apache.org/tomcat-6.0-doc/&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;in Tomcat server.xml&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&amp;lt;Engine name=&amp;quot;Catalina&amp;quot; defaultHost=&amp;quot;&lt;span class=&quot;s2&quot;&gt;www.internal.your-server-name.net&lt;/span&gt;&amp;quot;&amp;gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&amp;lt;Host name=&amp;quot;&lt;span class=&quot;s2&quot;&gt;www.internal.your-server-name.net&lt;/span&gt;&amp;quot; appBase=&amp;quot;www.your-server-name.net&amp;quot;&amp;gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&amp;lt;/Host&amp;gt;&lt;br /&gt;
&amp;lt;/Engine&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;edit Apache config according:&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;In Apache conf&lt;a href=&quot;http://confluence.atlassian.com/display/DOC/Using+Apache+with+virtual+hosts+and+mod_proxy&quot;&gt;&lt;br /&gt;
http://confluence.atlassian.com/display/DOC/Using+Apache+with+virtual+hosts+and+mod_proxy&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p7&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&amp;lt;VirtualHost *&amp;gt;&lt;span class=&quot;s2&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;ServerName &lt;/span&gt;www.your-server-name.net&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;ProxyRequests Off&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&amp;lt;Proxy *&amp;gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;Order deny,allow&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;Allow from all&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&amp;lt;/Proxy&amp;gt;&lt;br /&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;ProxyPass / http://&lt;/span&gt;www.internal.your-server-name.net&lt;span class=&quot;s2&quot;&gt;:8080/&lt;/span&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;ProxyPassReverse / http://&lt;span class=&quot;s2&quot;&gt;www.internal.your-server-name.net&lt;/span&gt;:8080/&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&amp;lt;Location /&amp;gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;Order allow,deny&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;Allow from all&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;and in /etc/hosts&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;127.0.0.1 &lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;localhost&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://www.internal.your-server-name.net/&quot;&gt;www.internal.your-server-name.net&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;restart tomcat&lt;br /&gt;
restart apache&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;that's it :-)&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/apache&quot; rel=&quot;tag&quot;&gt;apache&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/cloud&quot; rel=&quot;tag&quot;&gt;cloud&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/tomcat&quot; rel=&quot;tag&quot;&gt;tomcat&lt;/a&gt;</description>
          <pubDate>Mon, 25 Aug 2008 17:02:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2008/08/25/apache-webserver-and-tomcat-virtual-hosts/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2008/08/25/apache-webserver-and-tomcat-virtual-hosts/</link>
        </item>
    
        <item>
          <title>Amazon Elastic Block Store</title>
          <description>&lt;p class=&quot;p4&quot;&gt;There is a new kid on the block: Amazon Elastic Block Store&lt;/p&gt;&lt;p&gt;The new service fills one of the last missing links in the Amazon Webservices. It provides for persistent, high-performance, high-availability block-level storage which you can attach to a running instance of EC2.&lt;a href=&quot;http://aws.typepad.com/aws/2008/08/amazon-elastic.html&quot;&gt;http://aws.typepad.com/aws/2008/08/amazon-elastic.html&lt;/a&gt;. And there is a great tutorial by Eric Hammond on how to use this new service with Mysql &lt;a href=&quot;http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1663&amp;amp;categoryID=100&quot;&gt;Running MySQL on Amazon EC2 with Elastic Block Store&lt;/a&gt;&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/amazon&quot; rel=&quot;tag&quot;&gt;amazon&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/aws&quot; rel=&quot;tag&quot;&gt;aws&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/cloud&quot; rel=&quot;tag&quot;&gt;cloud&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/ebs&quot; rel=&quot;tag&quot;&gt;ebs&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/ec2&quot; rel=&quot;tag&quot;&gt;ec2&lt;/a&gt;</description>
          <pubDate>Fri, 22 Aug 2008 20:41:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2008/08/22/amazon-elastic-block-store/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2008/08/22/amazon-elastic-block-store/</link>
        </item>
    
        <item>
          <title>Poolparty, a promising tool for cloud computing</title>
          <description>Poolparty is a very interesting project. It promises easy cloud computing with Amazon EC2. The project undergoes a heavy rewrite of its core, so we ought to stay tuned :-) &lt;p&gt;Ressource links are as follows:&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;The homepage:&lt;a href=&quot;http://poolpartyrb.com/&quot;&gt;&lt;br /&gt;
http://poolpartyrb.com/&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;The repository can be found at:&lt;a href=&quot;http://github.com/auser/poolparty/tree/master&quot;&gt;&lt;br /&gt;
http://github.com/auser/poolparty/tree/master&lt;/a&gt;&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/amazon&quot; rel=&quot;tag&quot;&gt;amazon&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/aws&quot; rel=&quot;tag&quot;&gt;aws&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/cloud&quot; rel=&quot;tag&quot;&gt;cloud&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/ec2&quot; rel=&quot;tag&quot;&gt;ec2&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/environment+2.0&quot; rel=&quot;tag&quot;&gt;environment 2.0&lt;/a&gt;</description>
          <pubDate>Thu, 21 Aug 2008 18:13:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2008/08/21/poolparty-a-promising-tool-for-cloud-computing/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2008/08/21/poolparty-a-promising-tool-for-cloud-computing/</link>
        </item>
    
        <item>
          <title>High-Availability Load Balancer (With Failover and Session Support) With HAProxy</title>
          <description>&lt;p class=&quot;p4&quot;&gt;HAProxy seems very promising as a production use software loadbalancer. The only drawback with this solution is that one still has to use some extra piece of middleware to terminate a ssl session (stunnel, apache).&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;Setting Up A High-Availability Load Balancer (With Failover and Session Support) With HAProxy/Keepalived On Debian Etch&lt;a href=&quot;http://www.howtoforge.com/haproxy_loadbalancer_debian_etch&quot;&gt;&lt;br /&gt;
http://www.howtoforge.com/haproxy_loadbalancer_debian_etch&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;Using HA Proxy with Amazon EC2&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1639&amp;amp;categoryID=100&quot;&gt;&lt;br /&gt;
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1639&amp;amp;categoryID=100&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;haproxy documentation&lt;a href=&quot;http://haproxy.1wt.eu/download/1.2/doc/haproxy-en.txt&quot;&gt; &lt;br /&gt;
http://haproxy.1wt.eu/download/1.2/doc/haproxy-en.txt&lt;/a&gt;&lt;/p&gt;&lt;br/&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/amazon&quot; rel=&quot;tag&quot;&gt;amazon&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/aws&quot; rel=&quot;tag&quot;&gt;aws&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/cloud&quot; rel=&quot;tag&quot;&gt;cloud&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/ec2&quot; rel=&quot;tag&quot;&gt;ec2&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/high+availability&quot; rel=&quot;tag&quot;&gt;high availability&lt;/a&gt;</description>
          <pubDate>Wed, 20 Aug 2008 16:43:00 GMT</pubDate>
          <guid>http://edmund.haselwanter.com/en/blog/2008/08/20/high-availability-load-balancer-with-failover-and-session-support-with-haproxy/</guid>
          <link>http://edmund.haselwanter.com/en/blog/2008/08/20/high-availability-load-balancer-with-failover-and-session-support-with-haproxy/</link>
        </item>
    
    
  </channel>
</rss>

