bosh-gen 0.20.1 → 0.21.0
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 +7 -1
- data/README.md +76 -19
- data/lib/bosh/gen/generators/new_release_generator.rb +2 -1
- data/lib/bosh/gen/generators/new_release_generator/templates/jobs/{%project_name_hyphenated%/templates/config/.gitkeep → just_install_packages/monit.tt} +0 -0
- data/lib/bosh/gen/generators/new_release_generator/templates/jobs/just_install_packages/spec.tt +6 -0
- data/lib/bosh/gen/generators/new_release_generator/templates/jobs/just_install_packages/templates/ignoreme +0 -0
- data/lib/bosh/gen/generators/new_release_generator/templates/templates/deployment.yml.tt +9 -14
- data/lib/bosh/gen/generators/new_release_generator/templates/templates/infrastructure-aws-ec2.yml.tt +6 -15
- data/lib/bosh/gen/generators/new_release_generator/templates/templates/infrastructure-warden.yml.tt +6 -76
- data/lib/bosh/gen/generators/new_release_generator/templates/templates/jobs.yml.tt +5 -19
- data/lib/bosh/gen/generators/new_release_generator/templates/templates/make_manifest.tt +5 -1
- data/lib/bosh/gen/version.rb +1 -1
- data/spec/generators/new_release_generator_spec.rb +2 -0
- metadata +6 -12
- data/lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/monit.tt +0 -5
- data/lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/spec.tt +0 -13
- data/lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/bin/%job_name%_ctl.tt +0 -36
- data/lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/bin/monit_debugger +0 -13
- data/lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/config/%job_name%.conf.erb.tt +0 -5
- data/lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/data/properties.sh.erb +0 -16
- data/lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/helpers/ctl_setup.sh +0 -81
- data/lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/helpers/ctl_utils.sh +0 -156
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e6e0c6cb1f7f7e80dee18ae57909755becabdca
|
4
|
+
data.tar.gz: a0ca46233c2e00e297698ce92bacd1ca69e1199c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a987ad0f2fad0ee08ff94d84ac5b23c228d3d6299162eb09e95939c313ae14ebbe53f346f8253569117f6ff06646cc63ce286a94349b2478fa97e8e769b04e2
|
7
|
+
data.tar.gz: 4d130b7944ac886292ec1bdccf337d3bce55c97ca66ac1d2e9c1d3fe0e4b8ace22597bf76610316f024cfd545a9b0e6a437f6ec13a0cc902f59635dda2acc8e7
|
data/ChangeLog.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
Change Log
|
2
2
|
==========
|
3
3
|
|
4
|
+
v0.21.0
|
5
|
+
|
6
|
+
- `new` assumes using [spruce](https://github.com/geofffranks/spruce) instead of spiff. Yay!
|
7
|
+
- `new` no longer creates a master-slave job template
|
8
|
+
- `new` now creates a wrapper job `just_install_packages` that is useful for initial development of packages prior to creating new job templates with `bosh-gen job`.
|
9
|
+
|
4
10
|
v0.20.0
|
5
11
|
-------
|
6
12
|
|
@@ -13,7 +19,7 @@ Improved generators:
|
|
13
19
|
- `new` - spiff templates include modern `templates:` array of `{name: job, release: release}`
|
14
20
|
- `new` - added an Apache `LICENSE.md` file which will be included in final releases
|
15
21
|
- `new --apt` - Vagrant image upgraded to trusty to match trusty stemcells [thx @cyrille-leclerc]
|
16
|
-
- `new` - describes how to use release via https://bosh.io; how developers share with https://bosh.io [v0.
|
22
|
+
- `new` - describes how to use release via https://bosh.io; how developers share with https://bosh.io [v0.20.1]
|
17
23
|
|
18
24
|
Removed generators:
|
19
25
|
|
data/README.md
CHANGED
@@ -3,6 +3,8 @@ BOSH Generators
|
|
3
3
|
|
4
4
|
Generators for creating and sharing BOSH releases.
|
5
5
|
|
6
|
+
New in 0.20: Create packages from embedded Docker images
|
7
|
+
|
6
8
|
New in 0.17: Creates blobstore/bucket when creating new release. AWS bucket is publicly readable.
|
7
9
|
|
8
10
|
If you would like to share your BOSH release with the world, you can use the [BOSH Community AWS S3 account](#share-bosh-releases).
|
@@ -22,12 +24,13 @@ Usage
|
|
22
24
|
-----
|
23
25
|
|
24
26
|
```
|
25
|
-
$ bosh-gen new
|
27
|
+
$ bosh-gen new $(whoami)-project
|
26
28
|
create
|
27
29
|
Auto-detected infrastructure API credentials at ~/.fog (override with $FOG)
|
28
30
|
1. AWS (community)
|
29
31
|
2. Alternate credentials
|
30
32
|
Choose an auto-detected infrastructure: 2
|
33
|
+
Choose AWS region: 1
|
31
34
|
|
32
35
|
create README.md
|
33
36
|
create Rakefile
|
@@ -57,33 +60,26 @@ $ cd ./my-project-boshrelease
|
|
57
60
|
```
|
58
61
|
|
59
62
|
```
|
60
|
-
$ wget -P /tmp http://ftp.ruby-lang.org/pub/ruby/
|
61
|
-
$ bosh-gen package ruby -f /tmp/ruby-
|
63
|
+
$ wget -P /tmp http://ftp.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz
|
64
|
+
$ bosh-gen package ruby -f /tmp/ruby-2.2.2.tar.gz
|
62
65
|
|
63
66
|
$ bosh-gen job some-ruby-job -d ruby
|
64
67
|
|
65
|
-
$
|
66
|
-
$ git commit -m "added a job + 3 packages"
|
67
|
-
|
68
|
-
$ bosh create release
|
68
|
+
$ bosh create release --force
|
69
69
|
```
|
70
70
|
|
71
|
-
|
71
|
+
To test out each iteration of your release, you can create a manifest, upload your release, and deploy it:
|
72
72
|
|
73
73
|
```
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
$ bosh create release
|
74
|
+
./templates/make_manifest warden
|
75
|
+
bosh upload release
|
76
|
+
bosh -n deploy
|
79
77
|
```
|
80
78
|
|
81
|
-
|
79
|
+
The large ruby tarball is automatically placed in the `blobs/` folder. Before you share your boshrelease with other developers you will want to sync it to your blobstore (the S3 bucket created via `bosh-gen new`\):
|
82
80
|
|
83
81
|
```
|
84
|
-
$ bosh
|
85
|
-
create jobs/some-ruby-job/templates/some-config.ini.erb
|
86
|
-
force jobs/some-ruby-job/spec
|
82
|
+
$ bosh upload blobs
|
87
83
|
```
|
88
84
|
|
89
85
|
Quickly creating packages
|
@@ -95,19 +91,25 @@ There is a slow way to create a package, and there are three faster ways. Slow v
|
|
95
91
|
|
96
92
|
```
|
97
93
|
$ bosh-gen package apache2
|
94
|
+
create packages/apache2/packaging
|
95
|
+
create packages/apache2/spec
|
98
96
|
```
|
99
97
|
|
100
98
|
The slowest way to create a package is to run the command above, then get the source, read the "install from source" instructions, and create a package.
|
101
99
|
|
102
100
|
### Slightly faster way
|
103
101
|
|
102
|
+
As above, when we created the `ruby` package we included a pre-downloaded asset:
|
103
|
+
|
104
104
|
```
|
105
|
-
$ bosh-gen package
|
105
|
+
$ bosh-gen package ruby -f /tmp/ruby-2.2.2.tar.gz
|
106
106
|
```
|
107
107
|
|
108
108
|
If you download the source files first, and reference them with the `bosh-gen package` generator, then it will attempt to guess how to install the package. The generated `packaging` script will include some starting commands that might work.
|
109
109
|
|
110
|
-
The command above will also copy the target file into the `blobs/
|
110
|
+
The command above will also copy the target file into the `blobs/ruby/` folder. One less thing for you to do.
|
111
|
+
|
112
|
+
You still need to look up "how to install from source" instructions and put them in `packages/ruby/packaging` script.
|
111
113
|
|
112
114
|
### Fastest way - reuse existing packages
|
113
115
|
|
@@ -123,6 +125,61 @@ This is a great command to use. There are a growing number of BOSH releases on G
|
|
123
125
|
|
124
126
|
Remember, first run `bosh sync blobs` in the target BOSH release project. Otherwise it will not be able to copy over the blobs.
|
125
127
|
|
128
|
+
### Fast way - embedded Docker images
|
129
|
+
|
130
|
+
This use case assumes you have `docker` CLI installed and access to a Docker daemon.
|
131
|
+
|
132
|
+
It will also make your BOSH release dependent upon the [cf-platform-eng/docker-boshrelease](https://bosh.io/d/github.com/cf-platform-eng/docker-boshrelease) release which installs the Docker daemon on VMs; and offers a simple way to run Docker containers if required.
|
133
|
+
|
134
|
+
```
|
135
|
+
$ bosh-gen package tmate --docker-image nicopace/tmate-docker
|
136
|
+
exist jobs
|
137
|
+
create jobs/nicopace_tmate_docker_image/monit
|
138
|
+
create jobs/nicopace_tmate_docker_image/spec
|
139
|
+
create jobs/nicopace_tmate_docker_image/templates/bin/install_ctl
|
140
|
+
create jobs/nicopace_tmate_docker_image/templates/bin/monit_debugger
|
141
|
+
create jobs/nicopace_tmate_docker_image/templates/helpers/ctl_setup.sh
|
142
|
+
create jobs/nicopace_tmate_docker_image/templates/helpers/ctl_utils.sh
|
143
|
+
exist packages
|
144
|
+
create packages/tmate/packaging
|
145
|
+
create packages/tmate/spec
|
146
|
+
docker pull nicopace/tmate-docker
|
147
|
+
Pulling repository nicopace/tmate-docker
|
148
|
+
7b9df453c66b: Download complete
|
149
|
+
...
|
150
|
+
6df853718c80: Download complete
|
151
|
+
Status: Image is up to date for nicopace/tmate-docker:latest
|
152
|
+
docker save nicopace/tmate-docker > blobs/docker-images/nicopace_tmate_docker.tgz
|
153
|
+
|
154
|
+
$ bosh create release --force
|
155
|
+
...
|
156
|
+
Release name: tmate-server
|
157
|
+
Release version: 0+dev.1
|
158
|
+
```
|
159
|
+
|
160
|
+
The `package --docker-image` flag will display the next steps help as well:
|
161
|
+
|
162
|
+
```
|
163
|
+
Next steps:
|
164
|
+
1. To use this BOSH release, first upload it and the docker release to your BOSH:
|
165
|
+
bosh upload release https://bosh.io/releases/cloudfoundry-community/consul-docker
|
166
|
+
bosh upload release https://bosh.io/d/github.com/cf-platform-eng/docker-boshrelease
|
167
|
+
|
168
|
+
2. To use the docker image, your deployment job needs to start with the following:
|
169
|
+
|
170
|
+
jobs:
|
171
|
+
- name: some_job
|
172
|
+
templates:
|
173
|
+
# run docker daemon
|
174
|
+
- {name: docker, release: docker}
|
175
|
+
# warm docker image cache from bosh package
|
176
|
+
- {name: nicopace_tmate_docker_image, release: tmate-server}
|
177
|
+
|
178
|
+
3. To simply run a single container, try the 'containers' job from 'docker' release
|
179
|
+
|
180
|
+
https://github.com/cloudfoundry-community/consul-docker-boshrelease/blob/master/templates/jobs.yml#L18-L40
|
181
|
+
```
|
182
|
+
|
126
183
|
### Fast way - reuse Aptitude/Debian packages
|
127
184
|
|
128
185
|
```
|
@@ -120,6 +120,7 @@ module Bosh::Gen
|
|
120
120
|
}
|
121
121
|
}
|
122
122
|
end
|
123
|
+
config_final["final_name"] = project_name
|
123
124
|
|
124
125
|
create_file "config/final.yml", YAML.dump(config_final)
|
125
126
|
end
|
@@ -129,7 +130,7 @@ module Bosh::Gen
|
|
129
130
|
config/dev.yml
|
130
131
|
config/private.yml
|
131
132
|
config/settings.yml
|
132
|
-
releases
|
133
|
+
releases/**/*.tgz
|
133
134
|
dev_releases
|
134
135
|
blobs/*
|
135
136
|
.blobs
|
File without changes
|
File without changes
|
@@ -1,24 +1,20 @@
|
|
1
1
|
meta:
|
2
|
-
environment: ((
|
3
|
-
stemcell: ((
|
2
|
+
environment: (( params "please set environment" ))
|
3
|
+
stemcell: (( params "please set stemcell" ))
|
4
4
|
|
5
|
-
name: (( meta.environment ))
|
5
|
+
name: (( grab meta.environment ))
|
6
6
|
|
7
|
-
director_uuid: ((
|
7
|
+
director_uuid: (( params "please set director_uuid" ))
|
8
8
|
|
9
|
-
releases: ((
|
9
|
+
releases: (( params "please set release" ))
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
jobs: (( merge ))
|
14
|
-
|
15
|
-
properties: (( merge ))
|
11
|
+
jobs: (( params "please set jobs" ))
|
16
12
|
|
17
13
|
compilation:
|
18
14
|
workers: 6
|
19
15
|
network: <%= project_name_underscored %>1
|
20
16
|
reuse_compilation_vms: true
|
21
|
-
cloud_properties: ((
|
17
|
+
cloud_properties: (( params "please set compilation cloud properties" ))
|
22
18
|
|
23
19
|
update:
|
24
20
|
canaries: 1
|
@@ -30,6 +26,5 @@ update:
|
|
30
26
|
resource_pools:
|
31
27
|
- name: small_z1
|
32
28
|
network: <%= project_name_underscored %>1
|
33
|
-
|
34
|
-
|
35
|
-
cloud_properties: (( merge ))
|
29
|
+
stemcell: (( grab meta.stemcell ))
|
30
|
+
cloud_properties: (( params "please set resource_pool cloud properties" ))
|
data/lib/bosh/gen/generators/new_release_generator/templates/templates/infrastructure-aws-ec2.yml.tt
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
meta:
|
2
|
-
environment: ((
|
3
|
-
dns_root: ((
|
4
|
-
security_groups: ((
|
2
|
+
environment: (( params "please set meta environment" ))
|
3
|
+
dns_root: (( params "please set meta dns_root" ))
|
4
|
+
security_groups: (( params "please set meta security_groups" ))
|
5
5
|
persistent_disk: 4096
|
6
6
|
|
7
7
|
stemcell:
|
@@ -9,19 +9,10 @@ meta:
|
|
9
9
|
version: latest
|
10
10
|
|
11
11
|
jobs:
|
12
|
-
- name:
|
13
|
-
instances: 1
|
12
|
+
- name: just_install_packages
|
14
13
|
networks:
|
15
14
|
- name: <%= project_name_underscored %>1
|
16
|
-
persistent_disk: (( meta.persistent_disk ))
|
17
|
-
- name: <%= project_name_underscored %>_z1
|
18
|
-
instances: 2
|
19
|
-
networks:
|
20
|
-
- name: <%= project_name_underscored %>1
|
21
|
-
persistent_disk: (( meta.persistent_disk ))
|
22
|
-
properties:
|
23
|
-
<%= project_name_underscored %>:
|
24
|
-
leader_address: (( "0.<%= project_name_hyphenated %>-leader-z1.<%= project_name_hyphenated %>1." meta.environment "." meta.dns_root ))
|
15
|
+
persistent_disk: (( grab meta.persistent_disk ))
|
25
16
|
|
26
17
|
compilation:
|
27
18
|
cloud_properties:
|
@@ -39,4 +30,4 @@ networks:
|
|
39
30
|
- name: <%= project_name_underscored %>1
|
40
31
|
type: dynamic
|
41
32
|
cloud_properties:
|
42
|
-
security_groups: (( meta.security_groups ))
|
33
|
+
security_groups: (( grab meta.security_groups ))
|
data/lib/bosh/gen/generators/new_release_generator/templates/templates/infrastructure-warden.yml.tt
CHANGED
@@ -12,19 +12,9 @@ update:
|
|
12
12
|
update_watch_time: 1000-30000
|
13
13
|
|
14
14
|
jobs:
|
15
|
-
- name:
|
16
|
-
instances: 1
|
15
|
+
- name: just_install_packages
|
17
16
|
networks:
|
18
17
|
- name: <%= project_name_underscored %>1
|
19
|
-
static_ips: (( static_ips(0) ))
|
20
|
-
- name: <%= project_name_underscored %>_z1
|
21
|
-
instances: 2
|
22
|
-
networks:
|
23
|
-
- name: <%= project_name_underscored %>1
|
24
|
-
static_ips: ~
|
25
|
-
properties:
|
26
|
-
<%= project_name_underscored %>:
|
27
|
-
leader_address: (( jobs.<%= project_name_underscored %>_leader_z1.networks.<%= project_name_underscored %>1.static_ips.[0] ))
|
28
18
|
|
29
19
|
compilation:
|
30
20
|
cloud_properties:
|
@@ -37,70 +27,10 @@ resource_pools:
|
|
37
27
|
|
38
28
|
networks:
|
39
29
|
- name: <%= project_name_underscored %>1
|
40
|
-
|
41
|
-
# Plus 5 (double the size) unused IPs, due to BOSH bug/quirk.
|
30
|
+
type: manual
|
42
31
|
subnets:
|
43
|
-
-
|
44
|
-
|
45
|
-
|
46
|
-
reserved:
|
47
|
-
- 10.244.2.1
|
32
|
+
- range: 10.244.2.0/24
|
33
|
+
name: <%= project_name_underscored %>1
|
34
|
+
gateway: 10.244.2.1
|
48
35
|
static:
|
49
|
-
|
50
|
-
|
51
|
-
- cloud_properties:
|
52
|
-
name: random
|
53
|
-
range: 10.244.2.4/30
|
54
|
-
reserved:
|
55
|
-
- 10.244.2.5
|
56
|
-
static: []
|
57
|
-
- cloud_properties:
|
58
|
-
name: random
|
59
|
-
range: 10.244.2.8/30
|
60
|
-
reserved:
|
61
|
-
- 10.244.2.9
|
62
|
-
static: []
|
63
|
-
- cloud_properties:
|
64
|
-
name: random
|
65
|
-
range: 10.244.2.12/30
|
66
|
-
reserved:
|
67
|
-
- 10.244.2.13
|
68
|
-
static: []
|
69
|
-
- cloud_properties:
|
70
|
-
name: random
|
71
|
-
range: 10.244.2.16/30
|
72
|
-
reserved:
|
73
|
-
- 10.244.2.17
|
74
|
-
static: []
|
75
|
-
|
76
|
-
# Bonus double-sized network required due to BOSH oddity
|
77
|
-
- cloud_properties:
|
78
|
-
name: random
|
79
|
-
range: 10.244.2.20/30
|
80
|
-
reserved:
|
81
|
-
- 10.244.2.21
|
82
|
-
static: []
|
83
|
-
- cloud_properties:
|
84
|
-
name: random
|
85
|
-
range: 10.244.2.24/30
|
86
|
-
reserved:
|
87
|
-
- 10.244.2.25
|
88
|
-
static: []
|
89
|
-
- cloud_properties:
|
90
|
-
name: random
|
91
|
-
range: 10.244.2.28/30
|
92
|
-
reserved:
|
93
|
-
- 10.244.2.29
|
94
|
-
static: []
|
95
|
-
- cloud_properties:
|
96
|
-
name: random
|
97
|
-
range: 10.244.2.32/30
|
98
|
-
reserved:
|
99
|
-
- 10.244.2.33
|
100
|
-
static: []
|
101
|
-
- cloud_properties:
|
102
|
-
name: random
|
103
|
-
range: 10.244.2.36/30
|
104
|
-
reserved:
|
105
|
-
- 10.244.2.37
|
106
|
-
static: []
|
36
|
+
- 10.244.2.2-10.244.2.60
|
@@ -9,29 +9,15 @@ update:
|
|
9
9
|
serial: false
|
10
10
|
|
11
11
|
jobs:
|
12
|
-
- name:
|
12
|
+
- name: just_install_packages
|
13
13
|
templates:
|
14
|
-
- name:
|
14
|
+
- name: just_install_packages
|
15
15
|
release: <%= project_name_hyphenated %>
|
16
|
-
instances:
|
17
|
-
resource_pool: small_z1
|
18
|
-
networks: (( merge ))
|
16
|
+
instances: 1
|
19
17
|
persistent_disk: 0
|
20
|
-
properties: {}
|
21
|
-
- name: <%= project_name_underscored %>_z1
|
22
|
-
templates:
|
23
|
-
- name: <%= project_name_hyphenated %>
|
24
|
-
release: <%= project_name_hyphenated %>
|
25
|
-
instances: 0
|
26
18
|
resource_pool: small_z1
|
27
|
-
networks: ((
|
28
|
-
persistent_disk: 0
|
29
|
-
update:
|
30
|
-
canaries: 10
|
31
|
-
properties:
|
32
|
-
<%= project_name_underscored %>:
|
33
|
-
leader_address: (( merge ))
|
19
|
+
networks: (( params "please set just_install_package networks" ))
|
34
20
|
|
35
|
-
networks: ((
|
21
|
+
networks: (( params "please set networks" ))
|
36
22
|
|
37
23
|
properties: {}
|
@@ -59,7 +59,11 @@ perl -pi -e "s/PLACEHOLDER-DIRECTOR-UUID/$DIRECTOR_UUID/g" $tmpdir/stub-with-uui
|
|
59
59
|
perl -pi -e "s/NAME/$NAME/g" $tmpdir/stub-with-uuid.yml
|
60
60
|
perl -pi -e "s/STEMCELL/$STEMCELL/g" $tmpdir/stub-with-uuid.yml
|
61
61
|
|
62
|
-
|
62
|
+
if ! [ -x "$(command -v spruce)" ]; then
|
63
|
+
echo 'spruce is not installed. Please download at https://github.com/geofffranks/spruce/releases' >&2
|
64
|
+
fi
|
65
|
+
|
66
|
+
spruce merge --prune meta \
|
63
67
|
$templates/deployment.yml \
|
64
68
|
$templates/jobs.yml \
|
65
69
|
$templates/infrastructure-${infrastructure}.yml \
|
data/lib/bosh/gen/version.rb
CHANGED
@@ -39,6 +39,7 @@ describe Bosh::Gen::Generators::NewReleaseGenerator do
|
|
39
39
|
|
40
40
|
config = YAML.load_file("config/final.yml")
|
41
41
|
expect(config).to_not be_nil
|
42
|
+
expect(config["final_name"]).to eq("redis")
|
42
43
|
expect(config["blobstore"]).to_not be_nil
|
43
44
|
expect(config["blobstore"]["options"]).to_not be_nil
|
44
45
|
expect(config["blobstore"]["provider"]).to eq("s3")
|
@@ -71,6 +72,7 @@ describe Bosh::Gen::Generators::NewReleaseGenerator do
|
|
71
72
|
|
72
73
|
config = YAML.load_file("config/final.yml")
|
73
74
|
expect(config).to_not be_nil
|
75
|
+
expect(config["final_name"]).to eq("redis")
|
74
76
|
expect(config["blobstore"]).to_not be_nil
|
75
77
|
expect(config["blobstore"]["options"]).to_not be_nil
|
76
78
|
expect(config["blobstore"]["provider"]).to eq("swift")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.21.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dr Nic Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -234,16 +234,10 @@ files:
|
|
234
234
|
- lib/bosh/gen/generators/new_release_generator/templates/README.md.tt
|
235
235
|
- lib/bosh/gen/generators/new_release_generator/templates/Rakefile
|
236
236
|
- lib/bosh/gen/generators/new_release_generator/templates/blobs/.gitkeep
|
237
|
-
- lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/monit.tt
|
238
|
-
- lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/spec.tt
|
239
|
-
- lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/bin/%job_name%_ctl.tt
|
240
|
-
- lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/bin/monit_debugger
|
241
|
-
- lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/config/%job_name%.conf.erb.tt
|
242
|
-
- lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/config/.gitkeep
|
243
|
-
- lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/data/properties.sh.erb
|
244
|
-
- lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/helpers/ctl_setup.sh
|
245
|
-
- lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/templates/helpers/ctl_utils.sh
|
246
237
|
- lib/bosh/gen/generators/new_release_generator/templates/jobs/.gitkeep
|
238
|
+
- lib/bosh/gen/generators/new_release_generator/templates/jobs/just_install_packages/monit.tt
|
239
|
+
- lib/bosh/gen/generators/new_release_generator/templates/jobs/just_install_packages/spec.tt
|
240
|
+
- lib/bosh/gen/generators/new_release_generator/templates/jobs/just_install_packages/templates/ignoreme
|
247
241
|
- lib/bosh/gen/generators/new_release_generator/templates/packages/.gitkeep
|
248
242
|
- lib/bosh/gen/generators/new_release_generator/templates/src/.gitkeep
|
249
243
|
- lib/bosh/gen/generators/new_release_generator/templates/templates/deployment.yml.tt
|
@@ -370,7 +364,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
370
364
|
version: '0'
|
371
365
|
requirements: []
|
372
366
|
rubyforge_project:
|
373
|
-
rubygems_version: 2.4.
|
367
|
+
rubygems_version: 2.4.6
|
374
368
|
signing_key:
|
375
369
|
specification_version: 4
|
376
370
|
summary: ''
|
data/lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/monit.tt
DELETED
@@ -1,5 +0,0 @@
|
|
1
|
-
check process <%= job_name %>
|
2
|
-
with pidfile /var/vcap/sys/run/<%= job_name %>/<%= job_name %>.pid
|
3
|
-
start program "/var/vcap/jobs/<%= job_name %>/bin/monit_debugger <%= job_name %>_ctl '/var/vcap/jobs/<%= job_name %>/bin/<%= job_name %>_ctl start'"
|
4
|
-
stop program "/var/vcap/jobs/<%= job_name %>/bin/monit_debugger <%= job_name %>_ctl '/var/vcap/jobs/<%= job_name %>/bin/<%= job_name %>_ctl stop'"
|
5
|
-
group vcap
|
data/lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name_hyphenated%/spec.tt
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
---
|
2
|
-
name: <%= project_name_hyphenated %>
|
3
|
-
packages: []
|
4
|
-
templates:
|
5
|
-
bin/monit_debugger: bin/monit_debugger
|
6
|
-
bin/<%= job_name %>_ctl: bin/<%= job_name %>_ctl
|
7
|
-
config/<%= job_name %>.conf.erb: config/<%= job_name %>.conf
|
8
|
-
data/properties.sh.erb: data/properties.sh
|
9
|
-
helpers/ctl_setup.sh: helpers/ctl_setup.sh
|
10
|
-
helpers/ctl_utils.sh: helpers/ctl_utils.sh
|
11
|
-
properties:
|
12
|
-
<%= project_name_underscored %>.leader_address:
|
13
|
-
description: Hostname/IP to the leader/master of the cluster
|
@@ -1,36 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
|
3
|
-
set -e # exit immediately if a simple command exits with a non-zero status
|
4
|
-
set -u # report the usage of uninitialized variables
|
5
|
-
|
6
|
-
# Setup env vars and folders for the webapp_ctl script
|
7
|
-
source /var/vcap/jobs/<%= job_name %>/helpers/ctl_setup.sh '<%= job_name %>'
|
8
|
-
|
9
|
-
export PORT=${PORT:-5000}
|
10
|
-
export LANG=en_US.UTF-8
|
11
|
-
|
12
|
-
case $1 in
|
13
|
-
|
14
|
-
start)
|
15
|
-
pid_guard $PIDFILE $JOB_NAME
|
16
|
-
|
17
|
-
# store pid in $PIDFILE
|
18
|
-
echo $$ > $PIDFILE
|
19
|
-
|
20
|
-
exec chpst -u vcap:vcap <%= job_name %> \
|
21
|
-
>>$LOG_DIR/$JOB_NAME.stdout.log \
|
22
|
-
2>>$LOG_DIR/$JOB_NAME.stderr.log
|
23
|
-
|
24
|
-
;;
|
25
|
-
|
26
|
-
stop)
|
27
|
-
kill_and_wait $PIDFILE
|
28
|
-
|
29
|
-
;;
|
30
|
-
*)
|
31
|
-
echo "Usage: <%= job_name %>_ctl {start|stop}"
|
32
|
-
|
33
|
-
;;
|
34
|
-
|
35
|
-
esac
|
36
|
-
exit 0
|
@@ -1,13 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
# USAGE monit_debugger <label> command to run
|
3
|
-
mkdir -p /var/vcap/sys/log/monit
|
4
|
-
{
|
5
|
-
echo "MONIT-DEBUG date"
|
6
|
-
date
|
7
|
-
echo "MONIT-DEBUG env"
|
8
|
-
env
|
9
|
-
echo "MONIT-DEBUG $@"
|
10
|
-
$2 $3 $4 $5 $6 $7
|
11
|
-
R=$?
|
12
|
-
echo "MONIT-DEBUG exit code $R"
|
13
|
-
} >/var/vcap/sys/log/monit/monit_debugger.$1.log 2>&1
|
@@ -1,5 +0,0 @@
|
|
1
|
-
# Example of how to do one thing when job is master/leader, and another thing if its follower/slave
|
2
|
-
# See templates/infrastructure-warden.yml & templates/jobs.yml for where this value originates
|
3
|
-
<%% if_p("<%= project_name_underscored %>.leader_address") do |leader_address| %>
|
4
|
-
leader: <%%= leader_address %>
|
5
|
-
<%% end %>
|
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
|
3
|
-
# job template binding variables
|
4
|
-
|
5
|
-
# job name & index of this VM within cluster
|
6
|
-
# e.g. JOB_NAME=redis, JOB_INDEX=0
|
7
|
-
export NAME='<%= name %>'
|
8
|
-
export JOB_INDEX=<%= index %>
|
9
|
-
# full job name, like redis/0 or webapp/3
|
10
|
-
export JOB_FULL="$NAME/$JOB_INDEX"
|
11
|
-
|
12
|
-
export DEPLOYMENT_NAME=<%= spec.deployment %>
|
13
|
-
export DNS_ROOT=<%= spec.dns_domain_name %>
|
14
|
-
|
15
|
-
# $BIND_ADDR is the IP of the first network
|
16
|
-
export BIND_ADDR=<%= spec.networks.send(spec.networks.methods(false).first).ip %>
|
@@ -1,81 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
|
3
|
-
# Setup env vars and folders for the ctl script
|
4
|
-
# This helps keep the ctl script as readable
|
5
|
-
# as possible
|
6
|
-
|
7
|
-
# Usage options:
|
8
|
-
# source /var/vcap/jobs/foobar/helpers/ctl_setup.sh JOB_NAME OUTPUT_LABEL
|
9
|
-
# source /var/vcap/jobs/foobar/helpers/ctl_setup.sh foobar
|
10
|
-
# source /var/vcap/jobs/foobar/helpers/ctl_setup.sh foobar foobar
|
11
|
-
# source /var/vcap/jobs/foobar/helpers/ctl_setup.sh foobar nginx
|
12
|
-
|
13
|
-
set -e # exit immediately if a simple command exits with a non-zero status
|
14
|
-
set -u # report the usage of uninitialized variables
|
15
|
-
|
16
|
-
JOB_NAME=$1
|
17
|
-
output_label=${1:-JOB_NAME}
|
18
|
-
|
19
|
-
export JOB_DIR=/var/vcap/jobs/$JOB_NAME
|
20
|
-
chmod 755 $JOB_DIR # to access file via symlink
|
21
|
-
|
22
|
-
# Load some bosh deployment properties into env vars
|
23
|
-
# Try to put all ERb into data/properties.sh.erb
|
24
|
-
# incl $NAME, $JOB_INDEX, $WEBAPP_DIR
|
25
|
-
source $JOB_DIR/data/properties.sh
|
26
|
-
|
27
|
-
source $JOB_DIR/helpers/ctl_utils.sh
|
28
|
-
redirect_output ${output_label}
|
29
|
-
|
30
|
-
export HOME=${HOME:-/home/vcap}
|
31
|
-
|
32
|
-
# Add all packages' /bin & /sbin into $PATH
|
33
|
-
for package_bin_dir in $(ls -d /var/vcap/packages/*/*bin)
|
34
|
-
do
|
35
|
-
export PATH=${package_bin_dir}:$PATH
|
36
|
-
done
|
37
|
-
|
38
|
-
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:-''} # default to empty
|
39
|
-
for package_bin_dir in $(ls -d /var/vcap/packages/*/lib)
|
40
|
-
do
|
41
|
-
export LD_LIBRARY_PATH=${package_bin_dir}:$LD_LIBRARY_PATH
|
42
|
-
done
|
43
|
-
|
44
|
-
# Setup log, run and tmp folders
|
45
|
-
|
46
|
-
export RUN_DIR=/var/vcap/sys/run/$JOB_NAME
|
47
|
-
export LOG_DIR=/var/vcap/sys/log/$JOB_NAME
|
48
|
-
export TMP_DIR=/var/vcap/sys/tmp/$JOB_NAME
|
49
|
-
export STORE_DIR=/var/vcap/store/$JOB_NAME
|
50
|
-
for dir in $RUN_DIR $LOG_DIR $TMP_DIR $STORE_DIR
|
51
|
-
do
|
52
|
-
mkdir -p ${dir}
|
53
|
-
chown vcap:vcap ${dir}
|
54
|
-
chmod 775 ${dir}
|
55
|
-
done
|
56
|
-
export TMPDIR=$TMP_DIR
|
57
|
-
|
58
|
-
export C_INCLUDE_PATH=/var/vcap/packages/mysqlclient/include/mysql:/var/vcap/packages/sqlite/include:/var/vcap/packages/libpq/include
|
59
|
-
export LIBRARY_PATH=/var/vcap/packages/mysqlclient/lib/mysql:/var/vcap/packages/sqlite/lib:/var/vcap/packages/libpq/lib
|
60
|
-
|
61
|
-
# consistent place for vendoring python libraries within package
|
62
|
-
if [[ -d ${WEBAPP_DIR:-/xxxx} ]]
|
63
|
-
then
|
64
|
-
export PYTHONPATH=$WEBAPP_DIR/vendor/lib/python
|
65
|
-
fi
|
66
|
-
|
67
|
-
if [[ -d /var/vcap/packages/java7 ]]
|
68
|
-
then
|
69
|
-
export JAVA_HOME="/var/vcap/packages/java7"
|
70
|
-
fi
|
71
|
-
|
72
|
-
# setup CLASSPATH for all jars/ folders within packages
|
73
|
-
export CLASSPATH=${CLASSPATH:-''} # default to empty
|
74
|
-
for java_jar in $(ls -d /var/vcap/packages/*/*/*.jar)
|
75
|
-
do
|
76
|
-
export CLASSPATH=${java_jar}:$CLASSPATH
|
77
|
-
done
|
78
|
-
|
79
|
-
PIDFILE=$RUN_DIR/$JOB_NAME.pid
|
80
|
-
|
81
|
-
echo '$PATH' $PATH
|
@@ -1,156 +0,0 @@
|
|
1
|
-
# Helper functions used by ctl scripts
|
2
|
-
|
3
|
-
# links a job file (probably a config file) into a package
|
4
|
-
# Example usage:
|
5
|
-
# link_job_file_to_package config/redis.yml [config/redis.yml]
|
6
|
-
# link_job_file_to_package config/wp-config.php wp-config.php
|
7
|
-
link_job_file_to_package() {
|
8
|
-
source_job_file=$1
|
9
|
-
target_package_file=${2:-$source_job_file}
|
10
|
-
full_package_file=$WEBAPP_DIR/${target_package_file}
|
11
|
-
|
12
|
-
link_job_file ${source_job_file} ${full_package_file}
|
13
|
-
}
|
14
|
-
|
15
|
-
# links a job file (probably a config file) somewhere
|
16
|
-
# Example usage:
|
17
|
-
# link_job_file config/bashrc /home/vcap/.bashrc
|
18
|
-
link_job_file() {
|
19
|
-
source_job_file=$1
|
20
|
-
target_file=$2
|
21
|
-
full_job_file=$JOB_DIR/${source_job_file}
|
22
|
-
|
23
|
-
echo link_job_file ${full_job_file} ${target_file}
|
24
|
-
if [[ ! -f ${full_job_file} ]]
|
25
|
-
then
|
26
|
-
echo "file to link ${full_job_file} does not exist"
|
27
|
-
else
|
28
|
-
# Create/recreate the symlink to current job file
|
29
|
-
# If another process is using the file, it won't be
|
30
|
-
# deleted, so don't attempt to create the symlink
|
31
|
-
mkdir -p $(dirname ${target_file})
|
32
|
-
ln -nfs ${full_job_file} ${target_file}
|
33
|
-
fi
|
34
|
-
}
|
35
|
-
|
36
|
-
# If loaded within monit ctl scripts then pipe output
|
37
|
-
# If loaded from 'source ../utils.sh' then normal STDOUT
|
38
|
-
redirect_output() {
|
39
|
-
SCRIPT=$1
|
40
|
-
mkdir -p /var/vcap/sys/log/monit
|
41
|
-
exec 1>> /var/vcap/sys/log/monit/$SCRIPT.log
|
42
|
-
exec 2>> /var/vcap/sys/log/monit/$SCRIPT.err.log
|
43
|
-
}
|
44
|
-
|
45
|
-
pid_guard() {
|
46
|
-
pidfile=$1
|
47
|
-
name=$2
|
48
|
-
|
49
|
-
if [ -f "$pidfile" ]; then
|
50
|
-
pid=$(head -1 "$pidfile")
|
51
|
-
|
52
|
-
if [ -n "$pid" ] && [ -e /proc/$pid ]; then
|
53
|
-
echo "$name is already running, please stop it first"
|
54
|
-
exit 1
|
55
|
-
fi
|
56
|
-
|
57
|
-
echo "Removing stale pidfile..."
|
58
|
-
rm $pidfile
|
59
|
-
fi
|
60
|
-
}
|
61
|
-
|
62
|
-
wait_pid() {
|
63
|
-
pid=$1
|
64
|
-
try_kill=$2
|
65
|
-
timeout=${3:-0}
|
66
|
-
force=${4:-0}
|
67
|
-
countdown=$(( $timeout * 10 ))
|
68
|
-
|
69
|
-
echo wait_pid $pid $try_kill $timeout $force $countdown
|
70
|
-
if [ -e /proc/$pid ]; then
|
71
|
-
if [ "$try_kill" = "1" ]; then
|
72
|
-
echo "Killing $pidfile: $pid "
|
73
|
-
kill $pid
|
74
|
-
fi
|
75
|
-
while [ -e /proc/$pid ]; do
|
76
|
-
sleep 0.1
|
77
|
-
[ "$countdown" != '0' -a $(( $countdown % 10 )) = '0' ] && echo -n .
|
78
|
-
if [ $timeout -gt 0 ]; then
|
79
|
-
if [ $countdown -eq 0 ]; then
|
80
|
-
if [ "$force" = "1" ]; then
|
81
|
-
echo -ne "\nKill timed out, using kill -9 on $pid... "
|
82
|
-
kill -9 $pid
|
83
|
-
sleep 0.5
|
84
|
-
fi
|
85
|
-
break
|
86
|
-
else
|
87
|
-
countdown=$(( $countdown - 1 ))
|
88
|
-
fi
|
89
|
-
fi
|
90
|
-
done
|
91
|
-
if [ -e /proc/$pid ]; then
|
92
|
-
echo "Timed Out"
|
93
|
-
else
|
94
|
-
echo "Stopped"
|
95
|
-
fi
|
96
|
-
else
|
97
|
-
echo "Process $pid is not running"
|
98
|
-
echo "Attempting to kill pid anyway..."
|
99
|
-
kill $pid
|
100
|
-
fi
|
101
|
-
}
|
102
|
-
|
103
|
-
wait_pidfile() {
|
104
|
-
pidfile=$1
|
105
|
-
try_kill=$2
|
106
|
-
timeout=${3:-0}
|
107
|
-
force=${4:-0}
|
108
|
-
countdown=$(( $timeout * 10 ))
|
109
|
-
|
110
|
-
if [ -f "$pidfile" ]; then
|
111
|
-
pid=$(head -1 "$pidfile")
|
112
|
-
if [ -z "$pid" ]; then
|
113
|
-
echo "Unable to get pid from $pidfile"
|
114
|
-
exit 1
|
115
|
-
fi
|
116
|
-
|
117
|
-
wait_pid $pid $try_kill $timeout $force
|
118
|
-
|
119
|
-
rm -f $pidfile
|
120
|
-
else
|
121
|
-
echo "Pidfile $pidfile doesn't exist"
|
122
|
-
fi
|
123
|
-
}
|
124
|
-
|
125
|
-
kill_and_wait() {
|
126
|
-
pidfile=$1
|
127
|
-
# Monit default timeout for start/stop is 30s
|
128
|
-
# Append 'with timeout {n} seconds' to monit start/stop program configs
|
129
|
-
timeout=${2:-25}
|
130
|
-
force=${3:-1}
|
131
|
-
if [[ -f ${pidfile} ]]
|
132
|
-
then
|
133
|
-
wait_pidfile $pidfile 1 $timeout $force
|
134
|
-
else
|
135
|
-
# TODO assume $1 is something to grep from 'ps ax'
|
136
|
-
pid="$(ps auwwx | grep "$1" | awk '{print $2}')"
|
137
|
-
wait_pid $pid 1 $timeout $force
|
138
|
-
fi
|
139
|
-
}
|
140
|
-
|
141
|
-
check_nfs_mount() {
|
142
|
-
opts=$1
|
143
|
-
exports=$2
|
144
|
-
mount_point=$3
|
145
|
-
|
146
|
-
if grep -qs $mount_point /proc/mounts; then
|
147
|
-
echo "Found NFS mount $mount_point"
|
148
|
-
else
|
149
|
-
echo "Mounting NFS..."
|
150
|
-
mount $opts $exports $mount_point
|
151
|
-
if [ $? != 0 ]; then
|
152
|
-
echo "Cannot mount NFS from $exports to $mount_point, exiting..."
|
153
|
-
exit 1
|
154
|
-
fi
|
155
|
-
fi
|
156
|
-
}
|