coreos-deploy 0.0.2 → 0.1.0
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 +4 -4
- data/bin/coreos +79 -8
- data/coreos.gemspec +3 -1
- data/lib/coreos/version.rb +1 -1
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef184e886de61101c15787a20af08631d90f9948
|
4
|
+
data.tar.gz: 7ca01708bc06ed362fabb67d531c8ba7651ad252
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c2f9cc319f6653bfd6806d6c6ab03daaa66eb551c781aa4a218d9a33d03a1fd0e8f498eaa8ff0c603f397345fa6a55e816e8320aa8502b8ca3f770a5515c167
|
7
|
+
data.tar.gz: d6bb350c8db717cf8773c00341875352045155a3387b5820fcdb6e73a24bd274deccd3218307c0ae88aed9d53e668cda0fb0c815f715212a4181bb500c8703f7
|
data/bin/coreos
CHANGED
@@ -1,18 +1,89 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
rescue
|
6
|
-
require 'rubygems'
|
7
|
-
require 'thor'
|
8
|
-
end
|
9
|
-
|
3
|
+
require 'thor'
|
4
|
+
require 'net/ssh'
|
10
5
|
|
6
|
+
def loop_ssh_command(ssh, command)
|
7
|
+
puts "==> #{command}"
|
8
|
+
ssh.exec command
|
9
|
+
ssh.loop
|
10
|
+
end
|
11
11
|
|
12
12
|
class CoreOS < Thor
|
13
13
|
desc "deploy HOST", "deploys all services in ./coreos/HOST/*.service to HOST"
|
14
14
|
def deploy(host)
|
15
|
-
|
15
|
+
directories = Dir.entries("./coreos").select { |s| s.start_with? host }
|
16
|
+
puts directories
|
17
|
+
if directories.count == 1
|
18
|
+
host = directories[0]
|
19
|
+
end
|
20
|
+
|
21
|
+
base_directory = "./coreos/#{host}"
|
22
|
+
abort "Directory '#{base_directory}' does not exist" unless File.exists? base_directory
|
23
|
+
|
24
|
+
service_files = Dir.entries(base_directory).select { |s| s.end_with? ".service" }
|
25
|
+
abort "No service files found for #{host}" unless service_files.count > 0
|
26
|
+
|
27
|
+
login = nil
|
28
|
+
images = []
|
29
|
+
for file in service_files
|
30
|
+
path = "#{base_directory}/#{file}"
|
31
|
+
content = File.open(path, "rb").read
|
32
|
+
images << content.scan(/docker pull (.*)/).flatten
|
33
|
+
|
34
|
+
logins = content.scan(/docker login (.*)/).flatten
|
35
|
+
if logins.count > 0
|
36
|
+
login = logins[0]
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
images = images.flatten.uniq
|
41
|
+
abort "no docker image found to pull" unless images.count > 0
|
42
|
+
|
43
|
+
puts "==> Copying service files"
|
44
|
+
system "scp #{base_directory}/*.service #{host}:"
|
45
|
+
|
46
|
+
Net::SSH.start("#{host}", ENV['USER'] ) do |ssh|
|
47
|
+
if login
|
48
|
+
loop_ssh_command ssh, "docker login #{login}"
|
49
|
+
end
|
50
|
+
|
51
|
+
for image in images
|
52
|
+
puts "==> docker pull #{image}"
|
53
|
+
ssh.exec! "docker pull #{image}"
|
54
|
+
ssh.loop
|
55
|
+
end
|
56
|
+
|
57
|
+
start_services = []
|
58
|
+
restart_services = []
|
59
|
+
|
60
|
+
for service in service_files
|
61
|
+
exists = ssh.exec!("test -e /etc/systemd/system/#{service} && echo 1 || echo 0")
|
62
|
+
ssh.exec! "sudo mv #{service} /etc/systemd/system/"
|
63
|
+
|
64
|
+
if exists.to_i == 1
|
65
|
+
restart_services << service
|
66
|
+
else
|
67
|
+
start_services << service
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
for service in start_services
|
72
|
+
loop_ssh_command ssh, "sudo systemctl enable /etc/systemd/system/#{service}"
|
73
|
+
end
|
74
|
+
|
75
|
+
if restart_services.count > 0
|
76
|
+
loop_ssh_command ssh, "sudo systemctl daemon-reload"
|
77
|
+
end
|
78
|
+
|
79
|
+
if start_services.count > 0
|
80
|
+
loop_ssh_command ssh, "sudo systemctl start #{start_services.join " "}"
|
81
|
+
end
|
82
|
+
|
83
|
+
if restart_services.count > 0
|
84
|
+
loop_ssh_command ssh, "sudo systemctl restart #{restart_services.join " "}"
|
85
|
+
end
|
86
|
+
end
|
16
87
|
end
|
17
88
|
end
|
18
89
|
|
data/coreos.gemspec
CHANGED
@@ -20,5 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.7"
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
-
|
23
|
+
|
24
|
+
spec.add_dependency "thor", "~> 0.19"
|
25
|
+
spec.add_dependency "net-ssh", "~> 2.9"
|
24
26
|
end
|
data/lib/coreos/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coreos-deploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oliver Letterer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -45,13 +45,27 @@ dependencies:
|
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0.19'
|
48
|
-
type: :
|
48
|
+
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0.19'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: net-ssh
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.9'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.9'
|
55
69
|
description: Binary that let's You deploy docker services to coreos hosts.
|
56
70
|
email:
|
57
71
|
- oliver.letterer@gmail.com
|