vagrant-flow 1.0.6 → 1.0.7

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: 46d12223aa802b6bc1cb214ed04de5b5663f78c5
4
- data.tar.gz: c0eed0a83ea084a0df6d2b10e44a209205a715d8
3
+ metadata.gz: 987d348d2383b329ac2e6d646ffb9a84da357da2
4
+ data.tar.gz: 11aaca9f68aa6db12f372e3eb92c29c1c8fd6395
5
5
  SHA512:
6
- metadata.gz: 4e1f371af3f7581d71fdb5c2cb597ad6063375eeb05df6381fbfe2ebbf713a77284c06d6c373e63d3f215de4ebfe35e85e9098c2fd441ee0892bc565842b05cc
7
- data.tar.gz: d7cd6f083e7bb8f7a9e75ab4a2d5a5cb99baca2b081453fb026d2e3076b00ca10ab131dc2fbb7877c5492fcd65f5a0bb0c1589c4b69de8edb61a9bf9ff179b07
6
+ metadata.gz: 4c335c7777a4c0f1684b3dbda635c78b14877aa679754d2fffdc2a672c9f9285d57611ea019090597165ff0cbc136e4e15d8c8d75e5893700a3009d064170aa5
7
+ data.tar.gz: 21e55b67a680606edccfbe4cb57e7dbf8735eac405117de095fadeae97f0e46b443c3f7522e7955b7dda7db11d63ac7a4bbb58452760b691d18b39e79cd3269e
data/README.md CHANGED
@@ -24,18 +24,66 @@ Or install it yourself as:
24
24
 
25
25
  ## Usage
26
26
  ```
27
+ Usage: vagrant ansible-inventory [-hgpq]
28
+ This plugin looks for groupconfig.yml as the default configuration
29
+ Do not use -p and -g options together!
30
+
31
+ -g, --group_config_file FILEPATH (Optional) YAML file containing group config
32
+ -p, --vagrantfileparse (Optional) Read in the VAGRANTFILE's ansible group config
33
+ -q, --quiet (Optional) Suppress output to STDOUT and STDERR
34
+ -h, --help (Optional) Print this help
35
+ ```
36
+
37
+ ## Example usages
38
+ This will look for a file in the pwd named groupconfig.yml and attempt to make the inventory
39
+ ```
40
+ vagrant ansible-inventory
41
+ ```
42
+
43
+
44
+
45
+ This will look for a file in the pwd named myOwnGroupConfig.yml and attempt to make the inventory
46
+ ```
47
+ vagrant ansible-inventory -g myOwnGroupConfig.yml
48
+ ```
49
+
50
+
51
+
52
+ This will parse the vagrant file for ansible group configs
53
+ ```
54
+ vagrant ansible-inventory -p
55
+ ```
56
+
57
+
58
+
59
+
60
+
61
+ ## Use case
62
+ ```
27
63
  #Bring up your vagrant machines
28
64
  vagrant up
29
- #Run ansible inventory
65
+ #Run ansible inventory (this assumes the file groupconfig.yml exists)
30
66
  vagrant ansible-inventory
31
67
  #point ansible-playbook to the generated vagrant-flow_ansible_inventory, and point them to whatever playbook you'd like
32
68
  ansible-playbook -i path/to/vagrant-flow_ansible_inventory my_playbook.yml
33
69
  ```
34
70
  ## Usage Expectations
71
+ #### Don't mix the -p and -g options. Unexpected things will happen.
35
72
 
36
- This plugin expects your vagrantfile to contain a configuration to define groups for all your VMs.
73
+ Example groupconfig.yml file (for use with no optional command line arguments or by pointing to non-default file with -g option)
74
+ ```
75
+ ---
76
+ common:children:
77
+ - testgroup
78
+ - servergroup
79
+ testgroup:
80
+ - testbox
81
+ servergroup:
82
+ - server1
83
+ - server2
84
+ ```
37
85
 
38
- Example VAGRANTFILE excerpt:
86
+ Example VAGRANTFILE excerpt (for use with -p option):
39
87
  ```
40
88
  config.vm.provision "ansible" do |ansible|
41
89
  #ansible.playbook is required, but emptyplaybook.yml can do nothing,
@@ -49,7 +97,7 @@ config.vm.provision "ansible" do |ansible|
49
97
  end
50
98
  ```
51
99
 
52
- Example playbook.yml:
100
+ Example playbook.yml to use after ansible-inventory has run with command `ansible-playbook -i vagrant-flow_ansible_inventory playbook.yml`:
53
101
  ```
54
102
  ---
55
103
  #Configures the groups defined in common:children
@@ -0,0 +1,26 @@
1
+ require 'yaml'
2
+
3
+
4
+
5
+ ###This shows how to make a valid configuration file in YAML format for vagrant-flow to consume with the ansible-inventory command
6
+
7
+ x = {
8
+ "common:children"=>["jenkins","server"],
9
+ "jenkins"=>["jenkinsdp"],
10
+ "server"=>["sparkngin1","sparkngin2"],
11
+ }
12
+
13
+ begin
14
+ File.open('groupconfig.yml', 'w') {|f| f.write x.to_yaml }
15
+ rescue
16
+ warn "Could not write file groupconfig.yml"
17
+ end
18
+
19
+ y = YAML.load(x.to_yaml)
20
+
21
+ y.each {|key,value|
22
+ puts key
23
+ puts value
24
+ puts "\n"
25
+ }
26
+
@@ -1,5 +1,6 @@
1
1
  require 'optparse'
2
2
  require "vagrant"
3
+ require "yaml"
3
4
 
4
5
  module VagrantPlugins
5
6
  module VagrantFlow
@@ -19,28 +20,37 @@ module VagrantPlugins
19
20
  machines_configs = {}
20
21
  inventory_configs = {}
21
22
 
23
+ default_group_config_file = "groupconfig.yml"
22
24
  options = {}
23
25
  options[:destroy_on_error] = true
24
26
  options[:parallel] = false
25
27
  options[:provision_ignore_sentinel] = false
26
-
28
+ options[:quiet] = false
29
+
30
+ #Setting to read in a file other than default_group_config_File
31
+ options[:custom_config_file] = false
32
+ #Setting to parse the VAGRANTFILE's ansible group config
33
+ options[:vagrantFileAnsibleConfig] = false
34
+
35
+ #Parse option, look up OptionParser documentation
27
36
  opts = OptionParser.new do |o|
28
37
  # o.banner = "Usage: vagrant ansible-inventory [vm-name] [options] [-h]"
29
- o.banner = "Usage: vagrant ansible-inventory [-h]"
38
+ o.banner = "A NeverWinterDP technology from the Department of Badass.\n\n"+
39
+ "Usage: vagrant ansible-inventory [-hgpq]\nThis looks for groupconfig.yml as the default configuration\n"+
40
+ "Do not use -p and -g options together!"
30
41
  o.separator ""
31
-
32
- # Don't use either of these, just keeping them here as examples of what options are possible
33
- #o.on("--provision-with x,y,z", Array,
34
- # "Enable only certain provisioners, by type.") do |list|
35
- # options[:provision_types] = list.map { |type| type.to_sym }
36
- #end
42
+ o.on("-g", "--group_config_file FILEPATH", "(Optional) YAML file containing group config") do |f|
43
+ options[:custom_config_file] = f
44
+ end
45
+
46
+ o.on("-p", "--vagrantfileparse", "(Optional) Read in the VAGRANTFILE's ansible group config") do |f|
47
+ options[:vagrantFileAnsibleConfig] = true
48
+ end
49
+
50
+ o.on("-q", "--quiet", "(Optional) Suppress output to STDOUT and STDERR") do |f|
51
+ options[:quiet] = true
52
+ end
37
53
 
38
- # This option isn't used.
39
- #o.on("--[no-]parallel",
40
- # "Enable or disable parallelism if provider supports it.") do |parallel|
41
- # options[:parallel] = parallel
42
- #end
43
-
44
54
  end
45
55
 
46
56
  # Parse the options # Builtin from the Command Class
@@ -48,6 +58,8 @@ module VagrantPlugins
48
58
  # Automatically detects -h for help
49
59
  argv = parse_options(opts)
50
60
  return if !argv
61
+
62
+
51
63
 
52
64
  # The following are already setup by the parent class
53
65
  # @env
@@ -56,10 +68,11 @@ module VagrantPlugins
56
68
 
57
69
  # Go over each VM and bring it up
58
70
  @logger.debug("'ansible-inventory' created for the whole env")
59
-
60
71
 
72
+ #Initialize group_machines, the has containing group=>machinename configs
73
+ group_machines={}
61
74
 
62
- provisioners = {}
75
+ #Get info about the vagrant boxes
63
76
  with_target_vms(argv, :provider => options[:provider]) do |machine|
64
77
  # @env.ui
65
78
  # output methods: :ask, :detail, :warn, :error, :info, :output, :success
@@ -79,9 +92,6 @@ module VagrantPlugins
79
92
  }
80
93
  # Outputs to the stdout
81
94
 
82
- #The provisioning information from teh vagrant file, this will contain our defined ansible groups
83
- provisioners = machine.config.vm.provisioners
84
-
85
95
  inventory_configs = {
86
96
  :vagrant_file_dir => machine.env.root_path,
87
97
  :vagrant_flow_file => machine.env.root_path.join("vagrant-flow_ansible_inventory")
@@ -90,6 +100,43 @@ module VagrantPlugins
90
100
  machines_configs[variables[:host_key]]= variables
91
101
  end
92
102
 
103
+ #Hash containing group/machine configuration
104
+ group_machines={}
105
+ #Determine group_machines based on what config options are passed in
106
+ #Read in config from vagrantfile's ansible config
107
+ if options[:vagrantFileAnsibleConfig] == true
108
+ provisioners = []
109
+ with_target_vms(argv, :provider => options[:provider]) do |machine|
110
+ #The provisioning information from teh vagrant file, this will contain our defined ansible groups
111
+ #Concatenate all the provisioner configs together
112
+ if machine.config.vm.provisioners
113
+ provisioners.concat(machine.config.vm.provisioners)
114
+ end
115
+ end
116
+ #Since Vagrant machines will likely contain the same configs,
117
+ #Merge the config together to remove duplicate entries in our
118
+ #group/machine configuration
119
+ provisioners.each {|prov|
120
+ group_machines = group_machines.merge(prov.config.groups)
121
+ }
122
+ #Read in config from yaml file
123
+ else
124
+ #Use config option if specified
125
+ if options[:custom_config_file] != false
126
+ default_group_config_file = options[:custom_config_file]
127
+ end
128
+ begin
129
+ #Load YAML
130
+ group_machines = YAML.load_file(default_group_config_file)
131
+ rescue
132
+ #Give warning if no file could be found
133
+ if not options[:quiet]
134
+ warn "Could not open file: "+default_group_config_file.to_s
135
+ end
136
+ end
137
+ end
138
+
139
+
93
140
 
94
141
  # Outputs to the stdout
95
142
  # @env.ui.info(machine.name)
@@ -120,33 +167,43 @@ module VagrantPlugins
120
167
  #PP.pp(outputs)
121
168
  #puts "\n\n"
122
169
 
170
+
171
+
123
172
  inventory_configs[:vagrant_flow_file].open('w') do |file|
124
173
  header_txt="# Generated by vagrant-flow, part of NeverwinterDP\n\n"
125
- safe_puts(header_txt)
174
+ if not options[:quiet]
175
+ safe_puts(header_txt)
176
+ end
126
177
  file.write(header_txt)
127
178
 
128
179
  #Now we maps from our VAGRANTFILE defined groups in our provisioners.config.groups
129
180
  #To our configuration strings we got from outputs
130
- provisioners.each do |prov|
131
- prov.config.groups.each do |groupname,machines|
181
+ group_machines.each do |groupname,machines|
182
+ if not options[:quiet]
132
183
  puts "["+groupname+"]\n"
133
- file.write "["+groupname+"]\n"
134
- machines.each do |machinename|
135
- #if we match :children, then we have an ansible config that's
136
- #pointing to another group, not a specific machine
137
- if /:children/.match(groupname)
184
+ end
185
+ file.write "["+groupname+"]\n"
186
+ machines.each do |machinename|
187
+ #if we match :children, then we have an ansible config that's
188
+ #pointing to another group, not a specific machine
189
+ if /:children/.match(groupname)
190
+ if not options[:quiet]
138
191
  puts machinename
139
- file.write machinename+"\n"
140
- else
192
+ end
193
+ file.write machinename+"\n"
194
+ else
195
+ if not options[:quiet]
141
196
  puts outputs[machinename.to_sym]+"\n"
142
- file.write outputs[machinename.to_sym]+"\n"
143
197
  end
198
+ file.write outputs[machinename.to_sym]+"\n"
144
199
  end
200
+ end
201
+ if not options[:quiet]
145
202
  puts "\n"
146
- file.write "\n"
147
- end
148
- end
149
- end
203
+ end
204
+ file.write "\n"
205
+ end
206
+ end
150
207
  0
151
208
  end # End Execute
152
209
 
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module VagrantFlow
3
- VERSION = "1.0.6"
3
+ VERSION = "1.0.7"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-flow
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Morin
@@ -50,6 +50,7 @@ files:
50
50
  - NEVERWINTERDP
51
51
  - README.md
52
52
  - Rakefile
53
+ - create_sample_ansible-inventory_input-file.rb
53
54
  - lib/vagrant-flow.rb
54
55
  - lib/vagrant-flow/command.rb
55
56
  - lib/vagrant-flow/plugin.rb