pvcglue 0.1.22 → 0.1.23

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: 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