sistero 0.7.3 → 0.7.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/sistero +4 -1
- data/lib/sistero.rb +36 -16
- data/lib/sistero/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c966aa5e013e4a912ed85572ea3df024ba5b3552
|
4
|
+
data.tar.gz: e3a8f4a357ad77c63cb781c13b3a6700377ea798
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85c52cd18afca7958e0a30991238cc737381f22eb6b5f6eb81c198483410ac77647788fcd06d8cae6b924c81d5fe4b4f9491b0b0a269e436c4af6b3ab539e5c3
|
7
|
+
data.tar.gz: cc127f77567046ba6ad2ffdd2aa904741c87b89fa96efad279401ff934d6efdbca52399f07d4d5c7b136c4a81702ae4abd64adc898891767996e62ad0b27e311
|
data/bin/sistero
CHANGED
@@ -28,6 +28,8 @@ module Sistero::Command
|
|
28
28
|
subop.on '-o val', 'add ssh options', 'ssh_options'
|
29
29
|
end
|
30
30
|
|
31
|
+
op.subcommand 'rsync vm *cmd', 'rsync files to vm'
|
32
|
+
|
31
33
|
op.subcommand 'create [*vms]', 'create vm'
|
32
34
|
op.subcommand 'create-all', 'create all vms in config'
|
33
35
|
op.subcommand 'destroy [*vms]', 'destroy vm'
|
@@ -56,8 +58,9 @@ module Sistero::Command
|
|
56
58
|
|
57
59
|
case command
|
58
60
|
when 'ssh'
|
59
|
-
# TODO: pass ssh_args
|
60
61
|
sistero.ssh_to_vm(command_cfg.vm, ssh_options: command_cfg.ssh_options, run: command_cfg.run)
|
62
|
+
when 'rsync'
|
63
|
+
sistero.rsync(command_cfg.vm, cmd: command_cfg.cmd)
|
61
64
|
when 'create'
|
62
65
|
vms = command_cfg.vms
|
63
66
|
vms.push nil if vms.empty?
|
data/lib/sistero.rb
CHANGED
@@ -70,22 +70,8 @@ module Sistero
|
|
70
70
|
ssh_options ||= vm.ssh_options
|
71
71
|
|
72
72
|
droplet = find_droplet(name) || create_droplet_from_vm(name)
|
73
|
-
public_network =
|
74
|
-
|
75
|
-
puts "no public interfaces, trying again in a second"
|
76
|
-
sleep 1
|
77
|
-
droplet = find_droplet(name)
|
78
|
-
public_network = droplet.networks.v4.find { |network| network.type == 'public' }
|
79
|
-
end
|
80
|
-
ip = public_network.ip_address
|
81
|
-
|
82
|
-
unless is_port_open? ip, 22
|
83
|
-
puts "waiting for ssh port to open"
|
84
|
-
sleep 1
|
85
|
-
until is_port_open? ip, 22 do
|
86
|
-
sleep 1
|
87
|
-
end
|
88
|
-
end
|
73
|
+
public_network = get_public_network name, droplet
|
74
|
+
ip = wait_for_ssh_port public_network
|
89
75
|
|
90
76
|
cmd = "ssh -o 'StrictHostKeyChecking no' #{ssh_options} #{vm.ssh_user || 'root'}@#{ip}"
|
91
77
|
unless run.empty?
|
@@ -96,6 +82,16 @@ module Sistero
|
|
96
82
|
exec cmd
|
97
83
|
end
|
98
84
|
|
85
|
+
def rsync(name, cmd: nil)
|
86
|
+
vm, name = get_vm name
|
87
|
+
droplet = find_droplet(name) || create_droplet_from_vm(name)
|
88
|
+
public_network = get_public_network name, droplet
|
89
|
+
ip = wait_for_ssh_port public_network
|
90
|
+
|
91
|
+
cmd_str = 'rsync ' + cmd.join(' ').gsub('vm:', "#{vm.ssh_user || 'root'}@#{ip}:")
|
92
|
+
exec cmd_str
|
93
|
+
end
|
94
|
+
|
99
95
|
def destroy_vm(name)
|
100
96
|
vm, name = get_vm name
|
101
97
|
|
@@ -147,5 +143,29 @@ module Sistero
|
|
147
143
|
puts " regions #{image.regions.join ', '}"
|
148
144
|
end
|
149
145
|
end
|
146
|
+
|
147
|
+
private
|
148
|
+
def get_public_network name, droplet
|
149
|
+
public_network = droplet.networks.v4.find { |network| network.type == 'public' }
|
150
|
+
until public_network
|
151
|
+
puts "no public interfaces, trying again in a second"
|
152
|
+
sleep 1
|
153
|
+
droplet = find_droplet(name)
|
154
|
+
public_network = droplet.networks.v4.find { |network| network.type == 'public' }
|
155
|
+
end
|
156
|
+
public_network
|
157
|
+
end
|
158
|
+
|
159
|
+
def wait_for_ssh_port public_network
|
160
|
+
ip = public_network.ip_address
|
161
|
+
unless is_port_open? ip, 22
|
162
|
+
puts "waiting for ssh port to open"
|
163
|
+
sleep 1
|
164
|
+
until is_port_open? ip, 22 do
|
165
|
+
sleep 1
|
166
|
+
end
|
167
|
+
end
|
168
|
+
ip
|
169
|
+
end
|
150
170
|
end
|
151
171
|
end
|
data/lib/sistero/version.rb
CHANGED