knife-zero 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 620915bb2600d2bff34062afc9f5aed680043159
4
- data.tar.gz: c01f7d554cbb73f3ed02dd5e2f03eff8e9f26231
3
+ metadata.gz: 7615a63a5eff793078740317f3ca12fdb607821e
4
+ data.tar.gz: 0d73adc8804b0bd7795cdf3c7bfa4f37b73ed7ca
5
5
  SHA512:
6
- metadata.gz: a0d1659ce376fd1969d2689082e7e6a1bc6eaee0653f7665b722325228c9cb592a6d3c7792234d099ba3e64556cac8f6399e079799eb691d0e955a8220d1c694
7
- data.tar.gz: 9bc35ec066cc9707d6664623d9184d79dc2a796f94c3c2aa8b9e5505d3bb0b310b1558bd7cf8f1662af1cb942c83ea6c2906f192f08e31a3f22471c985e82c11
6
+ metadata.gz: abec6340cc40f8df2457bb2d11323c4f83d12a4a2cedd6f8178fe98e6803a70e9a3ec3732d3a38e196da9d8b1a1678ac404c1ccdf1430484e5127199b50eb5ef
7
+ data.tar.gz: ec85f918f363ac842b3e65c1391ba9093e2ba6322763fa55249be4fa7bc01af698167116c81a8540cb7b5aa3595bb84c032c36f9b7c81c4ceb224460b29d5514
data/CHANGELOG.md CHANGED
@@ -1,11 +1,15 @@
1
1
  # Changelog of knife-zero
2
2
 
3
- ## Unrelesed
3
+ ## Unreleased
4
+
5
+ ## v1.5.0
6
+
7
+ - Feature: Support bootstrap as vault client(chef-vault).
4
8
 
5
9
  ## v1.4.0
6
10
 
7
11
  - Change: remote listen by local chef-zero port + 10000
8
- - Feature: overrde Remote Chef-Zero port.
12
+ - Feature: override Remote Chef-Zero port.
9
13
 
10
14
  ## v1.3.0
11
15
 
@@ -29,7 +33,7 @@
29
33
 
30
34
  ## v1.1.5
31
35
 
32
- - FIx: remove debug code.
36
+ - Fix: remove debug code.
33
37
 
34
38
  ## v1.1.4
35
39
 
@@ -78,7 +82,7 @@
78
82
 
79
83
  ## v0.1.0 (yanked)
80
84
 
81
- - Feature: run Chef-Client by Seach query.
85
+ - Feature: run Chef-Client by Search query.
82
86
 
83
87
 
84
88
  ## v0.0.2
data/Dockerfile ADDED
@@ -0,0 +1,25 @@
1
+ FROM higanworks/knife-zero-edgebase
2
+ MAINTAINER sawanoboriyu@higanworks.com
3
+
4
+ ADD .git/index /index
5
+
6
+ WORKDIR /home
7
+ RUN wget https://codeload.github.com/chef/chef/legacy.tar.gz/master
8
+ RUN tar xvzf master && mv chef-chef-* chef
9
+
10
+ WORKDIR /home/chef
11
+
12
+ RUN gem build chef.gemspec
13
+ RUN gem install -V -b chef*.gem --no-ri --no-rdoc
14
+
15
+ ADD . /home/knife-zero/
16
+ ADD integration_test/chef-repo /chef-repo/
17
+
18
+ WORKDIR /home/knife-zero
19
+
20
+ RUN gem build knife-zero.gemspec
21
+ RUN gem install -V -l knife-zero-*.gem
22
+
23
+ WORKDIR /chef-repo
24
+
25
+ CMD ["sh", "run.sh"]
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Knife-Plugin Zero
2
2
 
3
- [![Circle CI](https://circleci.com/gh/higanworks/knife-zero.svg?style=svg)](https://circleci.com/gh/higanworks/knife-zero)
3
+ - current_master: [![Circle CI](https://circleci.com/gh/higanworks/knife-zero/tree/master.svg?style=svg)](https://circleci.com/gh/higanworks/knife-zero/tree/master)
4
+ - integration_with_edge_chef: [![Circle CI](https://circleci.com/gh/higanworks/knife-zero/tree/integration_testedge.svg?style=svg)](https://circleci.com/gh/higanworks/knife-zero/tree/integration_testedge)
4
5
 
5
6
  [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/higanworks/knife-zero?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
6
7
 
@@ -8,11 +9,11 @@
8
9
  [![Stories in Ready](https://badge.waffle.io/higanworks/knife-zero.svg?label=ready&title=Ready)](http://waffle.io/higanworks/knife-zero)
9
10
  [![Stories in Progress](https://badge.waffle.io/higanworks/knife-zero.svg?label=In%20Progress&title=In%20Progress)](http://waffle.io/higanworks/knife-zero)
10
11
 
11
- Run chef-client at remote node with chef-zero(local-mode) via HTTP over SSH port fowarding.
12
+ Run chef-client at remote node with chef-zero(local-mode) via HTTP over SSH port forwarding.
12
13
 
13
14
  - It doesn't have to transport cookbooks via scp,rsync or something.
14
15
  - It can collect node object into local chef-repo.
15
- - It supports all functioanly of chef(C/S).
16
+ - It supports all functions of chef(C/S).
16
17
  - You have only to manage one chef-repo.
17
18
 
18
19
  ## Requirements
@@ -73,7 +74,7 @@ host.example.com Starting Chef Client, version 11.14.6
73
74
  host.example.com Creating a new client identity for host.example.com using the validator key.
74
75
 
75
76
 
76
- ## Resolv and sync cookbook via http over ssh tcp-forward by run-list.
77
+ ## Resolve and sync cookbook via http over ssh tcp-forward by run-list.
77
78
  host.example.com resolving cookbooks for run list: ["hogehoge::default"]
78
79
  host.example.com Synchronizing Cookbooks:
79
80
  host.example.com - hogehoge
@@ -105,7 +106,7 @@ Platform: ubuntu 12.04
105
106
  Tags:
106
107
  ```
107
108
 
108
- Seach and execute command via ssh by knife ssh.
109
+ Search and execute command via ssh by knife ssh.
109
110
 
110
111
  ```
111
112
  $ knife ssh 'hostname:*' --local-mode uptime --attribute ipaddress
@@ -181,7 +182,7 @@ host2.example.com Chef Client finished, 0/0 resources updated in 3.729471856 sec
181
182
  1. bundle init and add below.
182
183
  - `gem 'chef' `
183
184
  - `gem 'knife-zero'`
184
- - and cookbook management tool such as `Beakshelf` or `Librarian-Chef`.
185
+ - and cookbook management tool such as `Berkshelf` or `Librarian-Chef`.
185
186
  1. bundle
186
187
  e.g.) `bundle install --path vendor/bundle --binstubs`
187
188
  1. install cookbooks to `./cookbooks`. (if you need run recipe.)
@@ -197,7 +198,11 @@ See [Getting Started knife-zero with test-kitchen](https://github.com/higanworks
197
198
 
198
199
  ### Or, Try knife-zero simply with Vagrant.
199
200
 
200
- Set local_mode as default to `knfie.rb`.
201
+ > **For Your Information** :
202
+ > If only you want to try `chef-zero` or `chef-client localmode` (For instance: migrate from chef-solo), You should use [chef-zero provisioner(Vagrant)](http://docs.vagrantup.com/v2/provisioning/chef_zero.html) with vagrant.
203
+ > The knife-zero will provides similar usage with the chef-zero provisioner on vagrant, but for remote node.
204
+
205
+ Set local_mode as default to `knife.rb`.
201
206
 
202
207
  ```
203
208
  $ echo 'local_mode true' >> knife.rb
@@ -343,9 +348,9 @@ $ knife zero chef_client "name:*" -x vagrant -i ./.vagrant/machines/default/virt
343
348
  192.168.33.10 resolving cookbooks for run list: []
344
349
  ```
345
350
 
346
- ## Debug for Configration
351
+ ## Debug for Configuration
347
352
 
348
- `knife zero diagnose` shows configration from file(Such as knife.rb).
353
+ `knife zero diagnose` shows configuration from file(Such as knife.rb).
349
354
 
350
355
  ```
351
356
  $ knife zero diagnose
@@ -355,10 +360,10 @@ Chef::Config
355
360
  ---
356
361
  :local_mode: true
357
362
  :verbosity:
358
- :config_file: "/Users/sawanoboriyu/github/higanworks/knife-zero_plyglound/knife.rb"
363
+ :config_file: "/Users/sawanoboriyu/github/higanworks/knife-zero_playground/knife.rb"
359
364
  :color: true
360
365
  :log_level: :error
361
- :chef_repo_path: "/Users/sawanoboriyu/github/higanworks/knife-zero_plyglound"
366
+ :chef_repo_path: "/Users/sawanoboriyu/github/higanworks/knife-zero_playground"
362
367
  :log_location: !ruby/object:IO {}
363
368
  :chef_server_url: http://localhost:8889
364
369
  :repo_mode: everything
@@ -373,9 +378,9 @@ Knife::Config
373
378
  :format: summary
374
379
  :ssh_user: root
375
380
  :host_key_verify: true
376
- :config_file: "/Users/sawanoboriyu/github/higanworks/knife-zero_plyglound/knife.rb"
381
+ :config_file: "/Users/sawanoboriyu/github/higanworks/knife-zero_playground/knife.rb"
377
382
 
378
- Zero Boostrap Config
383
+ Zero Bootstrap Config
379
384
  ====================
380
385
  ---
381
386
  :ssh_user: root
data/circle.yml CHANGED
@@ -2,6 +2,14 @@
2
2
  machine:
3
3
  ruby:
4
4
  version: 2.1.5
5
+ services:
6
+ - docker
5
7
  test:
6
8
  override:
7
9
  - bundle exec ruby test/run_test.rb -v
10
+ deployment:
11
+ integration:
12
+ branch: integration_testedge
13
+ commands:
14
+ - docker build -t local/knife-zero .
15
+ - docker run -it local/knife-zero sh run.sh
@@ -0,0 +1,2 @@
1
+ local_mode true
2
+ chef_repo_path "."
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e
4
+
5
+ /usr/sbin/sshd -E /tmp/log -o 'LogLevel DEBUG'
6
+ knife zero diagnose
7
+ knife zero bootstrap 127.0.0.1 -N zerohost -x docker -P docker --sudo -V
8
+ knife node show zerohost
9
+ knife zero chef_client "name:zerohost" -a ipaddress -x docker -P docker --sudo -V
10
+
@@ -0,0 +1,11 @@
1
+ FROM ubuntu:15.04
2
+ MAINTAINER sawanoboriyu@higanworks.com
3
+
4
+ RUN apt-get -y update
5
+ RUN apt-get -y install sudo git build-essential ruby2.1 ruby2.1-dev openssh-server wget vim net-tools
6
+
7
+
8
+ RUN mkdir /var/run/sshd
9
+ RUN useradd -p $(perl -e'print crypt("docker", "docker")') -m docker
10
+ RUN echo '%docker ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/docker
11
+ CMD ["/bin/true"]
@@ -11,6 +11,7 @@ class Chef
11
11
  Chef::Knife::Ssh.load_deps
12
12
  end
13
13
 
14
+ ## Just ported from chef
14
15
  option :ssh_user,
15
16
  :short => "-x USERNAME",
16
17
  :long => "--ssh-user USERNAME",
@@ -51,6 +52,17 @@ class Chef
51
52
  :boolean => true,
52
53
  :default => true
53
54
 
55
+ option :use_sudo,
56
+ :long => "--sudo",
57
+ :description => "execute the chef-client via sudo",
58
+ :boolean => true
59
+
60
+ option :use_sudo_password,
61
+ :long => "--use-sudo-password",
62
+ :description => "Execute the bootstrap via sudo with password",
63
+ :boolean => false
64
+
65
+ ## Added by Knife-Zero
54
66
  option :why_run,
55
67
  :short => '-W',
56
68
  :long => '--why-run',
@@ -14,6 +14,7 @@ class Chef
14
14
 
15
15
  banner "knife zero bootstrap FQDN (options)"
16
16
 
17
+ ## Just ported from chef bootstrap
17
18
  option :chef_node_name,
18
19
  :short => "-N NAME",
19
20
  :long => "--node-name NAME",
@@ -38,23 +39,19 @@ class Chef
38
39
  :description => "Do not proxy locations for the node being bootstrapped; this option is used internally by Opscode",
39
40
  :proc => Proc.new { |np| Chef::Config[:knife][:bootstrap_no_proxy] = np }
40
41
 
41
- ## Patched
42
+ # DEPR: Remove this option in Chef 13
42
43
  option :distro,
43
44
  :short => "-d DISTRO",
44
45
  :long => "--distro DISTRO",
45
46
  :description => "Bootstrap a distro using a template",
46
47
  :default => "chef-full"
47
48
 
48
- option :use_sudo,
49
- :long => "--sudo",
50
- :description => "Execute the bootstrap via sudo",
51
- :boolean => true
52
-
53
- option :use_sudo_password,
54
- :long => "--use-sudo-password",
55
- :description => "Execute the bootstrap via sudo with password",
56
- :boolean => false
49
+ option :bootstrap_template,
50
+ :short => "-t TEMPLATE",
51
+ :long => "--bootstrap-template TEMPLATE",
52
+ :description => "Bootstrap Chef using a built-in or custom template. Set to the full path of an erb template or use one of the built-in templates."
57
53
 
54
+ # DEPR: Remove this option in Chef 13
58
55
  option :template_file,
59
56
  :long => "--template-file TEMPLATE",
60
57
  :description => "Full path to location of template to use",
@@ -113,6 +110,28 @@ class Chef
113
110
  :description => "Add options to curl when install chef-client",
114
111
  :proc => Proc.new { |co| Chef::Config[:knife][:bootstrap_curl_options] = co }
115
112
 
113
+
114
+ ## experimental: vault support
115
+ option :bootstrap_vault_file,
116
+ :long => '--bootstrap-vault-file VAULT_FILE',
117
+ :description => 'A JSON file with a list of vault(s) and item(s) to be updated'
118
+
119
+ option :bootstrap_vault_json,
120
+ :long => '--bootstrap-vault-json VAULT_JSON',
121
+ :description => 'A JSON string with the vault(s) and item(s) to be updated'
122
+
123
+ option :bootstrap_vault_item,
124
+ :long => '--bootstrap-vault-item VAULT_ITEM',
125
+ :description => 'A single vault and item to update as "vault:item"',
126
+ :proc => Proc.new { |i|
127
+ (vault, item) = i.split(/:/)
128
+ Chef::Config[:knife][:bootstrap_vault_item] ||= {}
129
+ Chef::Config[:knife][:bootstrap_vault_item][vault] ||= []
130
+ Chef::Config[:knife][:bootstrap_vault_item][vault].push(item)
131
+ Chef::Config[:knife][:bootstrap_vault_item]
132
+ }
133
+
134
+
116
135
  def knife_ssh
117
136
  begin
118
137
  ssh = Chef::Knife::BootstrapSsh.new
@@ -27,11 +27,6 @@ class Chef
27
27
  :description => "The attribute to use for opening the connection - default depends on the context",
28
28
  :proc => Proc.new { |key| Chef::Config[:knife][:ssh_attribute] = key.strip }
29
29
 
30
- option :use_sudo,
31
- :long => "--sudo",
32
- :description => "execute the chef-client via sudo",
33
- :boolean => true
34
-
35
30
  option :override_runlist,
36
31
  :short => "-o RunlistItem,RunlistItem...",
37
32
  :long => "--override-runlist RunlistItem,RunlistItem...",
@@ -34,7 +34,7 @@ class Chef
34
34
  ui.msg config.to_yaml
35
35
  ui.msg ""
36
36
 
37
- ui.msg "Zero Boostrap Config"
37
+ ui.msg "Zero Bootstrap Config"
38
38
  ui.msg "===================="
39
39
  bootstrap = Chef::Knife::ZeroBootstrap.new
40
40
  @bootstrap.merge_configs
@@ -1,6 +1,6 @@
1
1
  module Knife
2
2
  module Zero
3
- VERSION = "1.4.0"
3
+ VERSION = "1.5.0"
4
4
  MAJOR, MINOR, TINY = VERSION.split('.')
5
5
  end
6
6
  end
@@ -22,7 +22,7 @@ class TC_ZeroBootstrap < Test::Unit::TestCase
22
22
  assert_kind_of(Chef::Knife::BootstrapSsh, ssh)
23
23
  end
24
24
 
25
- sub_test_case "overwrite ssh_configration from ssh/config" do
25
+ sub_test_case "overwrite ssh_configuration from ssh/config" do
26
26
  test "overwrite port number" do
27
27
  stub(Net::SSH).configuration_for { {port: 10022} }
28
28
  ssh = @app.knife_ssh
@@ -7,11 +7,11 @@ class TC_BootstrapContext < Test::Unit::TestCase
7
7
  app = Chef::Knife::ZeroBootstrap.new
8
8
  app.merge_configs
9
9
  @bsc = Chef::Knife::Core::BootstrapContext.new(app.config, [], Chef::Config.configuration)
10
- stub(OpenSSL::PKey::RSA).new{"knfe-zerozero"}
10
+ stub(OpenSSL::PKey::RSA).new{"knife-zerozero"}
11
11
  end
12
12
 
13
13
  test "Should use aliased validation_key" do
14
- assert_equal("knfe-zerozero", @bsc.validation_key)
14
+ assert_equal("knife-zerozero", @bsc.validation_key)
15
15
  end
16
16
 
17
17
  test "Should use aliased start_chef" do
@@ -0,0 +1,43 @@
1
+ require 'chef/knife/zero_base'
2
+ require 'knife-zero/helper'
3
+
4
+ class TC_ZeroHelper < Test::Unit::TestCase
5
+ def setup
6
+ @config = Chef::Config
7
+ end
8
+
9
+ test "Should returns 18889 as zero_remote_port by default" do
10
+ assert_equal(18889, ::Knife::Zero::Helper.zero_remote_port)
11
+ end
12
+
13
+ sub_test_case "override" do
14
+ test "Should returns 10000 + chef_zero_port as zero_remote_port" do
15
+ @config[:chef_zero_port] = 2500
16
+ assert_equal(12500, ::Knife::Zero::Helper.zero_remote_port)
17
+ end
18
+
19
+ test "Should returns 10000 + knife:chef_zero_port as zero_remote_port" do
20
+ @config[:knife][:chef_zero_port] = 2500
21
+ assert_equal(12500, ::Knife::Zero::Helper.zero_remote_port)
22
+ end
23
+
24
+ def teardown
25
+ @config[:chef_zero_port] = nil
26
+ @config[:knife][:chef_zero_port] = nil
27
+ end
28
+ end
29
+
30
+ sub_test_case "force set by remote_chef_zero_port" do
31
+
32
+ test "Should returns passed remote_chef_zero_port as zero_remote_port" do
33
+ @config[:remote_chef_zero_port] = 8888
34
+ @config[:chef_zero_port] = 2500
35
+ assert_equal(8888, ::Knife::Zero::Helper.zero_remote_port)
36
+ end
37
+
38
+ def teardown
39
+ @config[:remote_chef_zero_port] = nil
40
+ @config[:chef_zero_port] = nil
41
+ end
42
+ end
43
+ end
@@ -2,6 +2,6 @@ require "knife-zero/version"
2
2
 
3
3
  class TC_Version < Test::Unit::TestCase
4
4
  test "returns version correctly" do
5
- assert_equal("1.4.0", Knife::Zero::VERSION)
5
+ assert_equal("1.5.0", Knife::Zero::VERSION)
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-zero
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sawanoboly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-07 00:00:00.000000000 Z
11
+ date: 2015-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -160,12 +160,16 @@ extra_rdoc_files: []
160
160
  files:
161
161
  - ".gitignore"
162
162
  - CHANGELOG.md
163
+ - Dockerfile
163
164
  - Gemfile
164
165
  - Guardfile
165
166
  - LICENSE.txt
166
167
  - README.md
167
168
  - Rakefile
168
169
  - circle.yml
170
+ - integration_test/chef-repo/knife.rb
171
+ - integration_test/chef-repo/run.sh
172
+ - integration_test/pre/Dockerfile
169
173
  - knife-zero.gemspec
170
174
  - lib/chef/knife/zero_base.rb
171
175
  - lib/chef/knife/zero_bootstrap.rb
@@ -179,6 +183,7 @@ files:
179
183
  - test/chef/knife/test_zero_bootstrap.rb
180
184
  - test/chef/knife/test_zero_chef_client.rb
181
185
  - test/knife-zero/core/test_bootstrap_context.rb
186
+ - test/knife-zero/core/test_zerohelper.rb
182
187
  - test/knife-zero/test_bootstrap_ssh.rb
183
188
  - test/knife-zero/test_versioin.rb
184
189
  - test/run_test.rb
@@ -202,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
207
  version: '0'
203
208
  requirements: []
204
209
  rubyforge_project:
205
- rubygems_version: 2.2.2
210
+ rubygems_version: 2.4.6
206
211
  signing_key:
207
212
  specification_version: 4
208
213
  summary: Run chef-client at remote node with chef-zero(local-mode) via HTTP over SSH
@@ -211,6 +216,7 @@ test_files:
211
216
  - test/chef/knife/test_zero_bootstrap.rb
212
217
  - test/chef/knife/test_zero_chef_client.rb
213
218
  - test/knife-zero/core/test_bootstrap_context.rb
219
+ - test/knife-zero/core/test_zerohelper.rb
214
220
  - test/knife-zero/test_bootstrap_ssh.rb
215
221
  - test/knife-zero/test_versioin.rb
216
222
  - test/run_test.rb