monkey_king 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +104 -3
- data/lib/monkey_king/clone_command.rb +8 -3
- data/lib/monkey_king/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: beb82abaa898573f203304c24f512196d2188232
|
4
|
+
data.tar.gz: b303c14f5e6000d5287456d75db0ca2c39570be9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a5aabc89c3e9404a0df74936f165f37c3db1c5fcc8dc917a48e18969d6f1b8d163ea3ec249ba43349ed994123a05a3dfadfec84b340ebdd50b1d366d98b7588
|
7
|
+
data.tar.gz: 20c4198faa50e4a02a4ec7949ff32f9f19570b1da17ab3fb24f8b17e83cba75014e5011a8e734539e38b1d5b2188084610cf2d04c076eea6403f644cfa350944
|
data/README.md
CHANGED
@@ -1,8 +1,63 @@
|
|
1
1
|
# MonkeyKing
|
2
2
|
|
3
|
-
|
3
|
+
Monkey king is a tool which is initially designed for generating deployment manifests for a bosh deployment based on an existing deployment, and it could also be used for other purposes like performing functions on keys/values in yaml files based on yaml tags.
|
4
|
+
|
5
|
+
|
6
|
+
Here is some scenarios about how it works:
|
7
|
+
## Using secret generation
|
8
|
+
The `!MK:secret` directive generates a random secret of the same length as the value it replaces.
|
9
|
+
BEFORE
|
10
|
+
```
|
11
|
+
---
|
12
|
+
meta:
|
13
|
+
secret: !MK:secret old_secret
|
14
|
+
another_secret: !MK:secret old_secret
|
15
|
+
not_secret: not_secret
|
16
|
+
```
|
17
|
+
|
18
|
+
AFTER
|
19
|
+
```
|
20
|
+
---
|
21
|
+
meta:
|
22
|
+
secret: !MK:secret new_secret
|
23
|
+
another_secret: !MK:secret new_secret
|
24
|
+
not_secret: not_secret
|
25
|
+
```
|
26
|
+
|
27
|
+
## Using environment variables
|
28
|
+
The `!MK:env:<variable_name>` directive pulls values from environment variables and replaces the tagged keys/values
|
29
|
+
|
30
|
+
Given:
|
31
|
+
|
32
|
+
```
|
33
|
+
export id1=id1_from_env
|
34
|
+
export id2=id2_from_env
|
35
|
+
```
|
36
|
+
|
37
|
+
Before:
|
38
|
+
```
|
39
|
+
---
|
40
|
+
meta1:
|
41
|
+
not_secret: not_secret
|
42
|
+
layer1:
|
43
|
+
- id1: !MK:env:id1 id1_before
|
44
|
+
- layer2:
|
45
|
+
- id2: !MK:env:id2 id2_before
|
46
|
+
- !MK:env:id1 id3: !MK:env:id1 id1_before
|
47
|
+
```
|
48
|
+
|
49
|
+
After:
|
50
|
+
```
|
51
|
+
---
|
52
|
+
meta1:
|
53
|
+
not_secret: not_secret
|
54
|
+
layer1:
|
55
|
+
- id1: !MK:env:id1 id1_from_env
|
56
|
+
- layer2:
|
57
|
+
- id2: !MK:env:id2 id2_from_env
|
58
|
+
- !MK:env:id1 id1_from_env: !MK:env:id1 id1_from_env
|
59
|
+
```
|
4
60
|
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
6
61
|
|
7
62
|
## Installation
|
8
63
|
|
@@ -21,8 +76,54 @@ Or install it yourself as:
|
|
21
76
|
$ gem install monkey_king
|
22
77
|
|
23
78
|
## Usage
|
79
|
+
```
|
80
|
+
$ mk help
|
81
|
+
Commands:
|
82
|
+
help [COMMAND] Help!
|
83
|
+
clone REPO DIR... Clone the repo and replace secret and env annotation
|
84
|
+
replace GLOBS... Replace secret and env annotation for existing directory
|
85
|
+
```
|
86
|
+
```
|
87
|
+
$ mk help clone
|
88
|
+
Clone the repo and replace secret and env annotation
|
24
89
|
|
25
|
-
|
90
|
+
Usage: clone REPO DIR...
|
91
|
+
|
92
|
+
Options:
|
93
|
+
--dir DIR
|
94
|
+
--repo REPO
|
95
|
+
```
|
96
|
+
```
|
97
|
+
$ mk help replace
|
98
|
+
Replace secret and env annotation for existing directory
|
99
|
+
|
100
|
+
Usage: replace GLOBS...
|
101
|
+
|
102
|
+
Options:
|
103
|
+
--globs GLOBS
|
104
|
+
```
|
105
|
+
|
106
|
+
Example 1: clone the repo and replace all the manifest under bosh-init directory.
|
107
|
+
|
108
|
+
```
|
109
|
+
$ mk clone --repo git@github.com:[USERNAME]/[DEPLOYMENT].git bosh-init
|
110
|
+
Cloning into '[DEPLOYMENT]'...
|
111
|
+
remote: Counting objects: 346, done.
|
112
|
+
remote: Total 346 (delta 0), reused 0 (delta 0), pack-reused 346
|
113
|
+
Receiving objects: 100% (346/346), 179.86 KiB | 0 bytes/s, done.
|
114
|
+
Resolving deltas: 100% (157/157), done.
|
115
|
+
Checking connectivity... done.
|
116
|
+
Transforming [DEPLOYMENT]/bosh-init/bosh-init.yml...
|
117
|
+
Done.
|
118
|
+
```
|
119
|
+
|
120
|
+
Example 2: replace all the manifest under bosh-init directory.
|
121
|
+
|
122
|
+
```
|
123
|
+
$ mk replace deployment0/bosh-init/*.yml
|
124
|
+
Transforming deployment0/bosh-init/bosh-init.yml...
|
125
|
+
Done.
|
126
|
+
```
|
26
127
|
|
27
128
|
## Development
|
28
129
|
|
@@ -6,10 +6,10 @@ module MonkeyKing
|
|
6
6
|
|
7
7
|
desc "Clone the repo and replace secret and env annotation"
|
8
8
|
input :repo, :argument => true
|
9
|
-
input :dir, :argument => :splat
|
9
|
+
input :dir, :argument => [:splat, true]
|
10
10
|
def clone
|
11
11
|
repo = input[:repo]
|
12
|
-
sub_dir = input[:dir]
|
12
|
+
sub_dir = Array(input[:dir])
|
13
13
|
|
14
14
|
directory = repo.split('/').last.split('.').first
|
15
15
|
parser = MonkeyKing::Parser.new
|
@@ -28,13 +28,17 @@ module MonkeyKing
|
|
28
28
|
overwrite_file.write transformed_content
|
29
29
|
end
|
30
30
|
end
|
31
|
+
puts "Done."
|
31
32
|
end
|
32
33
|
|
33
|
-
desc "
|
34
|
+
desc "Replace secret and env annotation for existing directory"
|
34
35
|
input :globs, :argument => :splat
|
35
36
|
def replace
|
36
37
|
globs = input[:globs]
|
37
38
|
parser = MonkeyKing::Parser.new
|
39
|
+
if globs.empty?
|
40
|
+
raise 'no globs given in the argument'
|
41
|
+
end
|
38
42
|
|
39
43
|
deployment_yaml_files = []
|
40
44
|
deployment_yaml_files += Dir.glob(globs)
|
@@ -51,6 +55,7 @@ module MonkeyKing
|
|
51
55
|
puts "skipping non-yaml file #{file}..."
|
52
56
|
end
|
53
57
|
end
|
58
|
+
puts "Done."
|
54
59
|
end
|
55
60
|
|
56
61
|
end
|
data/lib/monkey_king/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: monkey_king
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cloudops_hosted
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mothership
|