vagrant-cookbook-fetcher 0.1.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|