bosh-gen 0.96.0 → 0.97.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/bin/run.tt +0 -3
- data/lib/bosh/gen/generators/job_generator/templates/jobs/%job_name%_bpm/templates/config/bpm.yml.tt +0 -1
- data/lib/bosh/gen/generators/new_release_generator.rb +1 -4
- data/lib/bosh/gen/generators/new_release_generator/templates/README.md.tt +2 -2
- data/lib/bosh/gen/generators/new_release_generator/templates/manifests/operators/pick-from-cloud-config.sh.tt +38 -0
- data/lib/bosh/gen/generators/new_release_generator/templates/manifests/operators/use-network.yml.tt +3 -0
- data/lib/bosh/gen/version.rb +1 -1
- metadata +5 -6
- data/lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/helpers/ctl_setup.sh +0 -64
- data/lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/helpers/ctl_utils.sh +0 -155
- data/lib/bosh/gen/generators/new_release_generator/templates/Rakefile +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b7692351ac5b6596e8b513a4798897bdbc89018
|
4
|
+
data.tar.gz: c2c2156c41a4127e0f4ab4a918f71d7ac18c2f7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f4f02ce3983d769d5ee81e239f89f05daf823d44b394e2f5635e73322d05fa9b91a0b37ae6acdb46f887e560bf8ded11c31d024900a5253a0e96c7de9b20ab1
|
7
|
+
data.tar.gz: 2f7fe7100365e577267af10cfa69c4fa7ec5b56da1134db7130b5664038bb2f5c62d862b3a56d5fd590958ed9b7eb1b0c592265742e73b4e653f9aa05639c6f5
|
data/lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/bin/run.tt
CHANGED
@@ -5,9 +5,6 @@ exec 2>&1
|
|
5
5
|
set -e # exit immediately if a simple command exits with a non-zero status
|
6
6
|
set -u # report the usage of uninitialized variables
|
7
7
|
|
8
|
-
# Setup env vars and folders for the errand script
|
9
|
-
source /var/vcap/jobs/<%= job_name %>/helpers/ctl_setup.sh '<%= job_name %>'
|
10
|
-
|
11
8
|
############################################################################
|
12
9
|
|
13
10
|
# put your errand steps here...
|
data/lib/bosh/gen/generators/job_generator/templates/jobs/%job_name%_bpm/templates/config/bpm.yml.tt
CHANGED
@@ -12,4 +12,3 @@ processes:
|
|
12
12
|
open_files: 1024
|
13
13
|
|
14
14
|
# example at https://github.com/cloudfoundry-incubator/bpm-release/blob/master/jobs/bpm-test-agent/templates/bpm.yml.erb
|
15
|
-
# example at https://github.com/cloudfoundry-incubator/bpm-release/blob/master/jobs/bpm-test-agent/templates/bpm.yml.erb
|
@@ -37,14 +37,11 @@ module Bosh::Gen
|
|
37
37
|
template "LICENSE.md.tt", "LICENSE.md"
|
38
38
|
end
|
39
39
|
|
40
|
-
def rakefile
|
41
|
-
copy_file "Rakefile"
|
42
|
-
end
|
43
|
-
|
44
40
|
def directories
|
45
41
|
%w[jobs packages src blobs manifests].each do |dir|
|
46
42
|
directory dir
|
47
43
|
end
|
44
|
+
chmod 'manifests/operators/pick-from-cloud-config.sh', 0755
|
48
45
|
end
|
49
46
|
|
50
47
|
def blobs_yaml
|
@@ -17,7 +17,7 @@ If your BOSH does not have Credhub/Config Server, then remember `--vars-store` t
|
|
17
17
|
|
18
18
|
### Update
|
19
19
|
|
20
|
-
When new versions of
|
20
|
+
When new versions of `<%= project_name %>-boshrelease` are released the `manifests/<%= project_name %>.yml` file will be updated. This means you can easily `git pull` and `bosh deploy` to upgrade.
|
21
21
|
|
22
22
|
```
|
23
23
|
export BOSH_ENVIRONMENT=<bosh-alias>
|
@@ -25,5 +25,5 @@ export BOSH_DEPLOYMENT=<%= project_name %>
|
|
25
25
|
cd <%= project_name %>-boshrelease
|
26
26
|
git pull
|
27
27
|
cd -
|
28
|
-
bosh deploy <%= project_name %>-boshrelease/manifests
|
28
|
+
bosh deploy <%= project_name %>-boshrelease/manifests/<%= project_name %>.yml
|
29
29
|
```
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# The base manifests/<%= project_name %>.yml assumes that your `bosh cloud-config` contains
|
4
|
+
# "vm_type" and "networks" named "default". Its quite possible you don't have this.
|
5
|
+
# This script will select the first "vm_types" and first "networks" to use in
|
6
|
+
# your deployment. It will print to stderr the choices it made.
|
7
|
+
#
|
8
|
+
# Usage:
|
9
|
+
# bosh deploy manifests/<%= project_name %>.yml -o <(./manifests/operators/pick-from-cloud-config.sh)
|
10
|
+
|
11
|
+
: ${BOSH_ENVIRONMENT:?required}
|
12
|
+
|
13
|
+
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
14
|
+
cd $DIR/../..
|
15
|
+
|
16
|
+
instance_groups=$(bosh int <(cat manifests/*.yml) $@ --path /instance_groups | grep "^ name:" | awk '{print $2}' | sort | uniq)
|
17
|
+
cloud_config=$(bosh cloud-config)
|
18
|
+
if [[ -z ${cloud_config} ]]; then
|
19
|
+
echo "BOSH env missing a cloud-config"
|
20
|
+
exit 1
|
21
|
+
fi
|
22
|
+
vm_type=$(bosh int <(echo "$cloud_config") --path /vm_types/0/name)
|
23
|
+
network=$(bosh int <(echo "$cloud_config") --path /networks/0/name)
|
24
|
+
|
25
|
+
>&2 echo "vm_type: ${vm_type}, network: ${network}"
|
26
|
+
|
27
|
+
for ig in $instance_groups; do
|
28
|
+
cat <<YAML
|
29
|
+
- type: replace
|
30
|
+
path: /instance_groups/name=${ig}/networks/name=default/name
|
31
|
+
value: ${network}
|
32
|
+
|
33
|
+
- type: replace
|
34
|
+
path: /instance_groups/name=${ig}/vm_type
|
35
|
+
value: ${vm_type}
|
36
|
+
|
37
|
+
YAML
|
38
|
+
done
|
data/lib/bosh/gen/version.rb
CHANGED
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.97.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: 2017-
|
11
|
+
date: 2017-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -177,8 +177,6 @@ files:
|
|
177
177
|
- lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/monit.tt
|
178
178
|
- lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/bin/run.tt
|
179
179
|
- lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/config/.gitkeep
|
180
|
-
- lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/helpers/ctl_setup.sh
|
181
|
-
- lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/helpers/ctl_utils.sh
|
182
180
|
- lib/bosh/gen/generators/extract_job_generator.rb
|
183
181
|
- lib/bosh/gen/generators/extract_package_generator.rb
|
184
182
|
- lib/bosh/gen/generators/job_generator.rb
|
@@ -197,13 +195,14 @@ files:
|
|
197
195
|
- lib/bosh/gen/generators/new_release_generator.rb
|
198
196
|
- lib/bosh/gen/generators/new_release_generator/templates/LICENSE.md.tt
|
199
197
|
- lib/bosh/gen/generators/new_release_generator/templates/README.md.tt
|
200
|
-
- lib/bosh/gen/generators/new_release_generator/templates/Rakefile
|
201
198
|
- lib/bosh/gen/generators/new_release_generator/templates/blobs/.gitkeep
|
202
199
|
- lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name%/monit.tt
|
203
200
|
- lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name%/spec.tt
|
204
201
|
- lib/bosh/gen/generators/new_release_generator/templates/jobs/%project_name%/templates/ignoreme
|
205
202
|
- lib/bosh/gen/generators/new_release_generator/templates/manifests/%project_name%.yml.tt
|
206
203
|
- lib/bosh/gen/generators/new_release_generator/templates/manifests/operators/dev.yml.tt
|
204
|
+
- lib/bosh/gen/generators/new_release_generator/templates/manifests/operators/pick-from-cloud-config.sh.tt
|
205
|
+
- lib/bosh/gen/generators/new_release_generator/templates/manifests/operators/use-network.yml.tt
|
207
206
|
- lib/bosh/gen/generators/new_release_generator/templates/packages/.gitkeep
|
208
207
|
- lib/bosh/gen/generators/new_release_generator/templates/src/.gitkeep
|
209
208
|
- lib/bosh/gen/generators/package_apt_generator.rb
|
@@ -245,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
245
244
|
version: '0'
|
246
245
|
requirements: []
|
247
246
|
rubyforge_project:
|
248
|
-
rubygems_version: 2.6.
|
247
|
+
rubygems_version: 2.6.14
|
249
248
|
signing_key:
|
250
249
|
specification_version: 4
|
251
250
|
summary: ''
|
@@ -1,64 +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=${2:-${JOB_NAME}}
|
18
|
-
|
19
|
-
export JOB_DIR=/var/vcap/jobs/$JOB_NAME
|
20
|
-
chmod 755 $JOB_DIR # to access file via symlink
|
21
|
-
|
22
|
-
source $JOB_DIR/helpers/ctl_utils.sh
|
23
|
-
|
24
|
-
# Setup the PATH and LD_LIBRARY_PATH
|
25
|
-
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:-''} # default to empty
|
26
|
-
for package_dir in $(ls -d /var/vcap/packages/*)
|
27
|
-
do
|
28
|
-
has_busybox=0
|
29
|
-
# Add all packages' /bin & /sbin into $PATH
|
30
|
-
for package_bin_dir in $(ls -d ${package_dir}/*bin)
|
31
|
-
do
|
32
|
-
# Do not add any packages that use busybox, as impacts builtin commands and
|
33
|
-
# is often used for different architecture (via containers)
|
34
|
-
if [ -f ${package_bin_dir}/busybox ]
|
35
|
-
then
|
36
|
-
has_busybox=1
|
37
|
-
else
|
38
|
-
export PATH=${package_bin_dir}:$PATH
|
39
|
-
fi
|
40
|
-
done
|
41
|
-
if [ "$has_busybox" == "0" ] && [ -d ${package_dir}/lib ]
|
42
|
-
then
|
43
|
-
export LD_LIBRARY_PATH=${package_dir}/lib:$LD_LIBRARY_PATH
|
44
|
-
fi
|
45
|
-
done
|
46
|
-
|
47
|
-
# Setup log, run and tmp folders
|
48
|
-
|
49
|
-
export RUN_DIR=/var/vcap/sys/run/$JOB_NAME
|
50
|
-
export LOG_DIR=/var/vcap/sys/log/$JOB_NAME
|
51
|
-
export TMP_DIR=/var/vcap/sys/tmp/$JOB_NAME
|
52
|
-
export STORE_DIR=/var/vcap/store/$JOB_NAME
|
53
|
-
for dir in $RUN_DIR $LOG_DIR $TMP_DIR $STORE_DIR
|
54
|
-
do
|
55
|
-
mkdir -p ${dir}
|
56
|
-
chown vcap:vcap ${dir}
|
57
|
-
chmod 775 ${dir}
|
58
|
-
done
|
59
|
-
export TMPDIR=$TMP_DIR
|
60
|
-
|
61
|
-
export C_INCLUDE_PATH=/var/vcap/packages/mysqlclient/include/mysql:/var/vcap/packages/sqlite/include:/var/vcap/packages/libpq/include
|
62
|
-
export LIBRARY_PATH=/var/vcap/packages/mysqlclient/lib/mysql:/var/vcap/packages/sqlite/lib:/var/vcap/packages/libpq/lib
|
63
|
-
|
64
|
-
echo '$PATH' $PATH
|
@@ -1,155 +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 2>&1
|
42
|
-
}
|
43
|
-
|
44
|
-
pid_guard() {
|
45
|
-
pidfile=$1
|
46
|
-
name=$2
|
47
|
-
|
48
|
-
if [ -f "$pidfile" ]; then
|
49
|
-
pid=$(head -1 "$pidfile")
|
50
|
-
|
51
|
-
if [ -n "$pid" ] && [ -e /proc/$pid ]; then
|
52
|
-
echo "$name is already running, please stop it first"
|
53
|
-
exit 1
|
54
|
-
fi
|
55
|
-
|
56
|
-
echo "Removing stale pidfile..."
|
57
|
-
rm $pidfile
|
58
|
-
fi
|
59
|
-
}
|
60
|
-
|
61
|
-
wait_pid() {
|
62
|
-
pid=$1
|
63
|
-
try_kill=$2
|
64
|
-
timeout=${3:-0}
|
65
|
-
force=${4:-0}
|
66
|
-
countdown=$(( $timeout * 10 ))
|
67
|
-
|
68
|
-
echo wait_pid $pid $try_kill $timeout $force $countdown
|
69
|
-
if [ -e /proc/$pid ]; then
|
70
|
-
if [ "$try_kill" = "1" ]; then
|
71
|
-
echo "Killing $pidfile: $pid "
|
72
|
-
kill $pid
|
73
|
-
fi
|
74
|
-
while [ -e /proc/$pid ]; do
|
75
|
-
sleep 0.1
|
76
|
-
[ "$countdown" != '0' -a $(( $countdown % 10 )) = '0' ] && echo -n .
|
77
|
-
if [ $timeout -gt 0 ]; then
|
78
|
-
if [ $countdown -eq 0 ]; then
|
79
|
-
if [ "$force" = "1" ]; then
|
80
|
-
echo -ne "\nKill timed out, using kill -9 on $pid... "
|
81
|
-
kill -9 $pid
|
82
|
-
sleep 0.5
|
83
|
-
fi
|
84
|
-
break
|
85
|
-
else
|
86
|
-
countdown=$(( $countdown - 1 ))
|
87
|
-
fi
|
88
|
-
fi
|
89
|
-
done
|
90
|
-
if [ -e /proc/$pid ]; then
|
91
|
-
echo "Timed Out"
|
92
|
-
else
|
93
|
-
echo "Stopped"
|
94
|
-
fi
|
95
|
-
else
|
96
|
-
echo "Process $pid is not running"
|
97
|
-
echo "Attempting to kill pid anyway..."
|
98
|
-
kill $pid
|
99
|
-
fi
|
100
|
-
}
|
101
|
-
|
102
|
-
wait_pidfile() {
|
103
|
-
pidfile=$1
|
104
|
-
try_kill=$2
|
105
|
-
timeout=${3:-0}
|
106
|
-
force=${4:-0}
|
107
|
-
countdown=$(( $timeout * 10 ))
|
108
|
-
|
109
|
-
if [ -f "$pidfile" ]; then
|
110
|
-
pid=$(head -1 "$pidfile")
|
111
|
-
if [ -z "$pid" ]; then
|
112
|
-
echo "Unable to get pid from $pidfile"
|
113
|
-
exit 1
|
114
|
-
fi
|
115
|
-
|
116
|
-
wait_pid $pid $try_kill $timeout $force
|
117
|
-
|
118
|
-
rm -f $pidfile
|
119
|
-
else
|
120
|
-
echo "Pidfile $pidfile doesn't exist"
|
121
|
-
fi
|
122
|
-
}
|
123
|
-
|
124
|
-
kill_and_wait() {
|
125
|
-
pidfile=$1
|
126
|
-
# Monit default timeout for start/stop is 30s
|
127
|
-
# Append 'with timeout {n} seconds' to monit start/stop program configs
|
128
|
-
timeout=${2:-25}
|
129
|
-
force=${3:-1}
|
130
|
-
if [[ -f ${pidfile} ]]
|
131
|
-
then
|
132
|
-
wait_pidfile $pidfile 1 $timeout $force
|
133
|
-
else
|
134
|
-
# TODO assume $1 is something to grep from 'ps ax'
|
135
|
-
pid="$(ps auwwx | grep "$1" | awk '{print $2}')"
|
136
|
-
wait_pid $pid 1 $timeout $force
|
137
|
-
fi
|
138
|
-
}
|
139
|
-
|
140
|
-
check_nfs_mount() {
|
141
|
-
opts=$1
|
142
|
-
exports=$2
|
143
|
-
mount_point=$3
|
144
|
-
|
145
|
-
if grep -qs $mount_point /proc/mounts; then
|
146
|
-
echo "Found NFS mount $mount_point"
|
147
|
-
else
|
148
|
-
echo "Mounting NFS..."
|
149
|
-
mount $opts $exports $mount_point
|
150
|
-
if [ $? != 0 ]; then
|
151
|
-
echo "Cannot mount NFS from $exports to $mount_point, exiting..."
|
152
|
-
exit 1
|
153
|
-
fi
|
154
|
-
fi
|
155
|
-
}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
desc "Generates a properties file for each job based on properties.X.Y used in templates"
|
2
|
-
task :job_properties do
|
3
|
-
require "fileutils"
|
4
|
-
Dir["jobs/*"].each do |path|
|
5
|
-
puts "Searching job #{File.basename(path)}..."
|
6
|
-
FileUtils.chdir(path) do
|
7
|
-
properties = []
|
8
|
-
Dir["templates/*.erb"].each do |template_path|
|
9
|
-
properties |= File.read(template_path).scan(/\bproperties\.[\w\.]*\b/)
|
10
|
-
puts properties.join("\n")
|
11
|
-
File.open("properties", "w") { |file| file << properties.join("\n") }
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|