knife-vagrant 0.0.3 → 0.0.4
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/README.md +21 -10
- data/lib/chef/knife/vagrant_test.rb +14 -5
- metadata +1 -1
data/README.md
CHANGED
@@ -24,24 +24,35 @@ Usage
|
|
24
24
|
knife vagrant test (options)
|
25
25
|
|
26
26
|
-b, --box BOX Name of vagrant box to be provisioned
|
27
|
-
|
28
27
|
-U, --box-url URL URL of pre-packaged vbox template. Can be a local path or an HTTP URL. Defaults to ./package.box
|
29
|
-
|
30
28
|
-l, --chef-loglevel LEVEL Logging level for the chef-client process that runs inside the provisioned VM. Default is INFO
|
31
|
-
|
29
|
+
-s, --server-url URL Chef Server URL
|
30
|
+
-k, --key KEY API Client Key
|
31
|
+
--[no-]color Use colored output, defaults to enabled
|
32
|
+
-c, --config CONFIG The configuration file to use
|
33
|
+
--defaults Accept default values for all questions
|
32
34
|
-x, --destroy Destroy vagrant box and delete chef node/client when finished
|
33
|
-
|
35
|
+
-d, --disable-editing Do not open EDITOR, just accept the data as is
|
36
|
+
-e, --editor EDITOR Set the editor to use for interactive commands
|
34
37
|
-E, --environment ENVIRONMENT Set the Chef environment
|
35
|
-
|
38
|
+
-F, --format FORMAT Which format to use for output
|
36
39
|
-H, --hostname HOSTNAME Hostname to be set as hostname on vagrant box when provisioned
|
37
|
-
|
38
40
|
-m, --memsize MEMORY Amount of RAM to allocate to provisioned VM, in MB. Defaults to 1024
|
39
|
-
|
40
|
-
-
|
41
|
-
|
41
|
+
-u, --user USER API Client Username
|
42
|
+
-p, --port-forward PORTS Port forwarding. Host port, VM port separated by a colon. E.G. to forward 80 on the
|
43
|
+
host machine to 8080 on the VM, -p 80:8080.
|
44
|
+
To list multiple forwards separate with a comma, e.g. "-p 80:8080,22:2222"
|
45
|
+
--print-after Show the data after a destructive operation
|
46
|
+
-D, --vagrant-dir PATH Path to vagrant project directory. Defaults to cwd (/Users/mgarrett/vagrant) if not specified
|
42
47
|
-r, --vagrant-run-list RUN_LIST Comma separated list of roles/recipes to apply
|
43
|
-
|
48
|
+
-V, --verbose More verbose output. Use twice for max verbosity
|
49
|
+
-v, --version Show chef version
|
44
50
|
-y, --yes Say yes to all prompts for confirmation
|
51
|
+
-h, --help Show this message
|
52
|
+
|
53
|
+
#### Example
|
54
|
+
|
55
|
+
knife vagrant test -b base -H vagrant-mgarrett01 -r role[vagrant] -m 2048 -p 22:2222,8080:8080 -b box64 -U http://files.vagrantup.com/lucid64.box -xy
|
45
56
|
|
46
57
|
Disclaimer
|
47
58
|
-------------------
|
@@ -14,14 +14,19 @@ module KnifePlugins
|
|
14
14
|
require 'chef/node'
|
15
15
|
require 'chef/api_client'
|
16
16
|
end
|
17
|
+
|
18
|
+
option :port_forward,
|
19
|
+
:short => '-p PORTS',
|
20
|
+
:long => '--port-forward PORTS',
|
21
|
+
:description => "Port forwarding. Host port, VM port separated by a colon. E.G. to forward 80 on the host machine to 8080 on the VM, -p 80:8080. To list multiple forwards separate with a comma, e.g. \"-p 80:8080,22:2222\"",
|
22
|
+
:proc => lambda { |o| Hash[o.split(/,/).collect { |a| a.split(/:/) }] },
|
23
|
+
:default => {}
|
17
24
|
|
18
|
-
# Default is nil here because if :cwd passed to the Vagrant::Environment object is nil,
|
19
|
-
# it defaults to Dir.pwd, which is the cwd of the running process.
|
20
25
|
option :vagrant_dir,
|
21
26
|
:short => '-D PATH',
|
22
27
|
:long => '--vagrant-dir PATH',
|
23
28
|
:description => "Path to vagrant project directory. Defaults to cwd (#{Dir.pwd}) if not specified",
|
24
|
-
:default =>
|
29
|
+
:default => Dir.pwd
|
25
30
|
|
26
31
|
option :vagrant_run_list,
|
27
32
|
:short => "-r RUN_LIST",
|
@@ -71,11 +76,15 @@ module KnifePlugins
|
|
71
76
|
runlist.collect { |i| "\"#{i}\"" }.join(",\n")
|
72
77
|
end
|
73
78
|
|
79
|
+
def build_port_forwards(ports)
|
80
|
+
ports.collect { |k, v| "config.vm.forward_port(#{k}, #{v})" }.join("\n")
|
81
|
+
end
|
82
|
+
|
74
83
|
# TODO: see if there's a way to pass this whole thing in as an object or hash or something, instead of writing a file to disk.
|
75
84
|
def build_vagrantfile
|
76
85
|
file = <<-EOF
|
77
86
|
Vagrant::Config.run do |config|
|
78
|
-
config
|
87
|
+
#{build_port_forwards(config[:port_forward])}
|
79
88
|
config.vm.box = "#{config[:box]}"
|
80
89
|
config.vm.host_name = "#{config[:hostname]}"
|
81
90
|
config.vm.customize [ "modifyvm", :id, "--memory", #{config[:memsize]} ]
|
@@ -120,9 +129,9 @@ module KnifePlugins
|
|
120
129
|
ensure
|
121
130
|
if config[:destroy]
|
122
131
|
ui.confirm("Destroy vagrant box #{config[:box]} and delete chef node and client")
|
123
|
-
config[:yes] = true
|
124
132
|
args = %w[ destroy --force ]
|
125
133
|
@vagrant_env.cli(args)
|
134
|
+
config[:yes]
|
126
135
|
delete_object(Chef::Node, config[:hostname])
|
127
136
|
delete_object(Chef::ApiClient, config[:hostname])
|
128
137
|
end
|