cluster_chef-knife 3.0.12 → 3.0.14

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.
@@ -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 = "ironfan"
8
+ s.version = "3.0.14"
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-15"
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
+ s.email = "coders@infochimps.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ ".gitignore",
21
+ ".rspec",
22
+ "CHANGELOG.md",
23
+ "Gemfile",
24
+ "LICENSE",
25
+ "README.md",
26
+ "Rakefile",
27
+ "TODO.md",
28
+ "VERSION",
29
+ "chefignore",
30
+ "cluster_chef-knife.gemspec",
31
+ "cluster_chef.gemspec",
32
+ "config/client.rb",
33
+ "config/proxy.pac",
34
+ "config/ubuntu10.04-cluster_chef.erb",
35
+ "config/ubuntu11.10-cluster_chef.erb",
36
+ "lib/chef/knife/bootstrap/ubuntu10.04-cluster_chef.erb",
37
+ "lib/chef/knife/bootstrap/ubuntu11.10-cluster_chef.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/cluster_chef.rb",
52
+ "lib/cluster_chef/chef_layer.rb",
53
+ "lib/cluster_chef/cloud.rb",
54
+ "lib/cluster_chef/cluster.rb",
55
+ "lib/cluster_chef/compute.rb",
56
+ "lib/cluster_chef/deprecated.rb",
57
+ "lib/cluster_chef/discovery.rb",
58
+ "lib/cluster_chef/dsl_object.rb",
59
+ "lib/cluster_chef/facet.rb",
60
+ "lib/cluster_chef/fog_layer.rb",
61
+ "lib/cluster_chef/private_key.rb",
62
+ "lib/cluster_chef/role_implications.rb",
63
+ "lib/cluster_chef/security_group.rb",
64
+ "lib/cluster_chef/server.rb",
65
+ "lib/cluster_chef/server_slice.rb",
66
+ "lib/cluster_chef/volume.rb",
67
+ "notes/aws_console_screenshot.jpg",
68
+ "rspec.watchr",
69
+ "spec/cluster_chef/cluster_spec.rb",
70
+ "spec/cluster_chef/facet_spec.rb",
71
+ "spec/cluster_chef/server_slice_spec.rb",
72
+ "spec/cluster_chef/server_spec.rb",
73
+ "spec/cluster_chef_spec.rb",
74
+ "spec/spec_helper.rb",
75
+ "spec/spec_helper/dummy_chef.rb",
76
+ "spec/test_config.rb",
77
+ "tasks/chef_config.rake",
78
+ "tasks/jeweler_use_alt_branch.rake"
79
+ ]
80
+ s.homepage = "http://infochimps.com/labs"
81
+ s.licenses = ["apachev2"]
82
+ s.require_paths = ["lib"]
83
+ s.rubygems_version = "1.8.15"
84
+ 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."
85
+ s.test_files = ["spec/cluster_chef/cluster_spec.rb", "spec/cluster_chef/facet_spec.rb", "spec/cluster_chef/server_slice_spec.rb", "spec/cluster_chef/server_spec.rb", "spec/cluster_chef_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
+
@@ -1,30 +1,40 @@
1
- bash -c '
1
+ bash <<EOF || echo "Chef bootstrap failed!"
2
2
 
3
- # This is the ubuntu-10.04-gems script from opscode, but it
4
- # * installs ruby 1.9.2, not 1.8.7
3
+ # This is the ubuntu natty bootstrap script from infochimps' cluster_chef. It is
4
+ # based on opscode's bootstrap script, with the following important differences:
5
+ #
6
+ # * installs ruby 1.9.2 (not 1.8.7) from source
5
7
  # * upgrades rubygems rather than installing from source
6
8
  # * pushes the node identity into the first-boot.json
7
9
  # * installs the chef-client service and kicks off the first run of chef
8
10
 
9
- <%= (@config[:verbosity].to_i > 1 ? 'set -v' : '') %>
11
+ set -e
10
12
 
11
- mkdir -p /tmp/knife-bootstrap ; chmod 700 /tmp/knife-bootstrap
12
- cd /tmp/knife-bootstrap
13
+ <%= (@config[:verbosity].to_i > 1 ? 'set -v' : '') %>
13
14
 
14
15
  RUBY_VERSION=1.9.2-p290
16
+ CHEF_VERSION=<%= bootstrap_version_string.gsub(/.*[\s=]/,"") %>
17
+
18
+ mkdir -p /tmp/knife-bootstrap
19
+ chmod 700 /tmp/knife-bootstrap
20
+ cd /tmp/knife-bootstrap
15
21
 
16
22
  <%= "export http_proxy=\"#{knife_config[:bootstrap_proxy]}\"" if knife_config[:bootstrap_proxy] -%>
17
23
  eval `cat /etc/lsb-release `
18
24
  export DEBIAN_FRONTEND=noninteractive
19
25
 
20
- if [ ! -f /usr/bin/chef-client ]; then
26
+ date > /etc/box_build_time
27
+
21
28
  echo -e "`date` \n\n**** \n**** apt update:\n****\n"
22
- apt-get update
29
+ apt-get -y update
23
30
  apt-get -y upgrade
24
31
 
25
32
  echo -e "`date` \n\n**** \n**** Installing base packages:\n****\n"
26
- apt-get install -y build-essential wget runit runit-services zlib1g-dev libssl-dev openssl libcurl4-openssl-dev libreadline6-dev libyaml-dev
33
+ apt-get -y install build-essential make wget curl runit zlib1g-dev libssl-dev openssl libcurl4-openssl-dev libxml2-dev libxslt-dev libyaml-dev libreadline6 libreadline6-dev
34
+ apt-get -y install runit-services
35
+ apt-get clean
27
36
 
37
+ if [ ! -f /usr/bin/chef-client ]; then
28
38
  echo -e "`date` \n\n**** \n**** Installing ruby version ${RUBY_VERSION}:\n****\n"
29
39
 
30
40
  wget ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-${RUBY_VERSION}.tar.gz
@@ -46,21 +56,28 @@ update-alternatives \
46
56
 
47
57
  if ruby -e "exit(%x{gem --version} < \"1.6.2\" ? 0 : -1 )" ; then
48
58
  echo -e "`date` \n\n**** \n**** Updating rubygems:\n****\n"
49
- gem install --no-rdoc --no-ri rubygems-update --version=1.6.2
50
- update_rubygems --version=1.6.2
59
+ # screw you Debian
60
+ REALLY_GEM_UPDATE_SYSTEM=1 gem update --system
61
+ # screw you rubygems
62
+ for foo in /usr/lib/ruby/site_ruby/*/rubygems/deprecate.rb ; do
63
+ # Don't have to be any such deprecations, in which case $foo won't exist
64
+ [ -f "$foo" ] && sudo sed -i.bak 's!@skip ||= false!true!' "$foo"
65
+ done
51
66
  fi
52
67
 
53
68
  echo -e "`date` \n\n**** \n**** Installing chef:\n****\n"
54
69
  gem install ohai --no-rdoc --no-ri
55
70
  gem install chef --no-rdoc --no-ri <%= bootstrap_version_string %>
56
- gem install --no-rdoc --no-ri extlib json ruby-shadow right_aws
71
+ # gems needed for the client.rb or so generically useful you want them at hand
72
+ gem install --no-rdoc --no-ri extlib bundler json right_aws pry
57
73
 
58
74
  else # no chef-client
59
75
  echo -e "`date` \n\n**** \n**** Chef is present -- skipping apt/ruby/chef installation\n****\n"
60
- fi
76
+ fi # end ruby+chef install
61
77
 
62
78
  # fix a bug in chef that prevents debugging template errors
63
- bad_template_file='/usr/lib/ruby/gems/1.9.2-p290/gems/chef-0.10.4/lib/chef/mixin/template.rb'
79
+ # will not work with --prerelease but that's OK hopefully opscode patches this crap soon
80
+ bad_template_file="/usr/lib/ruby/gems/${RUBY_VERSION}/gems/chef-${CHEF_VERSION}/lib/chef/mixin/template.rb"
64
81
  if echo "0505c482b8b0b333ac71bbc8a1795d19 $bad_template_file" | md5sum -c - 2>/dev/null ; then
65
82
  curl https://github.com/mrflip/chef/commit/655a1967253a8759afb54f30b818bbcb7c309198.patch | sudo patch $bad_template_file
66
83
  fi
@@ -87,7 +104,7 @@ awk NF /tmp/knife-bootstrap/validation.pem > /etc/chef/validation.pem
87
104
  echo -e "`date` \n\n**** \n**** Nuking our temp files:\n****\n"
88
105
 
89
106
  cd /tmp
90
- # rm -rf /tmp/knife-bootstrap
107
+ rm -rf /tmp/knife-bootstrap
91
108
 
92
109
  echo -e "`date` \n\n**** \n**** Creating chef client script:\n****\n"
93
110
 
@@ -105,21 +122,21 @@ EOP
105
122
  ) > /etc/chef/first-boot.json
106
123
 
107
124
  echo -e "`date` \n\n**** \n**** Adding chef client runit scripts:\n****\n"
108
- service chef-client stop >/dev/null 2>&1 ; sleep 1 ; killall chef-client 2>/dev/null ; true
125
+ ( service chef-client stop >/dev/null 2>&1 ; sleep 1 ; killall chef-client 2>/dev/null ) || true
109
126
  mkdir -p /var/log/chef /var/chef /etc/service /etc/sv/chef-client/{log/main,supervise}
110
- cat > /etc/sv/chef-client/log/run <<EOF
127
+ cat > /etc/sv/chef-client/log/run <<EOP
111
128
  #!/bin/bash
112
129
  exec svlogd -tt ./main
113
- EOF
114
- cat > /etc/sv/chef-client/run <<EOF
130
+ EOP
131
+ cat > /etc/sv/chef-client/run <<EOP
115
132
  #!/bin/bash
116
133
  exec 2>&1
117
134
  exec /usr/bin/env chef-client -i 43200 -s 20 -L /var/log/chef/client.log
118
- EOF
135
+ EOP
119
136
  chmod +x /etc/sv/chef-client/log/run /etc/sv/chef-client/run
120
137
  ln -nfs /usr/bin/sv /etc/init.d/chef-client
121
138
 
122
- service chef-client stop ; true
139
+ service chef-client stop >/dev/null 2>&1 || true
123
140
 
124
141
  <%- if (@config[:bootstrap_runs_chef_client].to_s == 'true') || (@chef_config.knife[:bootstrap_runs_chef_client].to_s == 'true') %>
125
142
  echo -e "`date` \n\n**** \n**** First run of chef:\n****\n"
@@ -129,6 +146,7 @@ set +e
129
146
  <%- end %>
130
147
 
131
148
  echo -e "`date` \n\n**** \n**** Cleanup:\n****\n"
149
+ # make locate work good
132
150
  updatedb
133
151
 
134
152
  echo -e "`date` \n\n**** \n**** Enabling chef client service:\n****\n"
@@ -136,4 +154,4 @@ ln -nfs /etc/sv/chef-client /etc/service/chef-client
136
154
  service chef-client start
137
155
 
138
156
  echo -e "`date` \n\n**** \n**** Cluster Chef client bootstrap complete\n****\n"
139
- '
157
+ EOF
@@ -1,8 +1,9 @@
1
1
  bash <<EOF || echo "Chef bootstrap failed!"
2
2
 
3
- # This is the ubuntu-10.04-cluster_chef script from infochimps, which
4
- # is based on the ubuntu-10.04-gems script from opscode, but it
5
- # * installs ruby 1.9.2, not 1.8.7 using the system ruby
3
+ # This is the ubuntu oneiric bootstrap script from infochimps' cluster_chef. It is
4
+ # based on the opscode bootstrap script, with the important differences being it:
5
+ #
6
+ # * installs ruby 1.9.2 (not 1.8.7) using the system ruby
6
7
  # * upgrades rubygems rather than installing from source
7
8
  # * pushes the node identity into the first-boot.json
8
9
  # * installs the chef-client service and kicks off the first run of chef
@@ -11,6 +12,9 @@ set -e
11
12
 
12
13
  <%= (@config[:verbosity].to_i > 1 ? 'set -v' : '') %>
13
14
 
15
+ RUBY_VERSION=1.9.1
16
+ CHEF_VERSION=<%= bootstrap_version_string.gsub(/.*[\s=]/,"") %>
17
+
14
18
  mkdir -p /tmp/knife-bootstrap
15
19
  chmod 700 /tmp/knife-bootstrap
16
20
  cd /tmp/knife-bootstrap
@@ -19,26 +23,31 @@ cd /tmp/knife-bootstrap
19
23
  eval `cat /etc/lsb-release `
20
24
  export DEBIAN_FRONTEND=noninteractive
21
25
 
26
+ date > /etc/box_build_time
27
+
22
28
  # source for sun java if you want to install it later
23
29
  apt-get install -y python-software-properties
24
30
  add-apt-repository -y ppa:ferramroberto/java
25
- apt-get -y update
26
31
 
27
- if [ ! -f /usr/bin/chef-client ]; then
28
32
  echo -e "`date` \n\n**** \n**** apt update:\n****\n"
29
- apt-get update
33
+ apt-get -y update
30
34
  apt-get -y upgrade
31
35
 
32
36
  echo -e "`date` \n\n**** \n**** Installing base packages:\n****\n"
33
- apt-get install -y build-essential wget ruby1.9.1 ruby1.9.1-dev runit zlib1g-dev libssl-dev openssl libcurl4-openssl-dev libreadline6-dev libyaml-dev
37
+ apt-get -y install build-essential make wget curl runit zlib1g-dev libssl-dev openssl libcurl4-openssl-dev libxml2-dev libxslt-dev libyaml-dev libreadline6 libreadline6-dev
38
+ apt-get clean
39
+
40
+ if [ ! -f /usr/bin/chef-client ]; then
41
+ echo -e "`date` \n\n**** \n**** Installing ruby version ${RUBY_VERSION}:\n****\n"
42
+
43
+ apt-get install -y ruby1.9.1 ruby1.9.1-dev
34
44
 
35
45
  if ruby -e "exit(%x{gem --version} < \"1.6.2\" ? 0 : -1 )" ; then
36
46
  echo -e "`date` \n\n**** \n**** Updating rubygems:\n****\n"
37
47
  # screw you Debian
38
48
  REALLY_GEM_UPDATE_SYSTEM=1 gem update --system
39
49
  # screw you rubygems
40
- for foo in /usr/lib/ruby/site_ruby/*/rubygems/deprecate.rb
41
- do
50
+ for foo in /usr/lib/ruby/site_ruby/*/rubygems/deprecate.rb ; do
42
51
  # Don't have to be any such deprecations, in which case $foo won't exist
43
52
  [ -f "$foo" ] && sudo sed -i.bak 's!@skip ||= false!true!' "$foo"
44
53
  done
@@ -47,14 +56,16 @@ fi
47
56
  echo -e "`date` \n\n**** \n**** Installing chef:\n****\n"
48
57
  gem install ohai --no-rdoc --no-ri
49
58
  gem install chef --no-rdoc --no-ri <%= bootstrap_version_string %>
50
- gem install --no-rdoc --no-ri bundler pry cheat
59
+ # gems needed for the client.rb or so generically useful you want them at hand
60
+ gem install --no-rdoc --no-ri extlib bundler json right_aws pry
51
61
 
52
62
  else # no chef-client
53
63
  echo -e "`date` \n\n**** \n**** Chef is present -- skipping apt/ruby/chef installation\n****\n"
54
- fi
64
+ fi # end ruby+chef install
55
65
 
56
66
  # fix a bug in chef that prevents debugging template errors
57
- bad_template_file='/usr/lib/ruby/gems/1.9.1/gems/chef-0.10.4/lib/chef/mixin/template.rb'
67
+ # will not work with --prerelease but that's OK hopefully opscode patches this crap soon
68
+ bad_template_file="/usr/lib/ruby/gems/${RUBY_VERSION}/gems/chef-${CHEF_VERSION}/lib/chef/mixin/template.rb"
58
69
  if echo "0505c482b8b0b333ac71bbc8a1795d19 $bad_template_file" | md5sum -c - 2>/dev/null ; then
59
70
  curl https://github.com/mrflip/chef/commit/655a1967253a8759afb54f30b818bbcb7c309198.patch | sudo patch $bad_template_file
60
71
  fi
@@ -81,7 +92,7 @@ awk NF /tmp/knife-bootstrap/validation.pem > /etc/chef/validation.pem
81
92
  echo -e "`date` \n\n**** \n**** Nuking our temp files:\n****\n"
82
93
 
83
94
  cd /tmp
84
- # rm -rf /tmp/knife-bootstrap
95
+ rm -rf /tmp/knife-bootstrap
85
96
 
86
97
  echo -e "`date` \n\n**** \n**** Creating chef client script:\n****\n"
87
98
 
@@ -99,7 +110,7 @@ EOP
99
110
  ) > /etc/chef/first-boot.json
100
111
 
101
112
  echo -e "`date` \n\n**** \n**** Adding chef client runit scripts:\n****\n"
102
- (service chef-client stop >/dev/null 2>&1 ; sleep 1 ; killall chef-client 2>/dev/null) || true
113
+ ( service chef-client stop >/dev/null 2>&1 ; sleep 1 ; killall chef-client 2>/dev/null ) || true
103
114
  mkdir -p /var/log/chef /var/chef /etc/service /etc/sv/chef-client/{log/main,supervise}
104
115
  cat > /etc/sv/chef-client/log/run <<EOP
105
116
  #!/bin/bash
@@ -123,6 +134,7 @@ set +e
123
134
  <%- end %>
124
135
 
125
136
  echo -e "`date` \n\n**** \n**** Cleanup:\n****\n"
137
+ # make locate work good
126
138
  updatedb
127
139
 
128
140
  echo -e "`date` \n\n**** \n**** Enabling chef client service:\n****\n"
@@ -48,6 +48,9 @@ class Chef
48
48
  set -e
49
49
  <%= ((config[:verbosity].to_i > 1) ? "set -v" : "") %>
50
50
 
51
+ if sudo service chef-client status ; then
52
+
53
+ # running
51
54
  pid_file="<%= config[:pid_file] %>"
52
55
  log_file=/var/log/chef/client.log
53
56
 
@@ -71,6 +74,11 @@ sudo true
71
74
  pid="$(sudo cat $pid_file)"
72
75
  sudo kill -USR1 "$pid"
73
76
  sed -r "/(ERROR: Sleeping for [0-9]+ seconds before trying again|INFO: Report handlers complete)\$/{q}" $pipe
77
+
78
+ else
79
+ echo -e "****\n\nchef-client daemon not running, invoking chef-client directly\n\n****\n"
80
+ sudo chef-client
81
+ fi
74
82
  EOF
75
83
  end
76
84
 
@@ -30,12 +30,12 @@ class Chef
30
30
  :default => false
31
31
  option :cloud,
32
32
  :long => '--[no-]cloud',
33
- :description => "Delete machines from cloud (default is to delete, use --no-cloud to skip)",
33
+ :description => "Kill machines from cloud (default is yes, terminate machines; use --no-cloud to skip)",
34
34
  :boolean => true,
35
35
  :default => true
36
36
  option :chef,
37
37
  :long => "--[no-]chef",
38
- :description => "Delete the chef node and client (default is to delete, use --no-chef to skip)",
38
+ :description => "Delete the chef node and client (default is yes, delete chef objects; use --no-chef to skip)",
39
39
  :boolean => true,
40
40
  :default => true
41
41
 
@@ -99,22 +99,28 @@ class Chef
99
99
  pac_filename = File.expand_path(File.join('/tmp', "cluster_chef_proxy-#{ENV['USER']}.pac"))
100
100
  ui.info("point your browser at PAC (automatic proxy config file) file://#{pac_filename}")
101
101
  File.open(pac_filename, 'w') do |f|
102
- f.print %Q{function FindProxyForURL(url, host) {
103
- if ((shExpMatch(host, "*ec2*.amazonaws.com" )) ||
104
- (shExpMatch(host, "*ec2.internal*" )) ||
105
- (shExpMatch(host, "*compute-*.amazonaws.com" )) ||
106
- (shExpMatch(host, "*compute-*.internal*" )) ||
107
- (shExpMatch(host, "*domu*.internal*" )) ||
108
- (shExpMatch(host, "10.*" ))
102
+ f.print proxy_pac_contents
103
+ end
104
+ end
105
+
106
+ EC2_PROXY_PATTERNS = [ "*ec2*.amazonaws.com", "*ec2.internal*", "*compute-*.amazonaws.com", "*compute-*.internal*", "*domu*.internal*", "10.*",]
107
+
108
+ def proxy_pac_contents
109
+ proxy_patterns = EC2_PROXY_PATTERNS
110
+ proxy_patterns += Array(Chef::Config[:cluster_proxy_patterns])
111
+ rules = proxy_patterns.compact.map{|str| "(shExpMatch(host, %-28s))" % %Q{"#{str}"} }
112
+ %Q{function FindProxyForURL(url, host) {
113
+ if (#{rules.join(" ||\n ")}
109
114
  ) {
110
115
  return "SOCKS5 localhost:#{config[:socks_port]}";
111
116
  }
112
117
  return "DIRECT";
113
- }
114
- }
115
- end
118
+ }\n}
116
119
  end
117
120
 
121
+
122
+
123
+
118
124
  end
119
125
  end
120
126
  end
@@ -27,6 +27,11 @@ class Chef
27
27
  end
28
28
 
29
29
  banner "knife cluster show CLUSTER_NAME [FACET_NAME [INDEXES]] (options)"
30
+ option :cloud,
31
+ :long => "--[no-]cloud",
32
+ :description => "Look up machines on AWS cloud (default is yes, look up machines; use --no-cloud to skip)",
33
+ :default => true,
34
+ :boolean => true
30
35
 
31
36
  def run
32
37
  load_cluster_chef