Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

No Format
knife exec -E 'nodes.all {|n| if n.name =~ /^i-/ then printf("%-45s\t%s\n" % [n.override.tomcat.vhost,n.ec2.ami_id]) end }'|sort

(Thanks, opscode!)

How to get whats installed for each MFI:

You will need to install amazon-ec2 gem e.g. sudo gem install amazone-ec2 and knife should be working. Save the following script as state.rb and then invoke it knife exec state.rb:

No Format
#!/usr/bin/env ruby

# invoke with knife:
# knife exec state.rb
#
#
# also make sure ruby gem for amazon ec2 is installed e.g.: sudo gem install amazon-ec2

require 'rubygems'
require 'AWS'

ACCESS_KEY_ID = ENV['AMAZON_ACCESS_KEY_ID']
SECRET_ACCESS_KEY = ENV['AMAZON_SECRET_ACCESS_KEY']

ec2 = AWS::EC2::Base.new(:access_key_id => ACCESS_KEY_ID, :secret_access_key => SECRET_ACCESS_KEY)

amis = {}

ec2.describe_images(:owner_id => "self").imagesSet.item.each do |image|
    name = image["name"]
    if !name.nil?
        m = name.match('CI\/EC2\/AMI\/(?:[^\/]+)\/(?:[^\/]+)\/TAG_hudson-cloud-(.+)(?:-)(.+)')
        if !m.nil?
            tag = m[1]
            if tag.eql? "mifos-image"
                tag = "mifos_2_1-bi_1_1-image"
            end
            amis[image["imageId"]] = [tag, m[2]]
        end
    end
end

mfis = {}

nodes.all { |n|
    if n.name =~ /^i-/
        mfi = n.override.tomcat.vhost
        env = (mfi.start_with? "testing-") ? "test" : "prod"
        mfi = mfi.match('(?:testing-){0}reporting-([^\/.]+).mifos.org')[1]
        mfis[mfi + " " + env] = [mfi, env, amis[n.ec2.ami_id][0], amis[n.ec2.ami_id][1]]
    end
}

printf("==============================================================\n")
printf("%-20s\t%-5s\t%-20s\t%s\n" % ["MFI", "ENV", "AMI", "BUILD"])
printf("==============================================================\n")
mfis.keys.sort.each { |mfi|
    printf("%-20s\t%-5s\t%-20s\t%s\n" % [mfis[mfi][0],mfis[mfi][1],mfis[mfi][2],mfis[mfi][3]])
}

...