ironfan 3.1.7 → 3.2.2
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.
- data/CHANGELOG.md +11 -0
- data/Gemfile +15 -12
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/config/ubuntu10.04-ironfan.erb +10 -0
- data/config/ubuntu11.10-ironfan.erb +10 -0
- data/ironfan.gemspec +29 -54
- data/lib/chef/knife/bootstrap/centos6.2-ironfan.erb +10 -0
- data/lib/chef/knife/bootstrap/ubuntu10.04-ironfan.erb +10 -0
- data/lib/chef/knife/bootstrap/ubuntu11.10-ironfan.erb +10 -0
- data/lib/chef/knife/cluster_kick.rb +7 -2
- data/lib/chef/knife/cluster_launch.rb +3 -0
- data/lib/chef/knife/cluster_ssh.rb +3 -3
- data/lib/chef/knife/ironfan_knife_common.rb +21 -0
- data/lib/chef/knife/ironfan_script.rb +2 -0
- data/lib/ironfan/chef_layer.rb +9 -9
- data/lib/ironfan/cloud.rb +232 -360
- data/lib/ironfan/cluster.rb +3 -3
- data/lib/ironfan/compute.rb +26 -40
- data/lib/ironfan/deprecated.rb +45 -10
- data/lib/ironfan/discovery.rb +1 -1
- data/lib/ironfan/dsl_builder.rb +99 -0
- data/lib/ironfan/facet.rb +2 -3
- data/lib/ironfan/fog_layer.rb +14 -10
- data/lib/ironfan/private_key.rb +1 -1
- data/lib/ironfan/security_group.rb +46 -44
- data/lib/ironfan/server.rb +26 -52
- data/lib/ironfan/server_slice.rb +13 -19
- data/lib/ironfan/volume.rb +47 -59
- data/lib/ironfan.rb +5 -4
- metadata +116 -122
- data/lib/ironfan/dsl_object.rb +0 -124
- data/notes/Backup of ec2-pricing_and_capacity.numbers +0 -0
- data/notes/Home.md +0 -45
- data/notes/INSTALL-cloud_setup.md +0 -103
- data/notes/INSTALL.md +0 -134
- data/notes/Ironfan-Roadmap.md +0 -70
- data/notes/advanced-superpowers.md +0 -16
- data/notes/aws_servers.jpg +0 -0
- data/notes/aws_user_key.png +0 -0
- data/notes/cookbook-versioning.md +0 -11
- data/notes/core_concepts.md +0 -200
- data/notes/declaring_volumes.md +0 -3
- data/notes/design_notes-aspect_oriented_devops.md +0 -36
- data/notes/design_notes-ci_testing.md +0 -169
- data/notes/design_notes-cookbook_event_ordering.md +0 -249
- data/notes/design_notes-meta_discovery.md +0 -59
- data/notes/ec2-pricing_and_capacity.md +0 -69
- data/notes/ec2-pricing_and_capacity.numbers +0 -0
- data/notes/homebase-layout.txt +0 -102
- data/notes/knife-cluster-commands.md +0 -18
- data/notes/named-cloud-objects.md +0 -11
- data/notes/opscode_org_key.png +0 -0
- data/notes/opscode_user_key.png +0 -0
- data/notes/philosophy.md +0 -13
- data/notes/rake_tasks.md +0 -24
- data/notes/renamed-recipes.txt +0 -142
- data/notes/silverware.md +0 -85
- data/notes/style_guide.md +0 -300
- data/notes/tips_and_troubleshooting.md +0 -92
- data/notes/version-3_2.md +0 -273
- data/notes/walkthrough-hadoop.md +0 -168
- data/notes/walkthrough-web.md +0 -166
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
# v3.2.0: First refactoring pass in preparation for multi-cloud support
|
2
|
+
* Rebuilt the internal models of Ironfan to use gorillib's Field/Model/Builder architecture.
|
3
|
+
* [#145](https://github.com/infochimps-labs/ironfan/pull/145): node attribues should be 'normal', not 'override' -- they don't show up as printed on the node otherwise
|
4
|
+
* [#144](https://github.com/infochimps-labs/ironfan/pull/144): knife cluster ssh sets exit status based on commands' exit status
|
5
|
+
* [#139](https://github.com/infochimps-labs/ironfan/pull/139): Fix detection of hostname in cluster_launch
|
6
|
+
|
7
|
+
# v3.1.6
|
8
|
+
* [#136](https://github.com/infochimps-labs/ironfan/pull/136): Basic support for VPC
|
9
|
+
* cleanup of gemspec version constraints, including move to chef 0.10.10
|
10
|
+
* CentOS compatibility tweaks to several cookbooks
|
11
|
+
|
1
12
|
# v3.1.5: A bug with quoting in bootstrap scripts
|
2
13
|
|
3
14
|
* Bootstrap scripts with env vars were being interpolated twice, so the bootstrap script quoting was changed to use `'` (single-quote) semantics. I am a bit troubled, because I can't tell when this regression happened. I believe I introduced it while merging @gpaco's bootstrap scripts and didn't notice because the bug strikes most forcefully within the fenced-off 'Is ruby installed?' part. But there's a chance I just screwed over chef 0.10.04 users.
|
data/Gemfile
CHANGED
@@ -3,27 +3,30 @@ source "http://rubygems.org"
|
|
3
3
|
gem 'chef', ">= 0.10.4"
|
4
4
|
gem 'fog', "~> 1.2"
|
5
5
|
gem 'formatador', "~> 0.2"
|
6
|
-
gem 'gorillib', "~> 0.
|
6
|
+
gem 'gorillib', "~> 0.4.2"
|
7
7
|
|
8
8
|
group :development do
|
9
|
-
gem 'bundler', "
|
9
|
+
gem 'bundler', "~> 1.1"
|
10
|
+
gem 'rake'
|
11
|
+
gem 'rspec', "~> 2.8"
|
12
|
+
gem 'yard', ">= 0.7"
|
13
|
+
#
|
14
|
+
gem 'redcarpet', ">= 2.1"
|
15
|
+
gem 'oj', ">= 1.2"
|
16
|
+
gem 'json', :platform => :jruby
|
17
|
+
end
|
18
|
+
|
19
|
+
group :support do
|
10
20
|
gem 'jeweler', ">= 1.6"
|
11
|
-
gem '
|
12
|
-
gem '
|
13
|
-
gem 'redcarpet', "~> 2"
|
21
|
+
gem 'pry'
|
22
|
+
gem 'grit'
|
14
23
|
end
|
15
24
|
|
16
25
|
group :test do
|
17
|
-
gem 'rcov', ">= 0.9.9", :platform => :ruby_18
|
18
26
|
gem 'simplecov', ">= 0.5", :platform => :ruby_19
|
19
27
|
#
|
20
|
-
gem 'ruby_gntp'
|
21
28
|
gem 'guard', "~> 1"
|
22
29
|
gem 'guard-rspec'
|
23
30
|
gem 'guard-yard'
|
24
|
-
|
25
|
-
|
26
|
-
group :support do
|
27
|
-
gem 'pry'
|
28
|
-
gem 'grit'
|
31
|
+
gem 'ruby_gntp'
|
29
32
|
end
|
data/Rakefile
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
require 'rubygems' unless defined?(Gem)
|
22
22
|
require 'bundler'
|
23
23
|
begin
|
24
|
-
Bundler.setup(:default, :development)
|
24
|
+
Bundler.setup(:default, :development, :support)
|
25
25
|
rescue Bundler::BundlerError => e
|
26
26
|
$stderr.puts e.message
|
27
27
|
$stderr.puts "Run `bundle install` to install missing gems"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.2.2
|
@@ -107,6 +107,16 @@ EOP
|
|
107
107
|
awk NF /tmp/knife-bootstrap/validation.pem > /etc/chef/validation.pem
|
108
108
|
<%- end %>
|
109
109
|
|
110
|
+
<% if @chef_config[:encrypted_data_bag_secret] -%>
|
111
|
+
(
|
112
|
+
cat <<'EOP'
|
113
|
+
<%= encrypted_data_bag_secret %>
|
114
|
+
EOP
|
115
|
+
) > /tmp/encrypted_data_bag_secret
|
116
|
+
awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
|
117
|
+
rm /tmp/encrypted_data_bag_secret
|
118
|
+
<% end -%>
|
119
|
+
|
110
120
|
echo -e "`date` \n\n**** \n**** Nuking our temp files:\n****\n"
|
111
121
|
|
112
122
|
cd /tmp
|
@@ -95,6 +95,16 @@ EOP
|
|
95
95
|
awk NF /tmp/knife-bootstrap/validation.pem > /etc/chef/validation.pem
|
96
96
|
<%- end %>
|
97
97
|
|
98
|
+
<% if @chef_config[:encrypted_data_bag_secret] -%>
|
99
|
+
(
|
100
|
+
cat <<'EOP'
|
101
|
+
<%= encrypted_data_bag_secret %>
|
102
|
+
EOP
|
103
|
+
) > /tmp/encrypted_data_bag_secret
|
104
|
+
awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
|
105
|
+
rm /tmp/encrypted_data_bag_secret
|
106
|
+
<% end -%>
|
107
|
+
|
98
108
|
echo -e "`date` \n\n**** \n**** Nuking our temp files:\n****\n"
|
99
109
|
|
100
110
|
cd /tmp
|
data/ironfan.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "ironfan"
|
8
|
-
s.version = "3.
|
8
|
+
s.version = "3.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Infochimps"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-09-10"
|
13
13
|
s.description = "Ironfan allows you to orchestrate not just systems but clusters of machines. It includes a powerful layer on top of knife and a collection of cloud cookbooks."
|
14
14
|
s.email = "coders@infochimps.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -62,7 +62,7 @@ Gem::Specification.new do |s|
|
|
62
62
|
"lib/ironfan/compute.rb",
|
63
63
|
"lib/ironfan/deprecated.rb",
|
64
64
|
"lib/ironfan/discovery.rb",
|
65
|
-
"lib/ironfan/
|
65
|
+
"lib/ironfan/dsl_builder.rb",
|
66
66
|
"lib/ironfan/facet.rb",
|
67
67
|
"lib/ironfan/fog_layer.rb",
|
68
68
|
"lib/ironfan/private_key.rb",
|
@@ -71,37 +71,6 @@ Gem::Specification.new do |s|
|
|
71
71
|
"lib/ironfan/server.rb",
|
72
72
|
"lib/ironfan/server_slice.rb",
|
73
73
|
"lib/ironfan/volume.rb",
|
74
|
-
"notes/Backup of ec2-pricing_and_capacity.numbers",
|
75
|
-
"notes/Home.md",
|
76
|
-
"notes/INSTALL-cloud_setup.md",
|
77
|
-
"notes/INSTALL.md",
|
78
|
-
"notes/Ironfan-Roadmap.md",
|
79
|
-
"notes/advanced-superpowers.md",
|
80
|
-
"notes/aws_servers.jpg",
|
81
|
-
"notes/aws_user_key.png",
|
82
|
-
"notes/cookbook-versioning.md",
|
83
|
-
"notes/core_concepts.md",
|
84
|
-
"notes/declaring_volumes.md",
|
85
|
-
"notes/design_notes-aspect_oriented_devops.md",
|
86
|
-
"notes/design_notes-ci_testing.md",
|
87
|
-
"notes/design_notes-cookbook_event_ordering.md",
|
88
|
-
"notes/design_notes-meta_discovery.md",
|
89
|
-
"notes/ec2-pricing_and_capacity.md",
|
90
|
-
"notes/ec2-pricing_and_capacity.numbers",
|
91
|
-
"notes/homebase-layout.txt",
|
92
|
-
"notes/knife-cluster-commands.md",
|
93
|
-
"notes/named-cloud-objects.md",
|
94
|
-
"notes/opscode_org_key.png",
|
95
|
-
"notes/opscode_user_key.png",
|
96
|
-
"notes/philosophy.md",
|
97
|
-
"notes/rake_tasks.md",
|
98
|
-
"notes/renamed-recipes.txt",
|
99
|
-
"notes/silverware.md",
|
100
|
-
"notes/style_guide.md",
|
101
|
-
"notes/tips_and_troubleshooting.md",
|
102
|
-
"notes/version-3_2.md",
|
103
|
-
"notes/walkthrough-hadoop.md",
|
104
|
-
"notes/walkthrough-web.md",
|
105
74
|
"spec/ironfan/cluster_spec.rb",
|
106
75
|
"spec/ironfan/facet_spec.rb",
|
107
76
|
"spec/ironfan/server_slice_spec.rb",
|
@@ -115,9 +84,9 @@ Gem::Specification.new do |s|
|
|
115
84
|
s.homepage = "http://infochimps.com/labs"
|
116
85
|
s.licenses = ["apachev2"]
|
117
86
|
s.require_paths = ["lib"]
|
118
|
-
s.rubygems_version = "1.8.
|
87
|
+
s.rubygems_version = "1.8.24"
|
119
88
|
s.summary = "Ironfan allows you to orchestrate not just systems but clusters of machines. It includes a powerful layer on top of knife and a collection of cloud cookbooks."
|
120
|
-
s.test_files = ["spec/
|
89
|
+
s.test_files = ["spec/ironfan_spec.rb", "spec/spec_helper/dummy_chef.rb", "spec/ironfan/cluster_spec.rb", "spec/ironfan/server_slice_spec.rb", "spec/ironfan/server_spec.rb", "spec/ironfan/facet_spec.rb", "spec/spec_helper.rb", "spec/test_config.rb"]
|
121
90
|
|
122
91
|
if s.respond_to? :specification_version then
|
123
92
|
s.specification_version = 3
|
@@ -126,33 +95,39 @@ Gem::Specification.new do |s|
|
|
126
95
|
s.add_runtime_dependency(%q<chef>, [">= 0.10.4"])
|
127
96
|
s.add_runtime_dependency(%q<fog>, ["~> 1.2"])
|
128
97
|
s.add_runtime_dependency(%q<formatador>, ["~> 0.2"])
|
129
|
-
s.add_runtime_dependency(%q<gorillib>, ["~> 0.
|
130
|
-
s.add_development_dependency(%q<bundler>, ["
|
131
|
-
s.add_development_dependency(%q<
|
132
|
-
s.add_development_dependency(%q<rspec>, ["~> 2.
|
133
|
-
s.add_development_dependency(%q<yard>, [">= 0.
|
134
|
-
s.add_development_dependency(%q<redcarpet>, ["
|
98
|
+
s.add_runtime_dependency(%q<gorillib>, ["~> 0.4.2"])
|
99
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.1"])
|
100
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
101
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.8"])
|
102
|
+
s.add_development_dependency(%q<yard>, [">= 0.7"])
|
103
|
+
s.add_development_dependency(%q<redcarpet>, [">= 2.1"])
|
104
|
+
s.add_development_dependency(%q<oj>, [">= 1.2"])
|
105
|
+
s.add_development_dependency(%q<json>, [">= 0"])
|
135
106
|
else
|
136
107
|
s.add_dependency(%q<chef>, [">= 0.10.4"])
|
137
108
|
s.add_dependency(%q<fog>, ["~> 1.2"])
|
138
109
|
s.add_dependency(%q<formatador>, ["~> 0.2"])
|
139
|
-
s.add_dependency(%q<gorillib>, ["~> 0.
|
140
|
-
s.add_dependency(%q<bundler>, ["
|
141
|
-
s.add_dependency(%q<
|
142
|
-
s.add_dependency(%q<rspec>, ["~> 2.
|
143
|
-
s.add_dependency(%q<yard>, [">= 0.
|
144
|
-
s.add_dependency(%q<redcarpet>, ["
|
110
|
+
s.add_dependency(%q<gorillib>, ["~> 0.4.2"])
|
111
|
+
s.add_dependency(%q<bundler>, ["~> 1.1"])
|
112
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
113
|
+
s.add_dependency(%q<rspec>, ["~> 2.8"])
|
114
|
+
s.add_dependency(%q<yard>, [">= 0.7"])
|
115
|
+
s.add_dependency(%q<redcarpet>, [">= 2.1"])
|
116
|
+
s.add_dependency(%q<oj>, [">= 1.2"])
|
117
|
+
s.add_dependency(%q<json>, [">= 0"])
|
145
118
|
end
|
146
119
|
else
|
147
120
|
s.add_dependency(%q<chef>, [">= 0.10.4"])
|
148
121
|
s.add_dependency(%q<fog>, ["~> 1.2"])
|
149
122
|
s.add_dependency(%q<formatador>, ["~> 0.2"])
|
150
|
-
s.add_dependency(%q<gorillib>, ["~> 0.
|
151
|
-
s.add_dependency(%q<bundler>, ["
|
152
|
-
s.add_dependency(%q<
|
153
|
-
s.add_dependency(%q<rspec>, ["~> 2.
|
154
|
-
s.add_dependency(%q<yard>, [">= 0.
|
155
|
-
s.add_dependency(%q<redcarpet>, ["
|
123
|
+
s.add_dependency(%q<gorillib>, ["~> 0.4.2"])
|
124
|
+
s.add_dependency(%q<bundler>, ["~> 1.1"])
|
125
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
126
|
+
s.add_dependency(%q<rspec>, ["~> 2.8"])
|
127
|
+
s.add_dependency(%q<yard>, [">= 0.7"])
|
128
|
+
s.add_dependency(%q<redcarpet>, [">= 2.1"])
|
129
|
+
s.add_dependency(%q<oj>, [">= 1.2"])
|
130
|
+
s.add_dependency(%q<json>, [">= 0"])
|
156
131
|
end
|
157
132
|
end
|
158
133
|
|
@@ -89,6 +89,16 @@ EOP
|
|
89
89
|
awk NF /tmp/knife-bootstrap/validation.pem > /etc/chef/validation.pem
|
90
90
|
<%- end %>
|
91
91
|
|
92
|
+
<% if @chef_config[:encrypted_data_bag_secret] -%>
|
93
|
+
(
|
94
|
+
cat <<'EOP'
|
95
|
+
<%= encrypted_data_bag_secret %>
|
96
|
+
EOP
|
97
|
+
) > /tmp/encrypted_data_bag_secret
|
98
|
+
awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
|
99
|
+
rm /tmp/encrypted_data_bag_secret
|
100
|
+
<% end -%>
|
101
|
+
|
92
102
|
echo -e "`date` \n\n**** \n**** Nuking our temp files:\n****\n"
|
93
103
|
|
94
104
|
cd /tmp
|
@@ -107,6 +107,16 @@ EOP
|
|
107
107
|
awk NF /tmp/knife-bootstrap/validation.pem > /etc/chef/validation.pem
|
108
108
|
<%- end %>
|
109
109
|
|
110
|
+
<% if @chef_config[:encrypted_data_bag_secret] -%>
|
111
|
+
(
|
112
|
+
cat <<'EOP'
|
113
|
+
<%= encrypted_data_bag_secret %>
|
114
|
+
EOP
|
115
|
+
) > /tmp/encrypted_data_bag_secret
|
116
|
+
awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
|
117
|
+
rm /tmp/encrypted_data_bag_secret
|
118
|
+
<% end -%>
|
119
|
+
|
110
120
|
echo -e "`date` \n\n**** \n**** Nuking our temp files:\n****\n"
|
111
121
|
|
112
122
|
cd /tmp
|
@@ -95,6 +95,16 @@ EOP
|
|
95
95
|
awk NF /tmp/knife-bootstrap/validation.pem > /etc/chef/validation.pem
|
96
96
|
<%- end %>
|
97
97
|
|
98
|
+
<% if @chef_config[:encrypted_data_bag_secret] -%>
|
99
|
+
(
|
100
|
+
cat <<'EOP'
|
101
|
+
<%= encrypted_data_bag_secret %>
|
102
|
+
EOP
|
103
|
+
) > /tmp/encrypted_data_bag_secret
|
104
|
+
awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
|
105
|
+
rm /tmp/encrypted_data_bag_secret
|
106
|
+
<% end -%>
|
107
|
+
|
98
108
|
echo -e "`date` \n\n**** \n**** Nuking our temp files:\n****\n"
|
99
109
|
|
100
110
|
cd /tmp
|
@@ -42,6 +42,11 @@ class Chef
|
|
42
42
|
:description => "Where to find the pid file. Typically /var/run/chef/client.pid (init.d) or /etc/sv/chef-client/supervise/pid (runit)",
|
43
43
|
:default => "/etc/sv/chef-client/supervise/pid"
|
44
44
|
|
45
|
+
option :log_file,
|
46
|
+
:long => "--log_file",
|
47
|
+
:description => "Where to find the log file. Typically /var/log/chef/client.log",
|
48
|
+
:default => "/var/log/chef/client.log"
|
49
|
+
|
45
50
|
def run
|
46
51
|
@name_args = [ @name_args.join('-') ]
|
47
52
|
config[:display_target] = true
|
@@ -62,7 +67,7 @@ if sudo -p 'knife sudo password: ' service chef-client status ; then
|
|
62
67
|
|
63
68
|
# running
|
64
69
|
pid_file="<%= config[:pid_file] %>"
|
65
|
-
log_file
|
70
|
+
log_file=<%= config[:log_file] %>
|
66
71
|
|
67
72
|
declare tail_pid
|
68
73
|
|
@@ -76,7 +81,7 @@ trap "on_exit" EXIT ERR
|
|
76
81
|
pipe=/tmp/pipe-$$
|
77
82
|
mkfifo $pipe
|
78
83
|
|
79
|
-
tail -
|
84
|
+
tail -Fn0 "$log_file" > $pipe &
|
80
85
|
|
81
86
|
tail_pid=$!
|
82
87
|
|
@@ -84,7 +84,7 @@ class Chef
|
|
84
84
|
def ssh_command(command, subsession=nil)
|
85
85
|
subsession ||= session
|
86
86
|
command = fixup_sudo(command)
|
87
|
-
|
87
|
+
#
|
88
88
|
subsession.open_channel do |ch|
|
89
89
|
ch.request_pty
|
90
90
|
ch.exec command do |ch, success|
|
@@ -101,13 +101,12 @@ class Chef
|
|
101
101
|
exit_status = data.read_long
|
102
102
|
if exit_status != 0
|
103
103
|
command_snippet = (command.length < 70) ? command : (command[0..45] + ' ... ' + command[-19..-1])
|
104
|
-
|
104
|
+
has_problem ->{ print_data(ichannel[:host], "'#{command_snippet.gsub(/[\r\n]+/, "; ")}' terminated with error status #{exit_status}", :err) }
|
105
105
|
end
|
106
106
|
end
|
107
107
|
end
|
108
108
|
end
|
109
109
|
session.loop
|
110
|
-
notifications.each{|args| print_data(*args) }
|
111
110
|
end
|
112
111
|
|
113
112
|
def cssh
|
@@ -133,6 +132,7 @@ class Chef
|
|
133
132
|
end
|
134
133
|
|
135
134
|
session.close
|
135
|
+
exit_if_unhealthy!
|
136
136
|
end
|
137
137
|
|
138
138
|
end
|
@@ -163,6 +163,27 @@ module Ironfan
|
|
163
163
|
ui.info("")
|
164
164
|
end
|
165
165
|
|
166
|
+
# list of problems encountered
|
167
|
+
attr_accessor :problems
|
168
|
+
# register that a problem was encountered
|
169
|
+
def has_problem(desc)
|
170
|
+
(@problems||=[]) << desc
|
171
|
+
end
|
172
|
+
# healthy if no problems
|
173
|
+
def healthy?() problems.blank? ; end
|
174
|
+
|
175
|
+
def exit_if_unhealthy!
|
176
|
+
return if healthy?
|
177
|
+
problems.each do |problem|
|
178
|
+
if problem.respond_to?(:call)
|
179
|
+
problem.call
|
180
|
+
else
|
181
|
+
ui.warn(problem)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
exit(2) if not healthy?
|
185
|
+
end
|
186
|
+
|
166
187
|
#
|
167
188
|
# Announce a new section of tasks
|
168
189
|
#
|
data/lib/ironfan/chef_layer.rb
CHANGED
@@ -73,12 +73,12 @@ module Ironfan
|
|
73
73
|
@chef_client = cluster.find_client(fullname) || false
|
74
74
|
end
|
75
75
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
76
|
+
# # The chef node, if it already exists in the server.
|
77
|
+
# # Use the 'ensure' method to create/update it.
|
78
|
+
# def chef_node
|
79
|
+
# return @chef_node unless @chef_node.nil?
|
80
|
+
# @chef_node = cluster.find_node(fullname) || false
|
81
|
+
# end
|
82
82
|
|
83
83
|
# true if chef client is created and discovered
|
84
84
|
def chef_client?
|
@@ -193,15 +193,15 @@ module Ironfan
|
|
193
193
|
end
|
194
194
|
|
195
195
|
def sync_volume_attributes
|
196
|
-
|
196
|
+
volumes.each_pair do |vol_name, vol|
|
197
197
|
chef_node.normal[:volumes] ||= Mash.new
|
198
|
-
chef_node.normal[:volumes][vol_name] = vol.
|
198
|
+
chef_node.normal[:volumes][vol_name] = vol.attributes.compact
|
199
199
|
end
|
200
200
|
end
|
201
201
|
|
202
202
|
def set_chef_node_attributes
|
203
203
|
step(" setting node runlist and essential attributes")
|
204
|
-
@chef_node.run_list = Chef::RunList.new(
|
204
|
+
@chef_node.run_list = Chef::RunList.new(*combined_run_list)
|
205
205
|
@chef_node.normal[:organization] = organization if organization
|
206
206
|
@chef_node.normal[:permanent] = cloud.permanent if cloud.permanent
|
207
207
|
@chef_node.normal[:cluster_name] = cluster_name
|