gusteau 1.0.5.dev → 1.0.6.dev
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +4 -0
- data/README.md +8 -8
- data/bin/gusteau +3 -1
- data/gusteau.gemspec +1 -0
- data/lib/gusteau/chef.rb +12 -9
- data/lib/gusteau/version.rb +1 -1
- data/spec/config/emile.yml +2 -0
- data/spec/lib/gusteau/chef_spec.rb +11 -0
- metadata +19 -3
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 1.0.6.dev / 2013-07-09
|
2
|
+
* Bugfix: Ruby 1.8.7 and Rubinius compatibility
|
3
|
+
* Highlight node yaml with Coderay in `gusteau show`.
|
4
|
+
|
1
5
|
## 1.0.5.dev / 2013-07-09
|
2
6
|
* Bugfix: `cookbooks_path` was not working properly
|
3
7
|
* Add an ability to specify a custom bootstrap script
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ It aims to:
|
|
18
18
|
|
19
19
|
Some of the features include:
|
20
20
|
|
21
|
-
* YAML for readable infrastructure configuration
|
21
|
+
* YAML for readable, flexible infrastructure configuration
|
22
22
|
* Usage of a single SSH connection to stream compressed files and commands
|
23
23
|
* Support for normal Chef CLI flags:
|
24
24
|
* `-W` or `--why-run` (dry run mode)
|
@@ -31,7 +31,7 @@ Gettings started
|
|
31
31
|
Gusteau is a Ruby gem:
|
32
32
|
|
33
33
|
```
|
34
|
-
gem install gusteau
|
34
|
+
gem install gusteau --pre
|
35
35
|
```
|
36
36
|
|
37
37
|
The following command generates an example Chef-repo:
|
@@ -148,6 +148,12 @@ Notes
|
|
148
148
|
|
149
149
|
By default, Gusteau installs the [Omnibus Chef](http://www.opscode.com/chef/install/). However if you're targetting an unsupported platform you might want to specify the `platform` value for a node: this invokes a specific [script](https://github.com/locomote/gusteau/tree/master/bootstrap).
|
150
150
|
|
151
|
+
Alternatively, you can specify a custom script in `.gusteau.yml`:
|
152
|
+
|
153
|
+
```
|
154
|
+
bootstrap: ./scripts/freebsd.sh
|
155
|
+
```
|
156
|
+
|
151
157
|
### Before and after hooks
|
152
158
|
|
153
159
|
You can tell Gusteau to execute specific commands before and / or after `converge` or `apply` take place. They get executed on the host system. Example `.gusteau.yml` snippet:
|
@@ -158,9 +164,6 @@ before:
|
|
158
164
|
|
159
165
|
after:
|
160
166
|
- bundle exec rake spec
|
161
|
-
|
162
|
-
environments:
|
163
|
-
...
|
164
167
|
```
|
165
168
|
|
166
169
|
### Custom cookbooks path
|
@@ -170,7 +173,4 @@ By default, Gusteau uploads and sets Chef Solo up to use cookbooks from `./cookb
|
|
170
173
|
```
|
171
174
|
cookbooks_path: [ './my-cookbooks', '../something-else' ]
|
172
175
|
roles_path: './base-roles'
|
173
|
-
|
174
|
-
environments:
|
175
|
-
...
|
176
176
|
```
|
data/bin/gusteau
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'optitron'
|
5
|
+
require 'coderay'
|
5
6
|
|
6
7
|
$LOAD_PATH << File.expand_path("../..", __FILE__)
|
7
8
|
require 'lib/gusteau'
|
@@ -45,7 +46,8 @@ class Gusteau::CLI < Optitron::CLI
|
|
45
46
|
|
46
47
|
desc 'Show the configuration of a specific node'
|
47
48
|
def show(node_name)
|
48
|
-
|
49
|
+
node_yaml = node(node_name).config.to_yaml
|
50
|
+
puts CodeRay.scan(node_yaml, :yaml).term
|
49
51
|
end
|
50
52
|
|
51
53
|
private
|
data/gusteau.gemspec
CHANGED
data/lib/gusteau/chef.rb
CHANGED
@@ -10,8 +10,8 @@ module Gusteau
|
|
10
10
|
def run(dna, opts)
|
11
11
|
@server.run "rm -rf #{@dest_dir} && mkdir #{@dest_dir} && mkdir -p /tmp/chef"
|
12
12
|
|
13
|
-
|
14
|
-
@server.upload
|
13
|
+
with_gusteau_dir(dna[:path]) do |dir|
|
14
|
+
@server.upload [dir], @dest_dir, :exclude => '.git/', :strip_c => 2
|
15
15
|
end
|
16
16
|
|
17
17
|
@server.run "sh /etc/chef/bootstrap.sh" if opts['bootstrap']
|
@@ -25,10 +25,8 @@ module Gusteau
|
|
25
25
|
|
26
26
|
private
|
27
27
|
|
28
|
-
def
|
29
|
-
tmp_dir = FileUtils.mkdir_p("/tmp/gusteau-#{Time.now.to_i}")[0]
|
28
|
+
def files_list(dna_path)
|
30
29
|
bootstrap_dir = File.expand_path('../../../bootstrap', __FILE__)
|
31
|
-
|
32
30
|
bootstrap = Gusteau::Config.settings['bootstrap'] || "#{bootstrap_dir}/#{@platform}.sh"
|
33
31
|
|
34
32
|
{
|
@@ -41,13 +39,18 @@ module Gusteau
|
|
41
39
|
Gusteau::Config.settings['cookbooks_path'].each_with_index do |path, i|
|
42
40
|
f[path] = "cookbooks-#{i}"
|
43
41
|
end
|
42
|
+
end
|
43
|
+
end
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
45
|
+
def with_gusteau_dir(dna_path)
|
46
|
+
tmp_dir = "/tmp/gusteau-#{Time.now.to_i}"
|
47
|
+
FileUtils.mkdir_p(tmp_dir)
|
48
|
+
|
49
|
+
files_list(dna_path).each_pair do |src, dest|
|
50
|
+
FileUtils.cp_r(src, "#{tmp_dir}/#{dest}") if File.exists?(src)
|
48
51
|
end
|
49
52
|
|
50
|
-
yield
|
53
|
+
yield tmp_dir
|
51
54
|
FileUtils.rm_rf(tmp_dir)
|
52
55
|
end
|
53
56
|
end
|
data/lib/gusteau/version.rb
CHANGED
data/spec/config/emile.yml
CHANGED
@@ -37,4 +37,15 @@ describe Gusteau::Chef do
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
40
|
+
|
41
|
+
describe "#files_list" do
|
42
|
+
subject { chef.send(:files_list, '/some/dna.json') }
|
43
|
+
|
44
|
+
it "should produce a files paths hash" do
|
45
|
+
subject['/some/dna.json'].must_equal 'dna.json'
|
46
|
+
subject['private-cookbooks'].must_equal 'cookbooks-0'
|
47
|
+
subject['basic-roles'].must_equal 'roles'
|
48
|
+
subject['./bootstrap/osx.sh'].must_equal 'bootstrap.sh'
|
49
|
+
end
|
50
|
+
end
|
40
51
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gusteau
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6.dev
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-07-
|
13
|
+
date: 2013-07-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: optitron
|
@@ -44,6 +44,22 @@ dependencies:
|
|
44
44
|
- - ! '>='
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: coderay
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
47
63
|
- !ruby/object:Gem::Dependency
|
48
64
|
name: json
|
49
65
|
requirement: !ruby/object:Gem::Requirement
|
@@ -286,7 +302,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
286
302
|
version: '0'
|
287
303
|
segments:
|
288
304
|
- 0
|
289
|
-
hash: -
|
305
|
+
hash: -2949705327041746768
|
290
306
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
291
307
|
none: false
|
292
308
|
requirements:
|