Class: Judo::Setup
- Inherits:
-
Object
- Object
- Judo::Setup
- Defined in:
- lib/judo/setup.rb
Instance Method Summary collapse
- #check_setup ⇒ Object
- #default_config ⇒ Object
- #ec2 ⇒ Object
- #getenv(key) ⇒ Object
- #init ⇒ Object
- #request(query, default = "") ⇒ Object
- #sdb ⇒ Object
- #setup_bucket ⇒ Object
- #setup_db ⇒ Object
- #setup_default_security_group ⇒ Object
- #setup_default_server_group ⇒ Object
- #setup_judo_config ⇒ Object
Instance Method Details
#check_setup ⇒ Object
30 31 32 33 |
# File 'lib/judo/setup.rb', line 30 def check_setup abort "you are already inside a judo repository" if Judo::Config.find_judo_dir(Dir.pwd) abort "./.git not found - judo configurations must be kept in a git repo. type 'git init' to setup the git repo." unless File.exists? "./.git" end |
#default_config ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/judo/setup.rb', line 3 def default_config <<DEFAULT { "key_name":"#{@keypair}", "instance_size":"m1.small", "ami32":"ami-bb709dd2", // public ubuntu 9.10 ami - 32 bit "ami64":"ami-55739e3c", // public ubuntu 9.10 ami - 64 bit "user":"ubuntu", "security_group":"judo", "availability_zone":"us-east-1d" } DEFAULT end |
#ec2 ⇒ Object
106 107 108 |
# File 'lib/judo/setup.rb', line 106 def ec2 @ec2 ||= Judo::Config.get_ec2(@aws_access_id, @aws_secret_key) end |
#getenv(key) ⇒ Object
17 18 19 20 21 22 |
# File 'lib/judo/setup.rb', line 17 def getenv(key) printf "Looking in your environment for #{key}..." printf "found!" if ENV[key] printf "\n" ENV[key] end |
#init ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/judo/setup.rb', line 35 def init check_setup @aws_access_id ||= getenv('AWS_ACCESS_KEY_ID') @aws_access_id ||= getenv('AMAZON_ACCESS_KEY_ID') @aws_secret_key ||= getenv('AWS_SECRET_ACCESS_KEY') @aws_secret_key ||= getenv('AMAZON_SECRET_ACCESS_KEY') @s3_bucket ||= getenv('JUDO_S3_BUCKET') @s3_bucket ||= "judo_#{rand(2**64).to_s(36)}" begin @aws_access_id = request("Please enter your AWS access key", @aws_access_id) @aws_secret_key = request("Please enter your AWS secret key" , @aws_secret_key) @s3_bucket = request("Please enter an S3 bucket to use", @s3_bucket) setup_default_server_group setup_default_security_group setup_bucket setup_db setup_judo_config rescue *[Interrupt, EOFError] puts "\nGoodbye!" exit(0) rescue Object => e puts "There was an error: #{e.class}:#{e.}" puts "Try again or hit CTRL-C" retry end end |
#request(query, default = "") ⇒ Object
24 25 26 27 28 |
# File 'lib/judo/setup.rb', line 24 def request(query, default = "") printf "#{query} ['#{default}']: " input = STDIN.readline.strip input.empty? and default or input end |
#sdb ⇒ Object
110 111 112 |
# File 'lib/judo/setup.rb', line 110 def sdb @sdb ||= Judo::Config.get_sdb(@aws_access_id, @aws_secret_key) end |
#setup_bucket ⇒ Object
83 84 85 86 |
# File 'lib/judo/setup.rb', line 83 def setup_bucket puts "setting up an s3 bucket" Aws::S3.new(@aws_access_id, @aws_secret_key, :logger => Logger.new(nil)).bucket(@s3_bucket, true) end |
#setup_db ⇒ Object
64 65 66 67 68 69 70 71 72 |
# File 'lib/judo/setup.rb', line 64 def setup_db puts "Trying to connect to SimpleDB with #{@aws_access_id}" sdb.create_domain(Judo::Server.domain) sdb.create_domain(Judo::Snapshot.domain) sdb.create_domain("judo_config") olddb = sdb.get_attributes("judo_config", "judo")[:attributes]["dbversion"] abort "There is an existing judo database of a newer version - upgrade judo and try again" if olddb and olddb.first.to_i > Judo::Config.db_version sdb.put_attributes("judo_config", "judo", { "dbversion" => Judo::Config.db_version }, :replace) end |
#setup_default_security_group ⇒ Object
74 75 76 77 78 79 80 81 |
# File 'lib/judo/setup.rb', line 74 def setup_default_security_group begin ec2.create_security_group('judo', 'Judo') ec2.("judo", 22, 22,'tcp','0.0.0.0/0') rescue Aws::AwsError => e raise unless e. =~ /InvalidGroup.Duplicate/ end end |
#setup_default_server_group ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/judo/setup.rb', line 88 def setup_default_server_group puts "Setting up default group and keypair" system "mkdir -p default/keypairs" @keypair = "judo#{ec2.describe_key_pairs.map { |k| k[:aws_key_name] }.map { |k| k =~ /^judo(\d*)/; $1.to_i }.sort.last.to_i + 1}" material = ec2.create_key_pair(@keypair)[:aws_material] File.open("default/keypairs/#{@keypair}.pem", 'w') { |f| f.write material } File.chmod 0600, "default/keypairs/#{@keypair}.pem" File.open("default/config.json","w") { |f| f.write default_config } end |
#setup_judo_config ⇒ Object
100 101 102 103 104 |
# File 'lib/judo/setup.rb', line 100 def setup_judo_config puts "setting up an .judo/config.yml" system "mkdir .judo" File.open(".judo/config.yml","w") { |f| f.write({ "access_id" => @aws_access_id, "access_secret" => @aws_secret_key, "s3_bucket" => @s3_bucket }.to_yaml) } end |