dream-ops 0.7.0 → 0.8.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 +5 -5
- data/CHANGELOG.md +12 -1
- data/README.md +3 -3
- data/dream-ops.gemspec +1 -1
- data/lib/dream-ops/cli.rb +6 -0
- data/lib/dream-ops/deployment/solo.rb +9 -4
- data/lib/dream-ops/errors.rb +4 -4
- data/lib/dream-ops/init/base.rb +1 -1
- data/lib/dream-ops/init/solo.rb +17 -11
- data/lib/dream-ops/version.rb +1 -1
- data/lib/dream-ops.rb +1 -1
- metadata +8 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: e07301e3995e5b0cf1c52c79c24f23c13836f4d1f36e45b9882cc75df486636d
|
|
4
|
+
data.tar.gz: 825c82fcd97bf7d02582666cd997949836e3576140531a4a95b65e06bd924461
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9ddbdcf26a49a2ccd1f15dd1709c00ef1a54aa0c40842fcab8a76887e20e8dad8760e867cb116aa4ae8ab65a01f309c01057fb6ce57954d9065c462312911e69
|
|
7
|
+
data.tar.gz: 10a80d96c20276bdfe6729cfb024f153d2e6589234fb2feb1eee74c306a36cd4846f77034193bbdff32a05e7207bff24f5f0956c04d6df6ba5826f173628d642
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.8.0]
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- Updated to use CINC instead of Chef Workstation
|
|
13
|
+
- Updated to `thor@1.x` which removes warnings when using ruby 3.x
|
|
14
|
+
|
|
15
|
+
### Fixes
|
|
16
|
+
- Adds `solo` support for Ubuntu 22.04
|
|
17
|
+
- Better error handling of missing SSH key for `solo` commands
|
|
18
|
+
|
|
9
19
|
## [0.7.0]
|
|
10
20
|
|
|
11
21
|
### Changed
|
|
@@ -73,7 +83,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
|
73
83
|
- Gem version badge to README
|
|
74
84
|
- Usage documentation
|
|
75
85
|
|
|
76
|
-
[Unreleased]: https://github.com/chris-allen/dream-ops/compare/v0.
|
|
86
|
+
[Unreleased]: https://github.com/chris-allen/dream-ops/compare/v0.8.0...HEAD
|
|
87
|
+
[0.8.0]: https://github.com/chris-allen/dream-ops/compare/v0.7.0...v0.8.0
|
|
77
88
|
[0.7.0]: https://github.com/chris-allen/dream-ops/compare/v0.6.1...v0.7.0
|
|
78
89
|
[0.6.1]: https://github.com/chris-allen/dream-ops/compare/v0.6.0...v0.6.1
|
|
79
90
|
[0.6.0]: https://github.com/chris-allen/dream-ops/compare/v0.5.0...v0.6.0
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# DreamOps
|
|
2
2
|
[][gem]
|
|
3
|
-
[](https://travis-ci.com/chris-allen/dream-ops)
|
|
3
|
+
[](https://app.travis-ci.com/github/chris-allen/dream-ops)
|
|
4
4
|
|
|
5
5
|
[gem]: https://rubygems.org/gems/dream-ops
|
|
6
6
|
|
|
@@ -74,11 +74,11 @@ Target: ip-172-31-53-232
|
|
|
74
74
|
```bash
|
|
75
75
|
dream init solo -T ubuntu@example.com -i /path/to/key.pem
|
|
76
76
|
Target: ip-172-31-53-232
|
|
77
|
-
---
|
|
77
|
+
--- Is chef-solo Installed: false
|
|
78
78
|
--- Valid chef.json: false
|
|
79
79
|
--- Valid role[setup]: false
|
|
80
80
|
--- Valid role[deploy]: false
|
|
81
|
-
...Installing
|
|
81
|
+
...Installing chef-solo via CINC [target="ubuntu@example.com"]
|
|
82
82
|
...Creating boilerplate /var/chef/chef.json [target="ubuntu@example.com"]
|
|
83
83
|
...Creating boilerplate /var/chef/roles/setup.json [target="ubuntu@example.com"]
|
|
84
84
|
...Creating boilerplate /var/chef/roles/deploy.json [target="ubuntu@example.com"]
|
data/dream-ops.gemspec
CHANGED
|
@@ -41,6 +41,6 @@ Gem::Specification.new do |spec|
|
|
|
41
41
|
spec.add_dependency "aws-sdk-s3", "~> 1"
|
|
42
42
|
spec.add_dependency "inifile", "~> 3.0"
|
|
43
43
|
spec.add_dependency "berkshelf", "~> 7.0"
|
|
44
|
-
spec.add_dependency "thor", "~> 0
|
|
44
|
+
spec.add_dependency "thor", "~> 1.0"
|
|
45
45
|
spec.add_dependency "chef", "~> 13.6"
|
|
46
46
|
end
|
data/lib/dream-ops/cli.rb
CHANGED
|
@@ -55,7 +55,9 @@ module DreamOps
|
|
|
55
55
|
if @options[:debug]
|
|
56
56
|
ENV["DREAMOPS_DEBUG"] = "true"
|
|
57
57
|
DreamOps.logger.level = ::Logger::DEBUG
|
|
58
|
+
Thread.report_on_exception = true
|
|
58
59
|
else
|
|
60
|
+
Thread.report_on_exception = false
|
|
59
61
|
Berkshelf.ui.mute!
|
|
60
62
|
end
|
|
61
63
|
|
|
@@ -110,6 +112,10 @@ module DreamOps
|
|
|
110
112
|
aliases: "-p",
|
|
111
113
|
default: ""
|
|
112
114
|
|
|
115
|
+
def self.exit_on_failure?
|
|
116
|
+
false
|
|
117
|
+
end
|
|
118
|
+
|
|
113
119
|
desc "version", "Display version"
|
|
114
120
|
def version
|
|
115
121
|
DreamOps.formatter.version
|
|
@@ -161,11 +161,16 @@ module DreamOps
|
|
|
161
161
|
|
|
162
162
|
uuid = SecureRandom.uuid
|
|
163
163
|
|
|
164
|
+
chef_cmd = "cinc-solo"
|
|
165
|
+
if !system("ssh #{@ssh_opts} #{target[:host]} which cinc-solo #{@q_all}")
|
|
166
|
+
chef_cmd = "chef-solo --chef-license accept"
|
|
167
|
+
end
|
|
168
|
+
|
|
164
169
|
pid = fork do
|
|
165
170
|
if ! system(
|
|
166
171
|
"ssh #{@ssh_opts} #{target[:host]} \"" +
|
|
167
172
|
"set -o pipefail && " +
|
|
168
|
-
"sudo
|
|
173
|
+
"sudo #{chef_cmd} -j /var/chef/chef.json -o \"role[#{role}]\" 2>&1 | sudo tee /var/log/chef/#{uuid}.log #{@q_all}\""
|
|
169
174
|
)
|
|
170
175
|
exit 1
|
|
171
176
|
end
|
|
@@ -178,9 +183,9 @@ module DreamOps
|
|
|
178
183
|
end
|
|
179
184
|
|
|
180
185
|
def deploy_target(target, cookbooks)
|
|
181
|
-
# Bail if
|
|
182
|
-
if !system("ssh #{@ssh_opts} #{target[:host]} which chef #{@q_all}")
|
|
183
|
-
__bail_with_fatal_error(
|
|
186
|
+
# Bail if chef-solo is not installed
|
|
187
|
+
if !system("ssh #{@ssh_opts} #{target[:host]} which chef-solo #{@q_all}")
|
|
188
|
+
__bail_with_fatal_error(ChefSoloNotInstalledError.new(target[:host]))
|
|
184
189
|
end
|
|
185
190
|
|
|
186
191
|
# Bail if chef.json doesn't exist
|
data/lib/dream-ops/errors.rb
CHANGED
|
@@ -66,7 +66,7 @@ module DreamOps
|
|
|
66
66
|
end
|
|
67
67
|
end
|
|
68
68
|
|
|
69
|
-
class
|
|
69
|
+
class ChefSoloNotInstalledError < DreamOpsError
|
|
70
70
|
set_status_code(14)
|
|
71
71
|
|
|
72
72
|
def initialize(target)
|
|
@@ -75,14 +75,14 @@ module DreamOps
|
|
|
75
75
|
|
|
76
76
|
def to_s
|
|
77
77
|
[
|
|
78
|
-
"
|
|
78
|
+
"chef-solo not installed on target \"#{@target}\". To initialize chef-solo, run:",
|
|
79
79
|
"",
|
|
80
80
|
"dream init solo -t #{@target} -i #{DreamOps.ssh_key}",
|
|
81
81
|
].join("\n")
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
class
|
|
85
|
+
class ChefSoloFailedError < DreamOpsError
|
|
86
86
|
set_status_code(15)
|
|
87
87
|
|
|
88
88
|
def initialize(target, wget_url)
|
|
@@ -92,7 +92,7 @@ module DreamOps
|
|
|
92
92
|
|
|
93
93
|
def to_s
|
|
94
94
|
[
|
|
95
|
-
"Target \"#{@target}\" failed installing
|
|
95
|
+
"Target \"#{@target}\" failed installing chef-solo via CINC from:",
|
|
96
96
|
"",
|
|
97
97
|
@wget_url,
|
|
98
98
|
].join("\n")
|
data/lib/dream-ops/init/base.rb
CHANGED
data/lib/dream-ops/init/solo.rb
CHANGED
|
@@ -21,8 +21,8 @@ module DreamOps
|
|
|
21
21
|
|
|
22
22
|
target_result = { host: target }
|
|
23
23
|
|
|
24
|
-
target_result[:
|
|
25
|
-
DreamOps.ui.info "---
|
|
24
|
+
target_result[:solo_installed] = system("ssh #{@ssh_opts} #{target} which chef-solo #{@q_all}")
|
|
25
|
+
DreamOps.ui.info "--- Is chef-solo Installed: #{target_result[:solo_installed]}"
|
|
26
26
|
|
|
27
27
|
target_result[:solo_json_exists] = system("ssh #{@ssh_opts} #{target} stat /var/chef/chef.json #{@q_all}")
|
|
28
28
|
DreamOps.ui.info "--- Valid chef.json: #{target_result[:solo_json_exists]}"
|
|
@@ -40,31 +40,37 @@ module DreamOps
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def init_target(target, dryrun)
|
|
43
|
-
# Install
|
|
44
|
-
if !target[:
|
|
43
|
+
# Install chef-solo if not available
|
|
44
|
+
if !target[:solo_installed]
|
|
45
45
|
if dryrun
|
|
46
|
-
DreamOps.ui.warn "...WOULD Install
|
|
46
|
+
DreamOps.ui.warn "...WOULD Install chef-solo via CINC [target=\"#{target[:host]}\"]"
|
|
47
47
|
else
|
|
48
|
-
DreamOps.ui.warn "...Installing
|
|
48
|
+
DreamOps.ui.warn "...Installing chef-solo via CINC [target=\"#{target[:host]}\"]"
|
|
49
49
|
|
|
50
50
|
# Get ubuntu version
|
|
51
51
|
ubuntu_ver = `ssh #{@ssh_opts} #{target[:host]} "awk 'BEGIN { FS = \\"=\\" } /DISTRIB_RELEASE/ { print \\$2 }' /etc/lsb-release"`.chomp
|
|
52
52
|
|
|
53
53
|
# Download and install the package
|
|
54
|
-
deb_file = "
|
|
55
|
-
|
|
56
|
-
if system("ssh #{@ssh_opts} #{target[:host]} \"wget #{
|
|
54
|
+
deb_file = "cinc_17.10.0-1_amd64.deb"
|
|
55
|
+
cinc_url = "http://downloads.cinc.sh/files/stable/cinc/17.10.0/ubuntu/#{ubuntu_ver}/#{deb_file}"
|
|
56
|
+
if system("ssh #{@ssh_opts} #{target[:host]} \"wget #{cinc_url} -P /tmp\" #{@q_all}")
|
|
57
57
|
`ssh #{@ssh_opts} #{target[:host]} "sudo dpkg -i /tmp/#{deb_file}" #{@q_all}`
|
|
58
58
|
`ssh #{@ssh_opts} #{target[:host]} "sudo rm /tmp/#{deb_file}" #{@q_all}`
|
|
59
|
-
`ssh #{@ssh_opts} #{target[:host]} "chef env --chef-license accept" #{@q_all}`
|
|
60
59
|
else
|
|
61
|
-
__bail_with_fatal_error(
|
|
60
|
+
__bail_with_fatal_error(ChefSoloFailedError.new(target, cinc_url))
|
|
62
61
|
end
|
|
63
62
|
end
|
|
64
63
|
end
|
|
65
64
|
|
|
66
65
|
if !dryrun
|
|
66
|
+
`ssh #{@ssh_opts} #{target[:host]} sudo mkdir -p /var/chef/cookbooks`
|
|
67
67
|
`ssh #{@ssh_opts} #{target[:host]} sudo mkdir -p /var/chef/roles`
|
|
68
|
+
|
|
69
|
+
if system("ssh #{@ssh_opts} #{target[:host]} which cinc-solo #{@q_all}")
|
|
70
|
+
`ssh #{@ssh_opts} #{target[:host]} sudo mkdir /var/cinc`
|
|
71
|
+
`ssh #{@ssh_opts} #{target[:host]} sudo ln -s /var/chef/cookbooks /var/cinc/cookbooks`
|
|
72
|
+
`ssh #{@ssh_opts} #{target[:host]} sudo ln -s /var/chef/roles /var/cinc/roles`
|
|
73
|
+
end
|
|
68
74
|
end
|
|
69
75
|
|
|
70
76
|
# Create empty json file for chef-solo
|
data/lib/dream-ops/version.rb
CHANGED
data/lib/dream-ops.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dream-ops
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Chris Allen
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-05-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -142,14 +142,14 @@ dependencies:
|
|
|
142
142
|
requirements:
|
|
143
143
|
- - "~>"
|
|
144
144
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: '0
|
|
145
|
+
version: '1.0'
|
|
146
146
|
type: :runtime
|
|
147
147
|
prerelease: false
|
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
149
|
requirements:
|
|
150
150
|
- - "~>"
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: '0
|
|
152
|
+
version: '1.0'
|
|
153
153
|
- !ruby/object:Gem::Dependency
|
|
154
154
|
name: chef
|
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -208,7 +208,7 @@ licenses:
|
|
|
208
208
|
metadata:
|
|
209
209
|
source_code_uri: https://github.com/chris-allen/dream-ops
|
|
210
210
|
changelog_uri: https://github.com/chris-allen/dream-ops/blob/master/CHANGELOG.md
|
|
211
|
-
post_install_message:
|
|
211
|
+
post_install_message:
|
|
212
212
|
rdoc_options: []
|
|
213
213
|
require_paths:
|
|
214
214
|
- lib
|
|
@@ -223,9 +223,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
223
223
|
- !ruby/object:Gem::Version
|
|
224
224
|
version: 2.0.0
|
|
225
225
|
requirements: []
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
signing_key:
|
|
226
|
+
rubygems_version: 3.3.13
|
|
227
|
+
signing_key:
|
|
229
228
|
specification_version: 4
|
|
230
229
|
summary: CLI for automating the deployment of application cookbooks
|
|
231
230
|
test_files: []
|