Last active
July 22, 2018 21:22
-
-
Save tammersaleh/8d909de4189641bbb4a7af999edc3c93 to your computer and use it in GitHub Desktop.
etcd frontend server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
set -e -x | |
# /var/vcap/packages/frontend | |
cp -a frontend/* ${BOSH_INSTALL_TARGET} | |
cd ${BOSH_INSTALL_TARGET} | |
/var/vcap/packages/ruby_2.4.1/bin/bundle install \ | |
--local \ | |
--deployment \ | |
--without development test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
check process frontend | |
with pidfile /var/vcap/sys/run/frontend/pid | |
start program "/var/vcap/jobs/frontend/bin/frontend_ctl start" | |
stop program "/var/vcap/jobs/frontend/bin/frontend_ctl stop" | |
group vcap |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'rubygems' | |
require 'sinatra' | |
require 'httparty' | |
$stdout.sync = true | |
$stderr.sync = true | |
$etcd_servers = ENV["ETCD_SERVERS"].split(",") | |
def random_etcd_server | |
$etcd_servers.sample | |
end | |
def value_url | |
"http://" + random_etcd_server + ":4001/v2/keys/frontend" | |
end | |
def get_value | |
JSON.parse(HTTParty.get(value_url).body)["node"]["value"] rescue "" | |
end | |
def set_value(new_value) | |
HTTParty.put(value_url, body: "value=#{new_value}") | |
end | |
def html_escape(v) | |
Rack::Utils.escape_html(v) | |
end | |
get '/' do | |
<<-HTML | |
<!DOCTYPE html> | |
<html><body> | |
<h1>Etcd Frontend</h1> | |
<pre><code>#{html_escape(get_value)}</code></pre> | |
<form action="/" method="POST"> | |
<label>New value:</label> | |
<input type="text" name="value"/> | |
<input type="submit" value="Change"/> | |
</form> | |
</body></html> | |
HTML | |
end | |
post '/' do | |
set_value(params[:value]) | |
redirect '/' | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
RUN_DIR=/var/vcap/sys/run/frontend | |
LOG_DIR=/var/vcap/sys/log/frontend | |
PIDFILE=${RUN_DIR}/pid | |
RUBYBIN=/var/vcap/packages/ruby_2.4.1/bin | |
export ETCD_SERVERS="<%= p('frontend.etcd_servers').join(',') %>" | |
case $1 in | |
start) | |
mkdir -p $RUN_DIR $LOG_DIR | |
chown -R vcap:vcap $RUN_DIR $LOG_DIR | |
echo $$ > $PIDFILE | |
cd /var/vcap/packages/frontend | |
export PATH=$RUBYBIN:$PATH | |
exec $RUBYBIN/bundle exec \ | |
rackup -p <%= p("frontend.port") %> -o 0.0.0.0 \ | |
>> $LOG_DIR/frontend.stdout.log \ | |
2>> $LOG_DIR/frontend.stderr.log | |
;; | |
stop) | |
kill -9 `cat $PIDFILE` | |
rm -f $PIDFILE | |
;; | |
*) | |
echo "Usage: ctl {start|stop}" | |
exit 2 | |
;; | |
esac |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: frontend | |
templates: | |
frontend_ctl.erb: bin/frontend_ctl | |
packages: | |
- frontend | |
- ruby_2.4.1 | |
properties: | |
frontend.port: | |
description: Port that the frontend app listens on | |
default: 80 | |
frontend.etcd_servers: | |
description: IP addresses of backend Etcd servers |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: frontend | |
dependencies: | |
- ruby_2.4.1 | |
files: | |
- frontend/**/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
set -e -x | |
# BOSH_INSTALL_TARGET => /var/vcap/packages/ruby_2.4.1 | |
tar -xzf ruby-2.4.1.tar.gz | |
pushd ruby-2.4.1 | |
./configure \ | |
--prefix=${BOSH_INSTALL_TARGET} \ | |
--disable-install-doc | |
make | |
make install | |
popd | |
tar -zxvf rubygems-2.6.12.tgz | |
pushd rubygems-2.6.12 | |
${BOSH_INSTALL_TARGET}/bin/ruby setup.rb | |
popd | |
${BOSH_INSTALL_TARGET}/bin/gem install bundler-1.15.3.gem --no-ri --no-rdoc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: ruby_2.4.1 | |
dependencies: [] | |
files: | |
- ruby-2.4.1.tar.gz # https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.gz | |
- rubygems-2.6.12.tgz # https://rubygems.org/rubygems/rubygems-2.6.12.tgz | |
- bundler-1.15.3.gem # https://rubygems.org/downloads/bundler-1.15.3.gem |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment