ironfan 3.1.0.rc1
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/.gitignore +51 -0
- data/.rspec +3 -0
- data/CHANGELOG.md +130 -0
- data/Gemfile +26 -0
- data/LICENSE.md +201 -0
- data/README.md +328 -0
- data/Rakefile +104 -0
- data/TODO.md +16 -0
- data/VERSION +1 -0
- data/chefignore +41 -0
- data/cluster_chef-knife.gemspec +123 -0
- data/cluster_chef.gemspec +111 -0
- data/config/client.rb +59 -0
- data/config/proxy.pac +12 -0
- data/config/ubuntu10.04-ironfan.erb +157 -0
- data/config/ubuntu11.10-ironfan.erb +145 -0
- data/ironfan.gemspec +121 -0
- data/lib/chef/knife/bootstrap/ubuntu10.04-ironfan.erb +157 -0
- data/lib/chef/knife/bootstrap/ubuntu11.10-ironfan.erb +145 -0
- data/lib/chef/knife/cluster_bootstrap.rb +74 -0
- data/lib/chef/knife/cluster_kick.rb +94 -0
- data/lib/chef/knife/cluster_kill.rb +73 -0
- data/lib/chef/knife/cluster_launch.rb +164 -0
- data/lib/chef/knife/cluster_list.rb +50 -0
- data/lib/chef/knife/cluster_proxy.rb +126 -0
- data/lib/chef/knife/cluster_show.rb +61 -0
- data/lib/chef/knife/cluster_ssh.rb +141 -0
- data/lib/chef/knife/cluster_start.rb +40 -0
- data/lib/chef/knife/cluster_stop.rb +43 -0
- data/lib/chef/knife/cluster_sync.rb +77 -0
- data/lib/chef/knife/generic_command.rb +66 -0
- data/lib/chef/knife/knife_common.rb +195 -0
- data/lib/ironfan.rb +143 -0
- data/lib/ironfan/chef_layer.rb +299 -0
- data/lib/ironfan/cloud.rb +412 -0
- data/lib/ironfan/cluster.rb +118 -0
- data/lib/ironfan/compute.rb +153 -0
- data/lib/ironfan/deprecated.rb +33 -0
- data/lib/ironfan/discovery.rb +177 -0
- data/lib/ironfan/dsl_object.rb +124 -0
- data/lib/ironfan/facet.rb +144 -0
- data/lib/ironfan/fog_layer.rb +150 -0
- data/lib/ironfan/private_key.rb +130 -0
- data/lib/ironfan/role_implications.rb +58 -0
- data/lib/ironfan/security_group.rb +119 -0
- data/lib/ironfan/server.rb +281 -0
- data/lib/ironfan/server_slice.rb +260 -0
- data/lib/ironfan/volume.rb +157 -0
- data/spec/ironfan/cluster_spec.rb +13 -0
- data/spec/ironfan/facet_spec.rb +69 -0
- data/spec/ironfan/server_slice_spec.rb +19 -0
- data/spec/ironfan/server_spec.rb +112 -0
- data/spec/ironfan_spec.rb +193 -0
- data/spec/spec_helper.rb +50 -0
- data/spec/spec_helper/dummy_chef.rb +25 -0
- data/spec/test_config.rb +20 -0
- data/tasks/chef_config.rake +38 -0
- data/tasks/jeweler_use_alt_branch.rake +53 -0
- metadata +217 -0
data/Rakefile
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
#
|
2
|
+
# Rakefile for Cluster Chef Knife plugins
|
3
|
+
#
|
4
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
5
|
+
# Copyright:: Copyright (c) 2008 Opscode, Inc.
|
6
|
+
# License:: Apache License, Version 2.0
|
7
|
+
#
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
# you may not use this file except in compliance with the License.
|
10
|
+
# You may obtain a copy of the License at
|
11
|
+
#
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
#
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
#
|
20
|
+
|
21
|
+
DEPRECATED_NAME = "!! This gem has been renamed 'ironfan' (from cluster_chef). \n It will not be updated after Feb. 2012. \n Sorry for the inconvenience."
|
22
|
+
|
23
|
+
require 'rubygems' unless defined?(Gem)
|
24
|
+
require 'bundler'
|
25
|
+
begin
|
26
|
+
Bundler.setup(:default, :development)
|
27
|
+
rescue Bundler::BundlerError => e
|
28
|
+
$stderr.puts e.message
|
29
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
30
|
+
exit e.status_code
|
31
|
+
end
|
32
|
+
require 'json'
|
33
|
+
require 'jeweler'
|
34
|
+
require 'rspec/core/rake_task'
|
35
|
+
require 'yard'
|
36
|
+
|
37
|
+
# Load constants from rake config file.
|
38
|
+
$LOAD_PATH.unshift('tasks')
|
39
|
+
Dir[File.join('tasks', '*.rake')].sort.each{|f| load(f) }
|
40
|
+
|
41
|
+
# ---------------------------------------------------------------------------
|
42
|
+
#
|
43
|
+
# Jeweler -- release ironfan as a gem
|
44
|
+
#
|
45
|
+
|
46
|
+
gems_to_release = ENV['GEMS_TO_RELEASE'] ? ENV['GEMS_TO_RELEASE'].split : %w[ ironfan ]
|
47
|
+
gems_to_release.each do |gem_name|
|
48
|
+
Jeweler::Tasks.new do |gem|
|
49
|
+
gem.name = gem_name
|
50
|
+
gem.homepage = "http://infochimps.com/labs"
|
51
|
+
gem.license = NEW_COOKBOOK_LICENSE.to_s
|
52
|
+
gem.summary = %Q{#{gem_name} 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.}
|
53
|
+
gem.description = %Q{#{gem_name} 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.}
|
54
|
+
gem.email = SSL_EMAIL_ADDRESS
|
55
|
+
gem.authors = ["Infochimps"]
|
56
|
+
|
57
|
+
ignores = File.readlines(".gitignore").grep(/^[^#]\S+/).map{|s| s.chomp }
|
58
|
+
dotfiles = [".gemtest", ".gitignore", ".rspec", ".yardopts"]
|
59
|
+
gem.files = dotfiles + Dir["**/*"].
|
60
|
+
reject{|f| f =~ %r{^cookbooks/} }.
|
61
|
+
reject{|f| File.directory?(f) }.
|
62
|
+
reject{|f| ignores.any?{|i| File.fnmatch(i, f) || File.fnmatch(i+'/*', f) || File.fnmatch(i+'/**/*', f) } }
|
63
|
+
gem.test_files = gem.files.grep(/^spec\//)
|
64
|
+
gem.require_paths = ['lib']
|
65
|
+
|
66
|
+
if gem.name == 'cluster_chef'
|
67
|
+
gem.files.reject!{|f| f =~ %r{^(cluster_chef-knife.gemspec|lib/chef/knife/)} }
|
68
|
+
gem.add_runtime_dependency 'cluster_chef-knife', "= #{File.read('VERSION').strip}"
|
69
|
+
gem.post_install_message = DEPRECATED_NAME
|
70
|
+
elsif gem.name == 'cluster_chef-knife'
|
71
|
+
gem.files.reject!{|f| f =~ %r{^(cluster_chef.gemspec|lib/cluster_chef)} }
|
72
|
+
gem.post_install_message = DEPRECATED_NAME
|
73
|
+
elsif gem.name == 'ironfan'
|
74
|
+
true # pass
|
75
|
+
else
|
76
|
+
raise "Don't know what to include for gem #{gem.name}"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
Jeweler::RubygemsDotOrgTasks.new
|
80
|
+
end
|
81
|
+
|
82
|
+
# ---------------------------------------------------------------------------
|
83
|
+
#
|
84
|
+
# RSpec -- testing
|
85
|
+
#
|
86
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
87
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
88
|
+
end
|
89
|
+
|
90
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
91
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
92
|
+
spec.rcov = true
|
93
|
+
spec.rcov_opts = %w[ --exclude .rvm --no-comments --text-summary ]
|
94
|
+
end
|
95
|
+
|
96
|
+
# ---------------------------------------------------------------------------
|
97
|
+
#
|
98
|
+
# Yard -- documentation
|
99
|
+
#
|
100
|
+
YARD::Rake::YardocTask.new
|
101
|
+
|
102
|
+
# ---------------------------------------------------------------------------
|
103
|
+
|
104
|
+
task :default => :spec
|
data/TODO.md
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
### From Nathan
|
2
|
+
- syntactic sugar for ```server(0).fullname('blah')```
|
3
|
+
|
4
|
+
### Knife commands
|
5
|
+
|
6
|
+
* knife cluster kick fails if service isn't running
|
7
|
+
* make clear directions for installing `ironfan` and its initial use.
|
8
|
+
* knife cluster launch should fail differently if you give it a facet that doesn't exist
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
### ssh_user, ssh_identity_file, keypair, template should be set by cluster except when they shouldn't
|
13
|
+
|
14
|
+
### Organization-specific homebase files
|
15
|
+
|
16
|
+
The current organization of the homebase needs to better scope organization-specific customizations
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.1.0.rc1
|
data/chefignore
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Put files/directories that should be ignored in this file.
|
2
|
+
# Lines that start with '# ' are comments.
|
3
|
+
|
4
|
+
## OS
|
5
|
+
.DS_Store
|
6
|
+
Icon?
|
7
|
+
nohup.out
|
8
|
+
|
9
|
+
## EDITORS
|
10
|
+
\#*
|
11
|
+
.#*
|
12
|
+
*~
|
13
|
+
*.sw[a-z]
|
14
|
+
*.bak
|
15
|
+
REVISION
|
16
|
+
TAGS*
|
17
|
+
tmtags
|
18
|
+
*_flymake.*
|
19
|
+
*_flymake
|
20
|
+
*.tmproj
|
21
|
+
.project
|
22
|
+
.settings
|
23
|
+
mkmf.log
|
24
|
+
|
25
|
+
## COMPILED
|
26
|
+
a.out
|
27
|
+
*.o
|
28
|
+
*.pyc
|
29
|
+
*.so
|
30
|
+
|
31
|
+
## OTHER SCM
|
32
|
+
*/.bzr/*
|
33
|
+
*/.hg/*
|
34
|
+
*/.svn/*
|
35
|
+
|
36
|
+
## Don't send rspecs up in cookbook
|
37
|
+
.watchr
|
38
|
+
.rspec
|
39
|
+
spec/*
|
40
|
+
spec/fixtures/*
|
41
|
+
|
@@ -0,0 +1,123 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "cluster_chef-knife"
|
8
|
+
s.version = "3.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Infochimps"]
|
12
|
+
s.date = "2012-02-18"
|
13
|
+
s.description = "cluster_chef-knife 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
|
+
s.email = "coders@infochimps.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.md",
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".gitignore",
|
21
|
+
".rspec",
|
22
|
+
"CHANGELOG.md",
|
23
|
+
"Gemfile",
|
24
|
+
"LICENSE.md",
|
25
|
+
"README.md",
|
26
|
+
"Rakefile",
|
27
|
+
"TODO.md",
|
28
|
+
"VERSION",
|
29
|
+
"chefignore",
|
30
|
+
"cluster_chef-knife.gemspec",
|
31
|
+
"config/client.rb",
|
32
|
+
"config/proxy.pac",
|
33
|
+
"config/ubuntu10.04-ironfan.erb",
|
34
|
+
"config/ubuntu11.10-ironfan.erb",
|
35
|
+
"ironfan.gemspec",
|
36
|
+
"lib/chef/knife/bootstrap/ubuntu10.04-ironfan.erb",
|
37
|
+
"lib/chef/knife/bootstrap/ubuntu11.10-ironfan.erb",
|
38
|
+
"lib/chef/knife/cluster_bootstrap.rb",
|
39
|
+
"lib/chef/knife/cluster_kick.rb",
|
40
|
+
"lib/chef/knife/cluster_kill.rb",
|
41
|
+
"lib/chef/knife/cluster_launch.rb",
|
42
|
+
"lib/chef/knife/cluster_list.rb",
|
43
|
+
"lib/chef/knife/cluster_proxy.rb",
|
44
|
+
"lib/chef/knife/cluster_show.rb",
|
45
|
+
"lib/chef/knife/cluster_ssh.rb",
|
46
|
+
"lib/chef/knife/cluster_start.rb",
|
47
|
+
"lib/chef/knife/cluster_stop.rb",
|
48
|
+
"lib/chef/knife/cluster_sync.rb",
|
49
|
+
"lib/chef/knife/generic_command.rb",
|
50
|
+
"lib/chef/knife/knife_common.rb",
|
51
|
+
"lib/ironfan.rb",
|
52
|
+
"lib/ironfan/chef_layer.rb",
|
53
|
+
"lib/ironfan/cloud.rb",
|
54
|
+
"lib/ironfan/cluster.rb",
|
55
|
+
"lib/ironfan/compute.rb",
|
56
|
+
"lib/ironfan/deprecated.rb",
|
57
|
+
"lib/ironfan/discovery.rb",
|
58
|
+
"lib/ironfan/dsl_object.rb",
|
59
|
+
"lib/ironfan/facet.rb",
|
60
|
+
"lib/ironfan/fog_layer.rb",
|
61
|
+
"lib/ironfan/private_key.rb",
|
62
|
+
"lib/ironfan/role_implications.rb",
|
63
|
+
"lib/ironfan/security_group.rb",
|
64
|
+
"lib/ironfan/server.rb",
|
65
|
+
"lib/ironfan/server_slice.rb",
|
66
|
+
"lib/ironfan/volume.rb",
|
67
|
+
"rspec.watchr",
|
68
|
+
"spec/ironfan/cluster_spec.rb",
|
69
|
+
"spec/ironfan/facet_spec.rb",
|
70
|
+
"spec/ironfan/server_slice_spec.rb",
|
71
|
+
"spec/ironfan/server_spec.rb",
|
72
|
+
"spec/ironfan_spec.rb",
|
73
|
+
"spec/spec_helper.rb",
|
74
|
+
"spec/spec_helper/dummy_chef.rb",
|
75
|
+
"spec/test_config.rb",
|
76
|
+
"tasks/chef_config.rake",
|
77
|
+
"tasks/jeweler_use_alt_branch.rake"
|
78
|
+
]
|
79
|
+
s.homepage = "http://infochimps.com/labs"
|
80
|
+
s.licenses = ["apachev2"]
|
81
|
+
s.post_install_message = "!! This gem has been renamed 'ironfan' (from cluster_chef). \n It will not be updated after Feb. 2012. \n Sorry for the inconvenience."
|
82
|
+
s.require_paths = ["lib"]
|
83
|
+
s.rubygems_version = "1.8.15"
|
84
|
+
s.summary = "cluster_chef-knife 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."
|
85
|
+
s.test_files = ["spec/ironfan/cluster_spec.rb", "spec/ironfan/facet_spec.rb", "spec/ironfan/server_slice_spec.rb", "spec/ironfan/server_spec.rb", "spec/ironfan_spec.rb", "spec/spec_helper/dummy_chef.rb", "spec/spec_helper.rb", "spec/test_config.rb"]
|
86
|
+
|
87
|
+
if s.respond_to? :specification_version then
|
88
|
+
s.specification_version = 3
|
89
|
+
|
90
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
91
|
+
s.add_runtime_dependency(%q<chef>, ["~> 0.10.4"])
|
92
|
+
s.add_runtime_dependency(%q<fog>, ["~> 1.1.1"])
|
93
|
+
s.add_runtime_dependency(%q<formatador>, ["~> 0.2.1"])
|
94
|
+
s.add_runtime_dependency(%q<gorillib>, ["~> 0.1.7"])
|
95
|
+
s.add_development_dependency(%q<bundler>, ["~> 1"])
|
96
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6"])
|
97
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.5"])
|
98
|
+
s.add_development_dependency(%q<yard>, ["~> 0.6"])
|
99
|
+
s.add_development_dependency(%q<configliere>, ["~> 0.4.8"])
|
100
|
+
else
|
101
|
+
s.add_dependency(%q<chef>, ["~> 0.10.4"])
|
102
|
+
s.add_dependency(%q<fog>, ["~> 1.1.1"])
|
103
|
+
s.add_dependency(%q<formatador>, ["~> 0.2.1"])
|
104
|
+
s.add_dependency(%q<gorillib>, ["~> 0.1.7"])
|
105
|
+
s.add_dependency(%q<bundler>, ["~> 1"])
|
106
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6"])
|
107
|
+
s.add_dependency(%q<rspec>, ["~> 2.5"])
|
108
|
+
s.add_dependency(%q<yard>, ["~> 0.6"])
|
109
|
+
s.add_dependency(%q<configliere>, ["~> 0.4.8"])
|
110
|
+
end
|
111
|
+
else
|
112
|
+
s.add_dependency(%q<chef>, ["~> 0.10.4"])
|
113
|
+
s.add_dependency(%q<fog>, ["~> 1.1.1"])
|
114
|
+
s.add_dependency(%q<formatador>, ["~> 0.2.1"])
|
115
|
+
s.add_dependency(%q<gorillib>, ["~> 0.1.7"])
|
116
|
+
s.add_dependency(%q<bundler>, ["~> 1"])
|
117
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6"])
|
118
|
+
s.add_dependency(%q<rspec>, ["~> 2.5"])
|
119
|
+
s.add_dependency(%q<yard>, ["~> 0.6"])
|
120
|
+
s.add_dependency(%q<configliere>, ["~> 0.4.8"])
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
@@ -0,0 +1,111 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "cluster_chef"
|
8
|
+
s.version = "3.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Infochimps"]
|
12
|
+
s.date = "2012-02-18"
|
13
|
+
s.description = "cluster_chef 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
|
+
s.email = "coders@infochimps.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.md",
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".gitignore",
|
21
|
+
".rspec",
|
22
|
+
"CHANGELOG.md",
|
23
|
+
"Gemfile",
|
24
|
+
"LICENSE.md",
|
25
|
+
"README.md",
|
26
|
+
"Rakefile",
|
27
|
+
"TODO.md",
|
28
|
+
"VERSION",
|
29
|
+
"chefignore",
|
30
|
+
"cluster_chef.gemspec",
|
31
|
+
"config/client.rb",
|
32
|
+
"config/proxy.pac",
|
33
|
+
"config/ubuntu10.04-ironfan.erb",
|
34
|
+
"config/ubuntu11.10-ironfan.erb",
|
35
|
+
"ironfan.gemspec",
|
36
|
+
"lib/ironfan.rb",
|
37
|
+
"lib/ironfan/chef_layer.rb",
|
38
|
+
"lib/ironfan/cloud.rb",
|
39
|
+
"lib/ironfan/cluster.rb",
|
40
|
+
"lib/ironfan/compute.rb",
|
41
|
+
"lib/ironfan/deprecated.rb",
|
42
|
+
"lib/ironfan/discovery.rb",
|
43
|
+
"lib/ironfan/dsl_object.rb",
|
44
|
+
"lib/ironfan/facet.rb",
|
45
|
+
"lib/ironfan/fog_layer.rb",
|
46
|
+
"lib/ironfan/private_key.rb",
|
47
|
+
"lib/ironfan/role_implications.rb",
|
48
|
+
"lib/ironfan/security_group.rb",
|
49
|
+
"lib/ironfan/server.rb",
|
50
|
+
"lib/ironfan/server_slice.rb",
|
51
|
+
"lib/ironfan/volume.rb",
|
52
|
+
"rspec.watchr",
|
53
|
+
"spec/ironfan/cluster_spec.rb",
|
54
|
+
"spec/ironfan/facet_spec.rb",
|
55
|
+
"spec/ironfan/server_slice_spec.rb",
|
56
|
+
"spec/ironfan/server_spec.rb",
|
57
|
+
"spec/ironfan_spec.rb",
|
58
|
+
"spec/spec_helper.rb",
|
59
|
+
"spec/spec_helper/dummy_chef.rb",
|
60
|
+
"spec/test_config.rb",
|
61
|
+
"tasks/chef_config.rake",
|
62
|
+
"tasks/jeweler_use_alt_branch.rake"
|
63
|
+
]
|
64
|
+
s.homepage = "http://infochimps.com/labs"
|
65
|
+
s.licenses = ["apachev2"]
|
66
|
+
s.post_install_message = "!! This gem has been renamed 'ironfan' (from cluster_chef). \n It will not be updated after Feb. 2012. \n Sorry for the inconvenience."
|
67
|
+
s.require_paths = ["lib"]
|
68
|
+
s.rubygems_version = "1.8.15"
|
69
|
+
s.summary = "cluster_chef 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."
|
70
|
+
s.test_files = ["spec/ironfan/cluster_spec.rb", "spec/ironfan/facet_spec.rb", "spec/ironfan/server_slice_spec.rb", "spec/ironfan/server_spec.rb", "spec/ironfan_spec.rb", "spec/spec_helper/dummy_chef.rb", "spec/spec_helper.rb", "spec/test_config.rb"]
|
71
|
+
|
72
|
+
if s.respond_to? :specification_version then
|
73
|
+
s.specification_version = 3
|
74
|
+
|
75
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
76
|
+
s.add_runtime_dependency(%q<chef>, ["~> 0.10.4"])
|
77
|
+
s.add_runtime_dependency(%q<fog>, ["~> 1.1.1"])
|
78
|
+
s.add_runtime_dependency(%q<formatador>, ["~> 0.2.1"])
|
79
|
+
s.add_runtime_dependency(%q<gorillib>, ["~> 0.1.7"])
|
80
|
+
s.add_development_dependency(%q<bundler>, ["~> 1"])
|
81
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6"])
|
82
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.5"])
|
83
|
+
s.add_development_dependency(%q<yard>, ["~> 0.6"])
|
84
|
+
s.add_development_dependency(%q<configliere>, ["~> 0.4.8"])
|
85
|
+
s.add_runtime_dependency(%q<cluster_chef-knife>, ["= 3.1.0"])
|
86
|
+
else
|
87
|
+
s.add_dependency(%q<chef>, ["~> 0.10.4"])
|
88
|
+
s.add_dependency(%q<fog>, ["~> 1.1.1"])
|
89
|
+
s.add_dependency(%q<formatador>, ["~> 0.2.1"])
|
90
|
+
s.add_dependency(%q<gorillib>, ["~> 0.1.7"])
|
91
|
+
s.add_dependency(%q<bundler>, ["~> 1"])
|
92
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6"])
|
93
|
+
s.add_dependency(%q<rspec>, ["~> 2.5"])
|
94
|
+
s.add_dependency(%q<yard>, ["~> 0.6"])
|
95
|
+
s.add_dependency(%q<configliere>, ["~> 0.4.8"])
|
96
|
+
s.add_dependency(%q<cluster_chef-knife>, ["= 3.1.0"])
|
97
|
+
end
|
98
|
+
else
|
99
|
+
s.add_dependency(%q<chef>, ["~> 0.10.4"])
|
100
|
+
s.add_dependency(%q<fog>, ["~> 1.1.1"])
|
101
|
+
s.add_dependency(%q<formatador>, ["~> 0.2.1"])
|
102
|
+
s.add_dependency(%q<gorillib>, ["~> 0.1.7"])
|
103
|
+
s.add_dependency(%q<bundler>, ["~> 1"])
|
104
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6"])
|
105
|
+
s.add_dependency(%q<rspec>, ["~> 2.5"])
|
106
|
+
s.add_dependency(%q<yard>, ["~> 0.6"])
|
107
|
+
s.add_dependency(%q<configliere>, ["~> 0.4.8"])
|
108
|
+
s.add_dependency(%q<cluster_chef-knife>, ["= 3.1.0"])
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
data/config/client.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
require "ohai"
|
2
|
+
require "json"
|
3
|
+
|
4
|
+
#
|
5
|
+
# Load configuration
|
6
|
+
#
|
7
|
+
|
8
|
+
def merge_safely hsh
|
9
|
+
hsh.merge!( yield ) rescue Mash.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_file_if_empty(filename, str)
|
13
|
+
unless File.exists?(filename)
|
14
|
+
puts "Populating #{filename}" ;
|
15
|
+
File.open(filename, "w", 0600){|f| f.puts(str) }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def present?(config, key)
|
20
|
+
not config[key].to_s.empty?
|
21
|
+
end
|
22
|
+
|
23
|
+
# Start with a set of defaults
|
24
|
+
chef_config = Mash.new
|
25
|
+
|
26
|
+
# Extract client configuration from EC2 user-data
|
27
|
+
OHAI_INFO = Ohai::System.new
|
28
|
+
OHAI_INFO.all_plugins
|
29
|
+
merge_safely(chef_config){ JSON.parse(OHAI_INFO[:ec2][:userdata]) }
|
30
|
+
|
31
|
+
#
|
32
|
+
# Configure chef run
|
33
|
+
#
|
34
|
+
|
35
|
+
log_level :info
|
36
|
+
log_location STDOUT
|
37
|
+
node_name chef_config["node_name"] if chef_config["node_name"]
|
38
|
+
chef_server_url chef_config["chef_server"] if chef_config["chef_server"]
|
39
|
+
validation_client_name chef_config["validation_client_name"] if chef_config["validation_client_name"]
|
40
|
+
validation_key "/etc/chef/validation.pem"
|
41
|
+
client_key "/etc/chef/client.pem"
|
42
|
+
node_attrs_file "/etc/chef/first-boot.json"
|
43
|
+
|
44
|
+
# If the client file is missing, write the validation key out so chef-client can register
|
45
|
+
unless File.exists?(client_key)
|
46
|
+
if present?(chef_config, "client_key") then create_file_if_empty(client_key, chef_config["client_key"])
|
47
|
+
elsif present?(chef_config, "validation_key") then create_file_if_empty(validation_key, chef_config["validation_key"])
|
48
|
+
else warn "Yikes -- I have no client key or validation key!!"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
reduced_chef_config = chef_config.reject{|k,v| k.to_s =~ /(_key|run_list)$/ }
|
53
|
+
unless File.exists?(node_attrs_file)
|
54
|
+
create_file_if_empty(node_attrs_file, JSON.pretty_generate(reduced_chef_config))
|
55
|
+
end
|
56
|
+
json_attribs node_attrs_file
|
57
|
+
|
58
|
+
Chef::Log.debug(JSON.generate(chef_config))
|
59
|
+
Chef::Log.info("=> chef client #{node_name} on #{chef_server_url} in cluster +#{chef_config["cluster_name"]}+")
|