percheron 0.8.0 → 0.8.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +11 -15
- data/examples/consul/.percheron.yml +3 -3
- data/lib/percheron/actions/create.rb +1 -1
- data/lib/percheron/actions/start.rb +29 -9
- data/lib/percheron/commands/purge.rb +1 -1
- data/lib/percheron/formatters/stack/table.rb +2 -0
- data/lib/percheron/unit.rb +6 -2
- data/lib/percheron/unit/image_helper.rb +4 -0
- data/lib/percheron/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bea44fa6bffb36f64cc87ea1b7440f5adec930ee
|
4
|
+
data.tar.gz: f80411ab025ea216f43d8f114160e3d8007e03e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 820eebf1087b9201bd950c3eb989c993389974d0b46b574421516dcaf4cc7ab241b0b077b1894b45191b1be56a56d11faaa54ab055e2ef02601cc4f2a1a11bf9
|
7
|
+
data.tar.gz: 8428c2dc52c9cf6ff2ca82a3a508d9112955b9b5d6cbef68079ffdabd1650def1c6a0263b657fc0830f6e5a173671750813399a7ffd638a0c55458500cd93238
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## v0.8.1 / 2015-08-21
|
2
|
+
|
3
|
+
* BUGfix when creating units via Start action
|
4
|
+
* Support needed_unit_names and dependant_unit_names
|
5
|
+
* Added image size to the ascii table for status
|
6
|
+
|
1
7
|
## v0.8.0 / 2015-08-19
|
2
8
|
|
3
9
|
* Hostname is the full `<stack_name>_<name>` by default
|
data/README.md
CHANGED
@@ -81,13 +81,11 @@ Parameters:
|
|
81
81
|
|
82
82
|
Subcommands:
|
83
83
|
list, status List stacks and its units
|
84
|
-
console Start a pry console session
|
85
84
|
start Start a stack
|
86
85
|
stop Stop a stack
|
87
86
|
restart Restart a stack
|
88
|
-
build
|
89
|
-
create
|
90
|
-
recreate Recreate a stack
|
87
|
+
build, rebuild (Re)build image(s) for a stack
|
88
|
+
create, recreate (Re)build image(s) and (re)create units for a stack
|
91
89
|
purge Purge a stack
|
92
90
|
shell Shell into a unit
|
93
91
|
logs Show logs for a unit
|
@@ -96,13 +94,15 @@ Subcommands:
|
|
96
94
|
Options:
|
97
95
|
-h, --help print help
|
98
96
|
-c, --config_file CONFIG Config file (default: ".percheron.yml")
|
99
|
-
--version show
|
97
|
+
--version show versionn
|
100
98
|
```
|
101
99
|
|
102
100
|
## Demo (using boot2docker)
|
103
101
|
|
104
102
|
1) Get boot2docker up and running
|
105
103
|
|
104
|
+
Follow the directions at https://docs.docker.com/installation
|
105
|
+
|
106
106
|
```bash
|
107
107
|
boot2docker up && eval $(boot2docker shellinit) && export BOOT2DOCKER_IP=$(boot2docker ip)
|
108
108
|
```
|
@@ -126,14 +126,14 @@ stacks:
|
|
126
126
|
docker_image: gliderlabs/consul-server:0.5
|
127
127
|
start_args: [ "-bootstrap", "-client", "0.0.0.0", "-data-dir", "/data", "-ui-dir", "/ui" ]
|
128
128
|
ports:
|
129
|
-
- 8500:8500
|
130
|
-
- 8600:53/udp
|
129
|
+
- "8500:8500"
|
130
|
+
- "8600:53/udp"
|
131
131
|
- name: agent
|
132
132
|
version: 1.0.0
|
133
133
|
instances: 2
|
134
134
|
docker_image: gliderlabs/consul-agent:0.5
|
135
135
|
start_args: [ "-join", "master" ]
|
136
|
-
|
136
|
+
needed_unit_names:
|
137
137
|
- master
|
138
138
|
```
|
139
139
|
|
@@ -169,7 +169,7 @@ percheron status consul-stack
|
|
169
169
|
6) Ensure consul is running
|
170
170
|
|
171
171
|
```bash
|
172
|
-
curl http
|
172
|
+
curl http://${BOOT2DOCKER_IP}:8500/v1/catalog/nodes
|
173
173
|
|
174
174
|
[{"Node":"agent1","Address":"172.17.0.5"},{"Node":"agent2","Address":"172.17.0.6"},{"Node":"master","Address":"172.17.0.4"}]
|
175
175
|
```
|
@@ -177,7 +177,7 @@ curl http://boot2docker:8500/v1/catalog/nodes
|
|
177
177
|
7) Perform some DNS lookups using consul
|
178
178
|
|
179
179
|
```bash
|
180
|
-
dig
|
180
|
+
dig @${BOOT2DOCKER_IP} -p 8600 master.node.consul agent1.node.consul agent2.node.consul +short
|
181
181
|
|
182
182
|
172.17.0.7
|
183
183
|
172.17.0.8
|
@@ -187,7 +187,7 @@ dig @boot2docker -p 8600 master.node.consul agent1.node.consul agent2.node.consu
|
|
187
187
|
8) Bring up the consul UI
|
188
188
|
|
189
189
|
```bash
|
190
|
-
open http
|
190
|
+
open http://${BOOT2DOCKER_IP}:8500/ui
|
191
191
|
```
|
192
192
|
|
193
193
|
9) Purge it!
|
@@ -213,10 +213,6 @@ percheron graph consul-stack
|
|
213
213
|
|
214
214
|

|
215
215
|
|
216
|
-
## Demo asciicast
|
217
|
-
|
218
|
-
[](https://asciinema.org/a/7l1ar35xlmfsaphhptrqvx7jg)
|
219
|
-
|
220
216
|
## Debugging
|
221
217
|
|
222
218
|
To perform debugging you will need to install the `pry-byebug` gem:
|
@@ -8,12 +8,12 @@ stacks:
|
|
8
8
|
docker_image: gliderlabs/consul-server:0.5
|
9
9
|
start_args: [ "-bootstrap", "-client", "0.0.0.0", "-data-dir", "/data", "-ui-dir", "/ui" ]
|
10
10
|
ports:
|
11
|
-
- 8500:8500
|
12
|
-
- 8600:53/udp
|
11
|
+
- "8500:8500"
|
12
|
+
- "8600:53/udp"
|
13
13
|
- name: agent
|
14
14
|
version: 1.0.0
|
15
15
|
instances: 2
|
16
16
|
docker_image: gliderlabs/consul-agent:0.5
|
17
17
|
start_args: [ "-join", "master" ]
|
18
|
-
|
18
|
+
needed_unit_names:
|
19
19
|
- master
|
@@ -3,17 +3,18 @@ module Percheron
|
|
3
3
|
class Start
|
4
4
|
include Base
|
5
5
|
|
6
|
-
def initialize(unit, needed_units: [], cmd: false, exec_scripts: true)
|
6
|
+
def initialize(unit, needed_units: [], create: true, cmd: false, exec_scripts: true)
|
7
7
|
@unit = unit
|
8
8
|
@needed_units = needed_units
|
9
|
+
@create = create
|
9
10
|
@cmd = cmd
|
10
11
|
@exec_scripts = exec_scripts
|
11
12
|
end
|
12
13
|
|
13
14
|
def execute!
|
14
|
-
|
15
|
-
results
|
16
|
-
|
15
|
+
return nil if unit.running?
|
16
|
+
results = [ create! ]
|
17
|
+
if unit.startable?
|
17
18
|
results << start!
|
18
19
|
results << execute_post_start_scripts!
|
19
20
|
end
|
@@ -22,21 +23,40 @@ module Percheron
|
|
22
23
|
|
23
24
|
private
|
24
25
|
|
25
|
-
attr_reader :unit, :needed_units, :cmd, :exec_scripts
|
26
|
+
attr_reader :unit, :needed_units, :create, :cmd, :exec_scripts
|
27
|
+
alias_method :create?, :create
|
26
28
|
|
27
29
|
def exec_scripts?
|
28
30
|
!unit.post_start_scripts.empty? && exec_scripts
|
29
31
|
end
|
30
32
|
|
31
33
|
def create!
|
32
|
-
return nil
|
34
|
+
return nil unless create?
|
33
35
|
Create.new(unit, cmd: cmd).execute!
|
34
36
|
end
|
35
37
|
|
36
38
|
def start!
|
37
|
-
return nil if
|
38
|
-
|
39
|
-
|
39
|
+
return nil if unit_running?
|
40
|
+
if needed_unit_names_not_running.empty?
|
41
|
+
$logger.info "Starting '#{unit.display_name}' unit"
|
42
|
+
unit.container.start!
|
43
|
+
else
|
44
|
+
$logger.error "Cannot start '%s' unit, %s not running" %
|
45
|
+
[ unit.display_name, needed_unit_names_not_running ]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def unit_running?
|
50
|
+
!unit.startable? || unit.running?
|
51
|
+
end
|
52
|
+
|
53
|
+
def needed_unit_names_not_running
|
54
|
+
@needed_unit_names_not_running ||= begin
|
55
|
+
unit.startable_needed_units.each_with_object([]) do |unit_tuple, all|
|
56
|
+
_, unit = unit_tuple
|
57
|
+
all << unit.name unless unit.running?
|
58
|
+
end
|
59
|
+
end
|
40
60
|
end
|
41
61
|
|
42
62
|
def execute_post_start_scripts!
|
data/lib/percheron/unit.rb
CHANGED
@@ -8,8 +8,8 @@ module Percheron
|
|
8
8
|
include Unit::ImageHelper
|
9
9
|
|
10
10
|
def_delegators :unit_config, :name, :pseudo_name, :docker_image
|
11
|
-
def_config_item_with_default :unit_config, [], :env, :ports, :volumes, :
|
12
|
-
:
|
11
|
+
def_config_item_with_default :unit_config, [], :env, :ports, :volumes, :pre_build_scripts,
|
12
|
+
:post_start_scripts, :start_args, :dns
|
13
13
|
def_config_item_with_default :unit_config, true, :startable
|
14
14
|
|
15
15
|
def initialize(config, stack, unit_name)
|
@@ -20,6 +20,10 @@ module Percheron
|
|
20
20
|
self
|
21
21
|
end
|
22
22
|
|
23
|
+
def needed_unit_names
|
24
|
+
unit_config.fetch('needed_unit_names', unit_config.fetch('dependant_unit_names', []))
|
25
|
+
end
|
26
|
+
|
23
27
|
def needed_units
|
24
28
|
needed_unit_names.each_with_object({}) do |unit_name, all|
|
25
29
|
all[unit_name] = stack.units[unit_name]
|
data/lib/percheron/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: percheron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ash McKenzie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clamp
|