gaptool-server 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c4e37952b1aeb9e6097c6d75597c4d067a106c56
4
- data.tar.gz: 1bb992a5df32f095dbc787b2487632f42e76b61b
3
+ metadata.gz: 5b30390596dc01948c60152b9bfcedac64c6a7a2
4
+ data.tar.gz: 1047f8c1a78239b180e0dfa82b09b32ff10553b0
5
5
  SHA512:
6
- metadata.gz: b54978df0beef6e699879fa440d5e6cee9d7305dae09c4d28ac30261eff6bd9ab5c2847ddb6783560955e8dc2d17f64b0ee75d77219b9f7df556c3c4c0913adc
7
- data.tar.gz: 634b1e0923a771b73afda77449390e0c4eebbe0a4fa7d026070f8546c7250acfce81bb9beb6914a66b006fcebafab31ed081e2790f8d2428834fbe136be6ccb7
6
+ metadata.gz: e1348e1db97048015c9f916787891ab1411378aeab0693e5c0c1f2c5583c329b888150b56f97dd57861e1b7481e2b3f9a232e791bb84e74eec102364023add97
7
+ data.tar.gz: 1f50122385dad3fcd3d2f0dc66efddb795c3f23661bbd68a6fd44933c35254b54f938fc276bd851ef176b30eac341f7070c21265c52ed24f37e8aff3052cd5df
data/lib/routes/main.rb CHANGED
@@ -18,7 +18,8 @@ class GaptoolServer < Sinatra::Application
18
18
  data.merge!("secret" => @secret)
19
19
  security_group = data['security_group'] || $redis.hget("role:#{data['role']}", "security_group")
20
20
  sgid = gt_securitygroup(data['role'], data['environment'], data['zone'], security_group)
21
- image_id = $redis.hget("amis:#{data['role']}", data['zone'].chop) || $redis.hget("amis", data['zone'].chop)
21
+ image_id = data['ami'].chop || $redis.hget("amis:#{data['role']}", data['zone'].chop) || $redis.hget("amis", data['zone'].chop)
22
+ puts data['zone']
22
23
  if data['mirror']
23
24
  instance = @ec2.instances.create(
24
25
  :image_id => image_id,
@@ -52,7 +53,12 @@ class GaptoolServer < Sinatra::Application
52
53
  instance.add_tag('Name', :value => "#{data['role']}-#{data['environment']}-#{instance.id}")
53
54
  instance.add_tag('gaptool', :value => "yes")
54
55
  # Create temporary redis entry for /register to pull the instance id
55
- $redis.set("instance:#{data['role']}:#{data['environment']}:#{@secret}", instance.id)
56
+ # with an expire of 24h
57
+ host_key = "instance:#{data['role']}:#{data['environment']}:#{@secret}"
58
+ $redis.hmset(host_key, 'instance_id', instance.id,
59
+ 'chef_branch', data['chef_branch'],
60
+ 'chef_repo', data['chef_repo'])
61
+ $redis.expire(host_key, 86400)
56
62
  "{\"instance\":\"#{instance.id}\"}"
57
63
  end
58
64
 
@@ -71,9 +77,14 @@ class GaptoolServer < Sinatra::Application
71
77
  data = JSON.parse request.body.read
72
78
  AWS.config(:access_key_id => $redis.hget('config', 'aws_id'), :secret_access_key => $redis.hget('config', 'aws_secret'), :ec2_endpoint => "ec2.#{data['zone'].chop}.amazonaws.com")
73
79
  @ec2 = AWS::EC2.new
74
- @instance = @ec2.instances[$redis.get("instance:#{data['role']}:#{data['environment']}:#{data['secret']}")]
80
+ host_key = "instance:#{data['role']}:#{data['environment']}:#{data['secret']}"
81
+ host_data = redis.hgetall(host_key)
82
+ unless host_data
83
+ error 403
84
+ end
85
+ @instance = @ec2.instances[host_data['instance']]
75
86
  hostname = @instance.dns_name
76
- $redis.del("instance:#{data['role']}:#{data['environment']}:#{data['secret']}")
87
+ $redis.del(host_key)
77
88
  @apps = []
78
89
  $redis.keys("app:*").each do |app|
79
90
  if $redis.hget(app, 'role') == data['role']
@@ -85,6 +96,10 @@ class GaptoolServer < Sinatra::Application
85
96
  data.merge!("apps" => @apps.to_json)
86
97
  data.merge!("instance" => @instance.id)
87
98
  hash2redis("host:#{data['role']}:#{data['environment']}:#{@instance.id}", data)
99
+
100
+ @chef_repo = data['chef_repo'] || $redis.hget('config', 'chefrepo')
101
+ @chef_branch = data['chef_branch'] || $redis.hget('config', 'chefbranch')
102
+ @initkey = $redis.hget('config', 'initkey')
88
103
  @json = {
89
104
  'hostname' => hostname,
90
105
  'recipe' => 'init',
@@ -92,12 +107,13 @@ class GaptoolServer < Sinatra::Application
92
107
  'run_list' => ['recipe[init]'],
93
108
  'role' => data['role'],
94
109
  'environment' => data['environment'],
95
- 'chefrepo' => $redis.hget('config', 'chefrepo'),
96
- 'chefbranch' => $redis.hget('config', 'chefbranch'),
110
+ 'chefrepo' => @chef_repo,
111
+ 'chefbranch' => @chef_branch,
97
112
  'identity' => $redis.hget('config','initkey'),
98
113
  'appuser' => $redis.hget('config','appuser'),
99
114
  'apps' => @apps
100
115
  }.to_json
116
+
101
117
  erb :init
102
118
  end
103
119
 
data/lib/views/init.erb CHANGED
@@ -2,10 +2,11 @@ apt-get update
2
2
  apt-get install -ymq zsh git libssl-dev ruby1.9.1-full build-essential
3
3
  gem install --bindir /usr/local/bin --no-ri --no-rdoc chef
4
4
  cat << 'EOFKEY' > /root/.ssh/id_rsa
5
- <%=$redis.hget('config', 'initkey')%>
5
+ <%= @initkey %>
6
6
  EOFKEY
7
7
  chmod 600 /root/.ssh/id_rsa
8
8
  echo 'StrictHostKeyChecking no' > /root/.ssh/config
9
- git clone -b <%=$redis.hget('config', 'chefbranch')%> <%=$redis.hget('config', 'chefrepo')%> /root/ops
10
- echo '<%=@json%>' > /root/init.json
11
- chef-solo -c /root/ops/cookbooks/init.rb -j /root/init.json && (rm /root/.ssh/id_rsa; userdel -r ubuntu; rm -rf /root/.ssh; rm -rf /root/ops; rm -rf /root/init.json)
9
+ git clone -b <%= @chef_branch %> <%= @chef_repo %> /root/ops
10
+ echo '<%= @json %>' > /root/init.json
11
+ chef-solo -c /root/ops/cookbooks/init.rb -j /root/init.json && \
12
+ (rm /root/.ssh/id_rsa; userdel -r ubuntu; rm -rf /root/.ssh; rm -rf /root/ops)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gaptool-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Bailey