vagrant-compose 0.7.1 → 0.7.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/doc/declarative.md +41 -6
- data/doc/programmatic.md +17 -5
- data/lib/vagrant/compose/config.rb +0 -2
- data/lib/vagrant/compose/declarative/cluster.rb +11 -5
- data/lib/vagrant/compose/programmatic/cluster.rb +15 -7
- data/lib/vagrant/compose/version.rb +1 -1
- data/provisioning/group_vars/all.yml +2 -0
- data/provisioning/group_vars/kb8-master.yml +2 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c6ecc542370d381b4e4636b64a51eb34cb90d98
|
4
|
+
data.tar.gz: f7846bf3c0d2956c29cea6faf68a767a2bb6ffe0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25546d557103418fe05a94b315c98b56e09c05bfebbe1c8d3117110d82604bca6f2a9b7722fd2244156372c1fbbe975125036ba1bfe592eb5f698ff602ec8000
|
7
|
+
data.tar.gz: 62d8daf320048e2d101222d6ddb49faa0498d258d589b4ff2309fb5da4db6686dc5474487cdf89894439d993134b12b695a2a2eaa997d28580d52faf9ddb1425
|
data/CHANGELOG.md
CHANGED
@@ -40,3 +40,9 @@ ansible_group_vars_path and ansible_host_vars_path are not supported anymore
|
|
40
40
|
|
41
41
|
* Minor fix
|
42
42
|
|
43
|
+
# 0.7.2 (November 16, 2016)
|
44
|
+
|
45
|
+
* issues #11 Allow management of Ansible vars for all hosts
|
46
|
+
* issues #9 Create group_vars and host_vars directory only if necessary
|
47
|
+
|
48
|
+
* breacking change: custom group of groups all_groups:children removed. Insteal use all (automatically created by ansible)
|
data/doc/declarative.md
CHANGED
@@ -295,9 +295,9 @@ kubernetes:
|
|
295
295
|
...
|
296
296
|
...
|
297
297
|
ansible_group_vars:
|
298
|
-
etcd
|
298
|
+
etcd:
|
299
299
|
var1: ...
|
300
|
-
docker
|
300
|
+
docker:
|
301
301
|
var2: ...
|
302
302
|
var3: ...
|
303
303
|
...
|
@@ -308,6 +308,17 @@ Group vars can be set to literal value or to Jinja2 value generators, that will
|
|
308
308
|
- **context_vars** see below
|
309
309
|
- **nodes**, list of nodes in the ansible_group to which the group_vars belong
|
310
310
|
|
311
|
+
Additionally it is possible to set variables for all groups/all hosts, by setting vars for the pre-defined `all` group of groups:
|
312
|
+
|
313
|
+
```yaml
|
314
|
+
kubernetes:
|
315
|
+
...
|
316
|
+
ansible_group_vars:
|
317
|
+
all:
|
318
|
+
var1: ...
|
319
|
+
...
|
320
|
+
```
|
321
|
+
|
311
322
|
Ansible group vars will be stored into yaml files saved into `{cluster.ansible_playbook_path}\group_vars` folder.
|
312
323
|
|
313
324
|
The variable `cluster.ansible_playbook_path` defaults to the current directory (the directory of the Vagrantfile) + `/provisioning`; this value can be changed like any other cluster attributes (see Defining cluster & cluster attributes).
|
@@ -384,18 +395,42 @@ Context vars can be set to literal value or to Jinja2 value generators, that wil
|
|
384
395
|
|
385
396
|
- nodes, list of nodes in the ansible_group to which the group_vars belong
|
386
397
|
|
387
|
-
|
388
398
|
> Context_vars generator are always executed before group_vars and host_vars generators; the resulting context, is given in input to group_vars and host_vars generators.
|
389
399
|
|
400
|
+
> In addition to context vars for groups, it is possible to create context_vars for all groups/all hosts, by setting vars for the pre-defined `all` group of groups; in this case, intuitively, the list of nodes whitin the context contains all the nodes.
|
401
|
+
|
390
402
|
Then, you can use the above context var when generating group_vars for host vars.
|
391
403
|
|
404
|
+
```yaml
|
405
|
+
kubernetes:
|
406
|
+
box: centos/7
|
407
|
+
master:
|
408
|
+
...
|
409
|
+
ansible_groups:
|
410
|
+
- kb8-master
|
411
|
+
minions:
|
412
|
+
...
|
413
|
+
ansible_groups:
|
414
|
+
- kb8-minions
|
415
|
+
|
416
|
+
ansible_context_vars:
|
417
|
+
all:
|
418
|
+
var0: "{{ nodes | count }}"
|
419
|
+
kb8-master:
|
420
|
+
var1: "{{ nodes | count }}"
|
421
|
+
|
422
|
+
ansible_group_vars:
|
423
|
+
all:
|
424
|
+
var0_from_context: "{{ context['var0'] }}"
|
425
|
+
kb8-master:
|
426
|
+
var1_from_context: "{{ context['var1'] }}"
|
427
|
+
```
|
428
|
+
|
392
429
|
### Group of groups
|
393
430
|
|
394
431
|
A useful ansible inventory feature is [group of groups](http://docs.ansible.com/ansible/intro_inventory.html#hosts-and-groups).
|
395
432
|
|
396
|
-
By default
|
397
|
-
- you cannot rename all_groups
|
398
|
-
- you cannot exclude any ansible group from all_groups.
|
433
|
+
By default ansible has a group named `[all]` with all nodes in the cluster.
|
399
434
|
|
400
435
|
If you need higher control on groups of groups you can simply add a new item to the variable `config.cluster.ansible_groups` before creating nodes.
|
401
436
|
|
data/doc/programmatic.md
CHANGED
@@ -302,9 +302,9 @@ end
|
|
302
302
|
|
303
303
|
As you can see, `consul` and `docker` ansible_groups now include both nodes from `consul-agent` and `load-balancer` node set; vice versa, other groups like `registrator`, `consul-template`, `nginx` contain node only from one of the two nodes set.
|
304
304
|
|
305
|
-
Ansible playbook can leverage on groups for providing machines with the required software stacks.
|
305
|
+
Ansible playbook can additionally leverage on groups for providing machines with the required software stacks.
|
306
306
|
|
307
|
-
NB. you can see resulting ansible_groups by using `debug` command with `verbose` equal to `true`.
|
307
|
+
> NB. you can see resulting ansible_groups by using `debug` command with `verbose` equal to `true`.
|
308
308
|
|
309
309
|
### Defining group vars
|
310
310
|
|
@@ -329,6 +329,18 @@ config.cluster.compose('test') do |c|
|
|
329
329
|
end
|
330
330
|
```
|
331
331
|
|
332
|
+
Additionally, it is possible to set variables for all groups/all hosts, by setting vars for the pre-defined `all` group of groups:
|
333
|
+
|
334
|
+
``` ruby
|
335
|
+
config.cluster.compose('test') do |c|
|
336
|
+
...
|
337
|
+
c.ansible_group_vars['all'] = lambda { |context, nodes|
|
338
|
+
return { 'var0' => nodes.length }
|
339
|
+
}
|
340
|
+
...
|
341
|
+
end
|
342
|
+
```
|
343
|
+
|
332
344
|
Ansible group vars will be stored into yaml files saved into `{cluster.ansible_playbook_path}\group_vars` folder.
|
333
345
|
|
334
346
|
The variable `cluster.ansible_playbook_path` defaults to the current directory (the directory of the Vagrantfile) + `/provisioning`; this value can be changed like any other cluster attributes (see Defining cluster attributes).
|
@@ -379,6 +391,8 @@ end
|
|
379
391
|
|
380
392
|
> Context_vars generator are always executed before group_vars and host_vars generators; the resulting context, is given in input to group_vars and host_vars generators.
|
381
393
|
|
394
|
+
> In addition to context vars for groups, it is possible to create context_vars for all groups/all hosts, by setting vars for the pre-defined `all` group of groups; in this case, intuitively, the list of nodes whitin the context contains all the nodes.
|
395
|
+
|
382
396
|
Then, you can use the above context var when generating group_vars for nodes in the `consul-agent` group.
|
383
397
|
|
384
398
|
``` ruby
|
@@ -397,9 +411,7 @@ end
|
|
397
411
|
### Group of groups
|
398
412
|
A useful ansible inventory feature is [group of groups](http://docs.ansible.com/ansible/intro_inventory.html#hosts-and-groups).
|
399
413
|
|
400
|
-
By default
|
401
|
-
- you cannot rename all_groups
|
402
|
-
- you cannot exclude any ansible group from all_groups.
|
414
|
+
By default ansible has a group named `[all]` with all the nodes defined in cluster configuration.
|
403
415
|
|
404
416
|
If you need higher control on groups of groups you can simply add a new item to the variable `config.cluster.ansible_groups` before creating nodes.
|
405
417
|
|
@@ -74,16 +74,19 @@ module VagrantPlugins
|
|
74
74
|
# TODO: make safe
|
75
75
|
ansible_group_vars_path = File.join(@ansible_playbook_path, 'group_vars')
|
76
76
|
|
77
|
-
|
78
|
-
|
77
|
+
if File.exists?(ansible_group_vars_path)
|
78
|
+
Dir.foreach(ansible_group_vars_path) {|f| fn = File.join(ansible_group_vars_path, f); File.delete(fn) if f.end_with?(".yml")}
|
79
|
+
end
|
79
80
|
|
80
81
|
#generazione ansible_group_vars file (NB. 1 group = 1 gruppo host ansible)
|
81
82
|
if ansible.key?("group_vars")
|
82
83
|
ansible['group_vars'].each do |group, vars|
|
83
84
|
# crea il file (se sono state generate delle variabili)
|
84
85
|
unless vars.empty?
|
86
|
+
FileUtils.mkdir_p(ansible_group_vars_path) unless File.exists?(ansible_group_vars_path)
|
85
87
|
# TODO: make safe
|
86
|
-
|
88
|
+
fileName = group.gsub(':', '_')
|
89
|
+
File.open(File.join(ansible_group_vars_path,"#{fileName}.yml") , 'w+') do |file|
|
87
90
|
file.puts YAML::dump(vars)
|
88
91
|
end
|
89
92
|
end
|
@@ -94,14 +97,17 @@ module VagrantPlugins
|
|
94
97
|
# TODO: make safe
|
95
98
|
ansible_host_vars_path = File.join(@ansible_playbook_path, 'host_vars')
|
96
99
|
|
97
|
-
|
98
|
-
|
100
|
+
if File.exists?(ansible_host_vars_path)
|
101
|
+
Dir.foreach(ansible_host_vars_path) {|f| fn = File.join(ansible_host_vars_path, f); File.delete(fn) if f.end_with?(".yml")}
|
102
|
+
end
|
99
103
|
|
100
104
|
#generazione ansible_host_vars file
|
101
105
|
if ansible.key?("host_vars")
|
102
106
|
ansible['host_vars'].each do |host, vars|
|
103
107
|
# crea il file (se sono state generate delle variabili)
|
104
108
|
unless vars.empty?
|
109
|
+
FileUtils.mkdir_p(ansible_host_vars_path) unless File.exists?(ansible_host_vars_path)
|
110
|
+
|
105
111
|
# TODO: make safe
|
106
112
|
File.open(File.join(ansible_host_vars_path,"#{host}.yml") , 'w+') do |file|
|
107
113
|
file.puts YAML::dump(vars)
|
@@ -94,6 +94,7 @@ module VagrantPlugins
|
|
94
94
|
ansible_groups[ansible_group] << node
|
95
95
|
end
|
96
96
|
end
|
97
|
+
extended_ansible_groups = ansible_groups.merge({'all' => nodes})
|
97
98
|
|
98
99
|
## Fase2: Configurazione provisioning del cluster via Ansible
|
99
100
|
# Ogni nodo diventerà una vm su cui sarà fatto il provisioning, ovvero un host nell'inventory di ansible
|
@@ -120,7 +121,7 @@ module VagrantPlugins
|
|
120
121
|
context = {}
|
121
122
|
|
122
123
|
#genearazione context (NB. 1 group = 1 gruppo host ansible)
|
123
|
-
|
124
|
+
extended_ansible_groups.each do |ansible_group, ansible_group_nodes|
|
124
125
|
# genero le variabili per il group
|
125
126
|
provisioners = @ansible_context_vars[ansible_group]
|
126
127
|
unless provisioners.nil?
|
@@ -145,11 +146,12 @@ module VagrantPlugins
|
|
145
146
|
# TODO: make safe
|
146
147
|
ansible_group_vars_path = File.join(@ansible_playbook_path, 'group_vars')
|
147
148
|
|
148
|
-
|
149
|
-
|
149
|
+
if File.exists?(ansible_group_vars_path)
|
150
|
+
Dir.foreach(ansible_group_vars_path) {|f| fn = File.join(ansible_group_vars_path, f); File.delete(fn) if f.end_with?(".yml")}
|
151
|
+
end
|
150
152
|
|
151
153
|
#generazione ansible_group_vars file (NB. 1 group = 1 gruppo host ansible)
|
152
|
-
|
154
|
+
extended_ansible_groups.each do |ansible_group, ansible_group_nodes|
|
153
155
|
ansible_group_vars = {}
|
154
156
|
# genero le variabili per il group
|
155
157
|
provisioners = @ansible_group_vars[ansible_group]
|
@@ -171,8 +173,11 @@ module VagrantPlugins
|
|
171
173
|
|
172
174
|
# crea il file (se sono state generate delle variabili)
|
173
175
|
unless ansible_group_vars.empty?
|
176
|
+
FileUtils.mkdir_p(ansible_group_vars_path) unless File.exists?(ansible_group_vars_path)
|
177
|
+
|
174
178
|
# TODO: make safe
|
175
|
-
|
179
|
+
fileName = ansible_group.gsub(':', '_')
|
180
|
+
File.open(File.join(ansible_group_vars_path,"#{fileName}.yml") , 'w+') do |file|
|
176
181
|
file.puts YAML::dump(ansible_group_vars)
|
177
182
|
end
|
178
183
|
end
|
@@ -182,8 +187,9 @@ module VagrantPlugins
|
|
182
187
|
# TODO: make safe
|
183
188
|
ansible_host_vars_path = File.join(@ansible_playbook_path, 'host_vars')
|
184
189
|
|
185
|
-
|
186
|
-
|
190
|
+
if File.exists?(ansible_host_vars_path)
|
191
|
+
Dir.foreach(ansible_host_vars_path) {|f| fn = File.join(ansible_host_vars_path, f); File.delete(fn) if f.end_with?(".yml")}
|
192
|
+
end
|
187
193
|
|
188
194
|
#generazione ansible_host_vars file
|
189
195
|
nodes.each do |node|
|
@@ -211,6 +217,8 @@ module VagrantPlugins
|
|
211
217
|
|
212
218
|
# crea il file (se sono state generate delle variabili)
|
213
219
|
unless ansible_host_vars.empty?
|
220
|
+
FileUtils.mkdir_p(ansible_host_vars_path) unless File.exists?(ansible_host_vars_path)
|
221
|
+
|
214
222
|
# TODO: make safe
|
215
223
|
File.open(File.join(ansible_host_vars_path,"#{node.hostname}.yml") , 'w+') do |file|
|
216
224
|
file.puts YAML::dump(ansible_host_vars)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-compose
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabrizio Pandini
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -92,6 +92,8 @@ files:
|
|
92
92
|
- lib/vagrant/compose/version.rb
|
93
93
|
- lib/vagrant/compose.rb
|
94
94
|
- LICENCE
|
95
|
+
- provisioning/group_vars/all.yml
|
96
|
+
- provisioning/group_vars/kb8-master.yml
|
95
97
|
- Rakefile
|
96
98
|
- README.md
|
97
99
|
- vagrant-compose.gemspec
|