monkey_king 0.1.4 → 0.1.5
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/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
|