vagrant-cookbook-fetcher 0.1.0 → 0.2.1
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 +10 -8
- data/lib/vagrant-cookbook-fetcher/action_set_chef_paths.rb +24 -20
- data/lib/vagrant-cookbook-fetcher/command.rb +13 -5
- data/lib/vagrant-cookbook-fetcher/config.rb +11 -5
- data/lib/vagrant-cookbook-fetcher/plugin.rb +2 -2
- data/lib/vagrant-cookbook-fetcher/version.rb +1 -1
- data/lib/vagrant-cookbook-fetcher.rb +2 -3
- metadata +7 -8
- data/lib/vagrant-cookbook-fetcher/action.rb +0 -28
data/README.md
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
vagrant-cookbook-fetcher
|
2
2
|
========================
|
3
3
|
|
4
|
+
DEPRECATED - you should really use something like vagrant-berkshelf. This thing came from a darker time.
|
5
|
+
|
4
6
|
A Vagrant plugin to automatically fetch cookbooks, roles, and such whenever you run vagrant provision, up or start.
|
5
7
|
|
6
8
|
## Compatibility
|
7
9
|
|
8
10
|
For vagrant 1.0.x, use vagrant-cookbook-fetcher 0.0.x .
|
9
11
|
For vagrant 1.1.x, use vagrant-cookbook-fetcher 0.1.x . It may or may not work.
|
10
|
-
For vagrant 1.2.x
|
12
|
+
For vagrant 1.2.x+, use vagrant-cookbook-fetcher 0.1.+ .
|
11
13
|
|
12
14
|
## Behavior
|
13
15
|
|
@@ -43,11 +45,11 @@ In addition, a new command is added, 'vagrant checkout', which simply runs the c
|
|
43
45
|
git,https://github.com/opscode-cookbooks/php.git,opscode-php/cookbooks/php,master,NONE
|
44
46
|
|
45
47
|
The fields are: VCS,repo address, directory name, branch, credentials
|
46
|
-
* VCS may be either 'git' or
|
48
|
+
* VCS may be either 'git' or nothing else, too bad.
|
47
49
|
* repo address is the identifier of the repository from which to obtain the checkout.
|
48
50
|
* directory name is the path under <vagrant-root>/checkouts to clone/checkout into. It may contain slashes.
|
49
51
|
* branch is the name of the git branch. Leave blank for svn (use repo address for svn branching)
|
50
|
-
*
|
52
|
+
* credentials column is unused. Zing!
|
51
53
|
|
52
54
|
## Configuration
|
53
55
|
|
@@ -65,11 +67,11 @@ Default: false
|
|
65
67
|
|
66
68
|
If true, no checkout will be be run. This can be useful if you're provisioning frequently and making local changes to your recipes; if you use git rebase, your build will break whenever you have a local change and an incoming change at the same time.
|
67
69
|
|
68
|
-
|
70
|
+
If vagrant-berkshelf is detected, this plugin will disable itself, as you should be using vagrant-berkshelf anyway.
|
69
71
|
|
70
72
|
## TODO
|
71
73
|
|
72
|
-
*
|
73
|
-
|
74
|
-
|
75
|
-
|
74
|
+
* Move everyone over to vagrant-berkshelf or PolicyFiles or something.
|
75
|
+
|
76
|
+
|
77
|
+
|
@@ -10,31 +10,35 @@ module VagrantPlugins
|
|
10
10
|
# there has got to be a better way
|
11
11
|
provisioners_list = env[:machine].config.vm.provisioners
|
12
12
|
chef_solo = provisioners_list.find { |p| p.name === :chef_solo }
|
13
|
+
vcf_config = env[:machine].config.cookbook_fetcher
|
13
14
|
|
14
15
|
if chef_solo then
|
15
|
-
solo_cfg = chef_solo.config
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
unless vcf_config.disable then
|
18
|
+
solo_cfg = chef_solo.config
|
19
|
+
|
20
|
+
Dir.chdir(env[:root_path]) do
|
21
|
+
# In Vagrant 1.2.x+, these are all arrays
|
22
|
+
solo_cfg.roles_path.push [:host, "combined/roles"]
|
23
|
+
solo_cfg.data_bags_path.push [:host, "combined/data_bags"]
|
24
|
+
|
25
|
+
# The first time we fetch cookbooks, we store the cookbook order in a file.
|
26
|
+
unless File.exists?(".cookbook-order") then
|
27
|
+
env[:ui].error "Cookbook Fetcher checkout could find not a .cookbook-order file. You need to run provision with checkout enabled at least once (or else disable cookbook fetcher)."
|
28
|
+
return
|
29
|
+
end
|
30
|
+
|
31
|
+
# For cookbook path, Vagrant defaults to this:
|
32
|
+
# [[:host, "cookbooks"], [:vm, "cookbooks"]]
|
33
|
+
# But we're overriding that.
|
34
|
+
solo_cfg.cookbooks_path = []
|
35
|
+
|
36
|
+
# Read from filesystem
|
37
|
+
IO.readlines(".cookbook-order").each do |line|
|
38
|
+
solo_cfg.cookbooks_path.push [ :host, line.chomp ]
|
39
|
+
end
|
21
40
|
|
22
|
-
# The first time we fetch cookbooks, we store the cookbook order in a file.
|
23
|
-
unless File.exists?(".cookbook-order") then
|
24
|
-
env[:ui].error "Cookbook Fetcher checkout could find not a .cookbook-order file. You need to run provision with checkout enabled at least once (or else disable cookbook fetcher)."
|
25
|
-
return
|
26
41
|
end
|
27
|
-
|
28
|
-
# For cookbook path, Vagrant defaults to this:
|
29
|
-
# [[:host, "cookbooks"], [:vm, "cookbooks"]]
|
30
|
-
# But we're overriding that.
|
31
|
-
solo_cfg.cookbooks_path = []
|
32
|
-
|
33
|
-
# Read from filesystem
|
34
|
-
IO.readlines(".cookbook-order").each do |line|
|
35
|
-
solo_cfg.cookbooks_path.push [ :host, line.chomp ]
|
36
|
-
end
|
37
|
-
|
38
42
|
end
|
39
43
|
end
|
40
44
|
|
@@ -1,13 +1,21 @@
|
|
1
1
|
require_relative 'guts'
|
2
|
+
|
2
3
|
module VagrantPlugins
|
3
4
|
module CookbookFetcher
|
4
5
|
class CheckoutCommand < Vagrant.plugin("2", "command")
|
5
6
|
def execute
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
|
8
|
+
# Oddly, under vagrant ~ 1.4.1, @argv is ['--'].
|
9
|
+
# Disappearred by 1.7.2
|
10
|
+
scrubbed_args = @argv.reject {|e| e == '--' }
|
11
|
+
with_target_vms(scrubbed_args) do |machine|
|
12
|
+
|
13
|
+
CookbookFetcher.perform_fetch(
|
14
|
+
:url => machine.config.cookbook_fetcher.url,
|
15
|
+
:logger => @env.ui,
|
16
|
+
:path => @env.root_path
|
17
|
+
)
|
18
|
+
end
|
11
19
|
end
|
12
20
|
end
|
13
21
|
end
|
@@ -11,15 +11,21 @@ module VagrantPlugins
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def finalize!
|
14
|
-
|
14
|
+
if Vagrant.has_plugin?('vagrant-berkshelf')
|
15
|
+
# TODO: would ideally detect whether berkshelf is actually enabled
|
16
|
+
# TODO: this ui call seems to alkways get swallowed
|
17
|
+
ui.info('vagrant-berkshelf detected, disabling vagrant-cookbook-fetcher')
|
18
|
+
@disable = true
|
19
|
+
else
|
20
|
+
@disable = false if @disable == UNSET_VALUE
|
21
|
+
end
|
15
22
|
end
|
16
23
|
|
17
24
|
def validate(machine)
|
18
25
|
errors = []
|
19
|
-
|
20
|
-
if
|
21
|
-
|
22
|
-
end
|
26
|
+
if @url == UNSET_VALUE
|
27
|
+
# Disable vagrant cookbook fetcher if we don't specify a URL
|
28
|
+
@disable = true
|
23
29
|
end
|
24
30
|
|
25
31
|
{ 'Cookbook Fetcher' => errors }
|
@@ -8,10 +8,10 @@ module VagrantPlugins
|
|
8
8
|
Config
|
9
9
|
end
|
10
10
|
|
11
|
-
# We want to act on 'up' and 'provision'
|
12
11
|
[
|
13
12
|
:machine_action_up,
|
14
|
-
:machine_action_provision
|
13
|
+
:machine_action_provision,
|
14
|
+
:machine_action_reload,
|
15
15
|
].each do |chain|
|
16
16
|
|
17
17
|
# This hook performs the actual fetch
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module VagrantPlugins
|
2
2
|
module CookbookFetcher
|
3
3
|
NAME = "vagrant-cookbook-fetcher"
|
4
|
-
VERSION = "0.1
|
4
|
+
VERSION = "0.2.1"
|
5
5
|
AUTHOR = "Clinton Wolfe"
|
6
6
|
AUTHOR_EMAIL = "clintoncwolfe [at] gmail [dot] com"
|
7
7
|
SUMMARY = "Fetch your Chef cookbooks whenever you provision"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-cookbook-fetcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2015-01-13 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Fetch your Chef cookbooks whenever you provision
|
15
15
|
email: clintoncwolfe [at] gmail [dot] com
|
@@ -18,14 +18,13 @@ extensions: []
|
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
20
|
- README.md
|
21
|
-
- lib/vagrant-cookbook-fetcher/guts.rb
|
22
|
-
- lib/vagrant-cookbook-fetcher/command.rb
|
23
|
-
- lib/vagrant-cookbook-fetcher/action.rb
|
24
|
-
- lib/vagrant-cookbook-fetcher/action_fetch_cookbooks.rb
|
25
21
|
- lib/vagrant-cookbook-fetcher/config.rb
|
26
|
-
- lib/vagrant-cookbook-fetcher/
|
22
|
+
- lib/vagrant-cookbook-fetcher/action_fetch_cookbooks.rb
|
23
|
+
- lib/vagrant-cookbook-fetcher/command.rb
|
27
24
|
- lib/vagrant-cookbook-fetcher/version.rb
|
25
|
+
- lib/vagrant-cookbook-fetcher/guts.rb
|
28
26
|
- lib/vagrant-cookbook-fetcher/action_set_chef_paths.rb
|
27
|
+
- lib/vagrant-cookbook-fetcher/plugin.rb
|
29
28
|
- lib/vagrant-cookbook-fetcher.rb
|
30
29
|
homepage: http://github.com/clintoncwolfe/vagrant-cookbook-fetcher
|
31
30
|
licenses: []
|
@@ -47,7 +46,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
47
46
|
version: '0'
|
48
47
|
requirements: []
|
49
48
|
rubyforge_project: vagrant-cookbook-fetcher
|
50
|
-
rubygems_version: 1.8.
|
49
|
+
rubygems_version: 1.8.23
|
51
50
|
signing_key:
|
52
51
|
specification_version: 3
|
53
52
|
summary: Whenever you run start, up, or provision, this plugin will dynamically fetch
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require "vagrant/action/builder"
|
2
|
-
|
3
|
-
module VagrantPlugins
|
4
|
-
module CookbookFetcher
|
5
|
-
module Action
|
6
|
-
include Vagrant::Action::Builtin
|
7
|
-
|
8
|
-
autoload :DetectCheckoutDisabled, File.expand_path("../action/detect_checkout_disabled", __FILE__)
|
9
|
-
autoload :FetchCookbooks, File.expand_path("../action/fetch_cookbooks", __FILE__)
|
10
|
-
autoload :UpdateLinks, File.expand_path("../action/update_links", __FILE__)
|
11
|
-
autoload :ConfigureChef, File.expand_path("../action/configure_chef", __FILE__)
|
12
|
-
|
13
|
-
def self.run_checkout
|
14
|
-
@run_checkout ||= ::Vagrant::Action::Builder.new.tap do |b|
|
15
|
-
b.use ConfigValidate
|
16
|
-
b.use Call, DetectCheckoutDisabled do |env1, b2|
|
17
|
-
if env1[:checkout_disabled]
|
18
|
-
b2.use FetchCookbooks
|
19
|
-
b2.use UpdateLinks
|
20
|
-
end
|
21
|
-
end
|
22
|
-
b.use ConfigureChef
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|