pvcglue 0.1.22 → 0.1.23

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: 6c0c298368758b219ada1c59b9295cb38e27c787
4
- data.tar.gz: 379a85589243740d2c758fe7494746095376023a
3
+ metadata.gz: 4a6c0ef624ca94138937f355221bbe98d2b54309
4
+ data.tar.gz: 4193b2afe622eaf248cf41f4f2fb1d71ae6d843d
5
5
  SHA512:
6
- metadata.gz: 2c6cd78e75c63ef6068100e38b358ab4c292ba79db7a5e53ac5ffe4fd39ac470e643801d6b7484b945c86b88188a8b7e98786c0fc58336670ca13af5bbe7504e
7
- data.tar.gz: f936147aec4e862349af6cedd195e234ca451ef4a7c60b430b634ead48905614a3fbe75afecf1c5964bbe9894eff85453a338436d36743d8553a31d90516120a
6
+ metadata.gz: bb8a10bac1e85700535c763c34a47253e03107a069c73195ab4cf36efa70de5141d02b71e01a9c399b150e4424c01594495ba82f938a702d02971f36f7d1b8ea
7
+ data.tar.gz: e2e8c419ecdcf7dc6dd848c195d63ce41dcfd96e77b63ffb424c5f77da1b6e31bed9d1d6ed636bec62913cdc5bc762b33778363df0bb4d05921b49f9e46cb2f2
data/lib/pvcglue.rb CHANGED
@@ -28,6 +28,8 @@ module Pvcglue
28
28
  end
29
29
 
30
30
  def self.render_template(template, file_name = nil)
31
+ puts '-'*80
32
+ puts "---> render_template(template=#{template}, file_name=#{file_name}"
31
33
  data = Tilt.new(Pvcglue.template_file_name(template)).render
32
34
  if file_name
33
35
  File.write(file_name, data)
data/lib/pvcglue/cli.rb CHANGED
@@ -181,6 +181,13 @@ module Pvcglue
181
181
  Pvcglue::Local.start
182
182
  end
183
183
 
184
+ desc "up", "start; bootstrap; pvcify; build; deploy"
185
+ method_option :stage, :required => true, :aliases => "-s"
186
+
187
+ def up
188
+ Pvcglue::Local.up
189
+ end
190
+
184
191
  desc "stop", "shut down local virtual machines"
185
192
  method_option :stage, :required => true, :aliases => "-s"
186
193
 
data/lib/pvcglue/local.rb CHANGED
@@ -14,6 +14,21 @@ module Pvcglue
14
14
  Bundler.with_clean_env { `vagrant --version` } =~ /Vagrant \d+\.\d+\.\d+/
15
15
  end
16
16
 
17
+ def self.system_live_out(cmd)
18
+ raise($?) unless system(cmd, out: $stdout, err: :out)
19
+ end
20
+
21
+ def self.up
22
+ start
23
+ system_live_out('pvc manager bootstrap')
24
+ system_live_out('pvc manager push')
25
+ system_live_out('pvc local pvcify')
26
+ system_live_out('pvc manager push')
27
+ system_live_out('pvc local bootstrap')
28
+ system_live_out('pvc local build')
29
+ system_live_out('pvc local deploy')
30
+ end
31
+
17
32
  def self.start
18
33
  FileUtils.rm_rf(local_cache_dir)
19
34
 
@@ -36,7 +51,7 @@ module Pvcglue
36
51
  update_local_config(machines)
37
52
  end
38
53
 
39
- def self.get_user_ip_address
54
+ def self.get_machine_ip_address
40
55
  result = `ip route get 8.8.8.8 2>&1 | awk '{print $NF; exit}'`.strip # Ubuntu
41
56
  result = `ipconfig getifaddr en0 2>&1` unless result =~ /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/ # OSX
42
57
  raise "IP Address not found" unless result =~ /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/
@@ -53,7 +68,7 @@ module Pvcglue
53
68
  # puts data.inspect
54
69
  # puts machines.inspect
55
70
  # puts machines[:manager][:public_ip].inspect
56
- manager_ip = machines[:manager][:public_ip].to_s # to_s in case it's nil
71
+ manager_ip = machines[:manager][:public_ip].to_s # to_s in case it's nil, as 'nil' is invalid TOML
57
72
  raise(Thor::Error, "Manager IP is not valid. :(") unless manager_ip =~ /\b(?:\d{1,3}\.){3}\d{1,3}\b/
58
73
  data["local_cloud_manager"] = manager_ip
59
74
  # data["#{Pvcglue.cloud.stage_name}_cloud_manager"] = manager_ip
@@ -64,6 +79,8 @@ module Pvcglue
64
79
  data = TOML.load_file(::Pvcglue.cloud.local_file_name) if File.exists?(::Pvcglue.cloud.local_file_name)
65
80
  data = TOML.load_file(Pvcglue.configuration.cloud_cache_file_name) if data.empty? && File.exists?(Pvcglue.configuration.cloud_cache_file_name)
66
81
  # TODO: get repo_url from git, if possible
82
+ puts "*"*80
83
+ puts data.inspect
67
84
  if data.empty?
68
85
  data = {app_name =>
69
86
  {"excluded_db_tables" => ["versions"],
@@ -73,7 +90,7 @@ module Pvcglue
73
90
  "swapfile_size" => 128,
74
91
  "time_zone" => "America/Los_Angeles",
75
92
  "authorized_keys" => {"example" => File.read(File.expand_path('~/.ssh/id_rsa.pub'))}, # TODO: error checking
76
- "dev_ip_addresses" => {"local" => "127.0.0.1", "user" => get_user_ip_address},
93
+ "dev_ip_addresses" => {"local" => "127.0.0.1", "user" => get_machine_ip_address},
77
94
  "gems" => {"delayed_job" => false, "whenever" => false},
78
95
  "stages" =>
79
96
  {"local" =>
@@ -130,27 +147,31 @@ module Pvcglue
130
147
  # puts data[app_name][:stages][:local][:roles][:caching][:memcached][:public_ip].inspect
131
148
  # puts "*"*80
132
149
  stage_name = Pvcglue.cloud.stage_name
150
+ # stage_name = :local
133
151
  # data[app_name][:stages][stage_name][:roles][:caching][:memcached][:public_ip] = machines[:memcached][:public_ip]
134
152
  # data[app_name][:stages][stage_name][:roles][:caching][:memcached][:private_ip] = machines[:memcached][:private_ip]
135
- data[app_name][:stages][stage_name][:roles][:db][:db][:public_ip] = machines[:db][:public_ip]
136
- data[app_name][:stages][stage_name][:roles][:db][:db][:private_ip] = machines[:db][:private_ip]
137
- data[app_name][:stages][stage_name][:roles][:redis][:redis][:public_ip] = machines[:db][:public_ip]
138
- data[app_name][:stages][stage_name][:roles][:redis][:redis][:private_ip] = machines[:db][:private_ip]
139
- data[app_name][:stages][stage_name][:roles][:lb][:lb][:public_ip] = machines[:lb][:public_ip]
140
- data[app_name][:stages][stage_name][:roles][:lb][:lb][:private_ip] = machines[:lb][:private_ip]
141
- data[app_name][:stages][stage_name][:roles][:web][:web_1][:public_ip] = machines[:web][:public_ip]
142
- data[app_name][:stages][stage_name][:roles][:web][:web_1][:private_ip] = machines[:web][:private_ip]
143
-
144
- data[app_name][:dev_ip_addresses] = {"local" => "127.0.0.1", "user" => get_user_ip_address}
145
- data[app_name][:stages][stage_name][:domains] = [machines[:lb][:public_ip]]
153
+ data[app_name][:stages][stage_name][:roles][:db][:db][:public_ip] = machines[:db][:public_ip].to_s # to_s in case it's nil, as 'nil' is invalid TOML
154
+ data[app_name][:stages][stage_name][:roles][:db][:db][:private_ip] = machines[:db][:private_ip].to_s # to_s in case it's nil, as 'nil' is invalid TOML
155
+ data[app_name][:stages][stage_name][:roles][:redis][:redis][:public_ip] = machines[:db][:public_ip].to_s # to_s in case it's nil, as 'nil' is invalid TOML
156
+ data[app_name][:stages][stage_name][:roles][:redis][:redis][:private_ip] = machines[:db][:private_ip].to_s # to_s in case it's nil, as 'nil' is invalid TOML
157
+ data[app_name][:stages][stage_name][:roles][:lb][:lb][:public_ip] = machines[:lb][:public_ip].to_s # to_s in case it's nil, as 'nil' is invalid TOML
158
+ data[app_name][:stages][stage_name][:roles][:lb][:lb][:private_ip] = machines[:lb][:private_ip].to_s # to_s in case it's nil, as 'nil' is invalid TOML
159
+ data[app_name][:stages][stage_name][:roles][:web][:web_1][:public_ip] = machines[:web][:public_ip].to_s # to_s in case it's nil, as 'nil' is invalid TOML
160
+ data[app_name][:stages][stage_name][:roles][:web][:web_1][:private_ip] = machines[:web][:private_ip].to_s # to_s in case it's nil, as 'nil' is invalid TOML
161
+
162
+ # puts "*"*80
163
+ # puts machines.inspect
164
+ data[app_name][:dev_ip_addresses] = {"local" => "127.0.0.1", "user" => get_machine_ip_address.to_s} # to_s in case it's nil, as 'nil' is invalid TOML
165
+ # data[app_name][:stages][stage_name][:domains] = [[machines[:lb][:public_ip]].to_s] # to_s in case it's nil, as 'nil' is invalid TOML
166
+ data[app_name][:stages][stage_name][:domains] = [machines[:lb][:public_ip] || ''] # to_s in case it's nil, as 'nil' is invalid TOML
146
167
 
147
168
  # data[app_name][:stages][:local][:roles][:web][:web_2][:public_ip] = machines[:web_2][:public_ip]
148
169
  # data[app_name][:stages][:local][:roles][:web][:web_2][:private_ip] = machines[:web_2][:private_ip]
149
170
 
150
- Pvcglue.cloud.data = data
151
- File.write(::Pvcglue.cloud.local_file_name, TOML.dump(Pvcglue.cloud.data))
171
+ Pvcglue.cloud.data = data
172
+ File.write(::Pvcglue.cloud.local_file_name, TOML::PvcDumper.new(Pvcglue.cloud.data).toml_str)
152
173
  File.write(Pvcglue.configuration.cloud_cache_file_name, TOML::PvcDumper.new(Pvcglue.cloud.data).toml_str)
153
- puts TOML::PvcDumper.new(Pvcglue.cloud.data).toml_str
174
+ # puts TOML::PvcDumper.new(Pvcglue.cloud.data).toml_str
154
175
  end
155
176
 
156
177
  def self.stop
@@ -230,6 +251,8 @@ module Pvcglue
230
251
  data.scan(/inet (.*)\/.*global (eth0)/) do |ip, eth|
231
252
  vagrant_ips << ip
232
253
  end
254
+ raise "Public IP not found" unless machines[machine][:public_ip]
255
+ raise "Private IP not found" unless machines[machine][:private_ip]
233
256
  puts "Adding you public key to the root user for #{machine_name}..."
234
257
  # cat ~/.ssh/id_rsa.pub | vagrant ssh manager -c 'sudo tee /root/.ssh/authorized_keys'
235
258
  raise $? unless system %Q(cat ~/.ssh/id_rsa.pub | vagrant ssh #{machine_name} -c 'sudo tee /root/.ssh/authorized_keys')
@@ -238,6 +261,7 @@ module Pvcglue
238
261
  File.write(machine_cache_file_name, machines.to_json)
239
262
  FileUtils.mkdir_p(File.dirname(vagrant_config_cache_file_name)) # the 'tmp' directory may not always exist
240
263
  File.write(vagrant_config_cache_file_name, vagrant_ips.to_json)
264
+ # puts machines.inspect
241
265
  machines
242
266
  end
243
267
 
@@ -4,7 +4,7 @@ apt_package 'ufw'
4
4
 
5
5
  package 'bootstrap-manager' do
6
6
  # TODO: firewall and ssh port config
7
- #depends_on 'time-zone'
7
+ depends_on 'authenticate-host'
8
8
  depends_on 'htop'
9
9
  # depends_on 'ufw'
10
10
  #depends_on 'deploy-user'
@@ -14,6 +14,12 @@ package 'bootstrap-manager' do
14
14
  depends_on 'manager-copy-id'
15
15
  end
16
16
 
17
+ package 'authenticate-host' do
18
+ apply do
19
+ sudo "ls" # side-effect will add host to known_hosts
20
+ end
21
+ end
22
+
17
23
  package 'pvcglue-user' do
18
24
  apply do
19
25
  # Local variables used to improve readability of bash commands :)
@@ -55,7 +61,7 @@ package 'manager-copy-id' do
55
61
  apply do
56
62
  authorized_keys_file_name = Pvcglue::Manager.authorized_keys_file_name
57
63
  user_name = Pvcglue::Manager.user_name
58
- copy_id = %Q[cat ~/.ssh/id_rsa.pub | ssh #{node.get(:user)}@#{node.host} "cat >> #{authorized_keys_file_name}"]
64
+ copy_id = %Q[cat ~/.ssh/id_rsa.pub | ssh -o BatchMode=yes -o StrictHostKeyChecking=no #{node.get(:user)}@#{node.host} "cat >> #{authorized_keys_file_name}"]
59
65
  system "#{copy_id}"
60
66
  run(%Q[cat "" >> #{authorized_keys_file_name}])
61
67
  sudo "chown #{user_name}:#{user_name} #{authorized_keys_file_name} && chmod 600 #{authorized_keys_file_name}"
@@ -8,7 +8,7 @@ package 'rvm' do
8
8
 
9
9
  apply do
10
10
  run 'gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3'
11
- run '\curl -sSL https://get.rvm.io | bash -s stable'
11
+ run '\curl -sSL https://get.rvm.io | bash -s stable --with-default-gems="bundler"'
12
12
  run "rvm requirements"
13
13
  end
14
14
 
@@ -13,6 +13,8 @@ require 'capistrano/bundler'
13
13
  require 'capistrano/rails/assets'
14
14
  require 'capistrano/rails/migrations'
15
15
  <% if Pvcglue.cloud.gems[:whenever] %>
16
+
17
+ set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" }
16
18
  require 'whenever/capistrano'
17
19
  <% end %>
18
20
 
@@ -1,3 +1,3 @@
1
1
  module Pvcglue
2
- VERSION = "0.1.22"
2
+ VERSION = "0.1.23"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pvcglue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.22
4
+ version: 0.1.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Lyric
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-20 00:00:00.000000000 Z
11
+ date: 2015-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -298,7 +298,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
298
298
  version: '0'
299
299
  requirements: []
300
300
  rubyforge_project:
301
- rubygems_version: 2.4.6
301
+ rubygems_version: 2.4.3
302
302
  signing_key:
303
303
  specification_version: 4
304
304
  summary: PVC_Glue summary