gaptool-server 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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