Update dev tooling and related docs

This commit is contained in:
Gene Liverman 2022-01-19 14:59:12 -05:00
parent 49822bff31
commit f7eaeedbfc
No known key found for this signature in database
GPG key ID: 3AF83985B6C857C6
21 changed files with 506 additions and 463 deletions

View file

@ -1,21 +1,9 @@
# Run vmpooler in a Docker container! Configuration can either be embedded
# and built within the current working directory, or stored in a
# VMPOOLER_CONFIG environment value and passed to the Docker daemon.
#
# BUILD:
# docker build -t vmpooler .
#
# RUN:
# docker run -e VMPOOLER_CONFIG -p 80:4567 -it vmpooler
# This Dockerfile is intended to be used with the
# docker-compose file in the same directory.
FROM jruby:9.2-jdk
ARG vmpooler_version=0.11.3
COPY docker/docker-entrypoint.sh /usr/local/bin/
ENV LOGFILE=/dev/stdout \
RACK_ENV=production
ENV RACK_ENV=production
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends make && \
@ -23,7 +11,16 @@ RUN apt-get update -qq && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/*
RUN gem install vmpooler -v ${vmpooler_version} && \
chmod +x /usr/local/bin/docker-entrypoint.sh
COPY docker/docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
COPY docker/Gemfile* ./
COPY ./ ./vmpooler-source
RUN gem install bundler && \
bundle config set --local jobs 3 && \
bundle install
ENTRYPOINT ["docker-entrypoint.sh"]

View file

@ -1,39 +0,0 @@
# Run vmpooler in a Docker container! Configuration can either be embedded
# and built within the current working directory, or stored in a
# VMPOOLER_CONFIG environment value and passed to the Docker daemon.
#
# BUILD:
# docker build -t vmpooler .
#
# RUN:
# docker run -e VMPOOLER_CONFIG -p 80:4567 -it vmpooler
FROM jruby:9.2.9-jdk
RUN mkdir -p /var/lib/vmpooler
WORKDIR /var/lib/vmpooler
RUN echo "deb http://httpredir.debian.org/debian jessie main" >/etc/apt/sources.list.d/jessie-main.list
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends make redis-server && \
apt-get clean autoclean && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/*
ADD Gemfile* /var/lib/vmpooler/
RUN bundle install --system
RUN ln -s /opt/jruby/bin/jruby /usr/bin/jruby
COPY . /var/lib/vmpooler
ENV VMPOOLER_LOG /var/log/vmpooler.log
CMD \
/etc/init.d/redis-server start \
&& /var/lib/vmpooler/scripts/vmpooler_init.sh start \
&& while [ ! -f ${VMPOOLER_LOG} ]; do sleep 1; done ; \
tail -f ${VMPOOLER_LOG}

View file

@ -1,36 +0,0 @@
# Run vmpooler in a Docker container! Configuration can either be embedded
# and built within the current working directory, or stored in a
# VMPOOLER_CONFIG environment value and passed to the Docker daemon.
#
# BUILD:
# docker build -t vmpooler .
#
# RUN:
# docker run -e VMPOOLER_CONFIG -p 80:4567 -it vmpooler
FROM jruby:9.2-jdk
ENV RACK_ENV=production
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends make && \
apt-get clean autoclean && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/*
COPY docker/docker-entrypoint.sh /usr/local/bin/
COPY ./Gemfile ./
COPY ./vmpooler.gemspec ./
COPY ./lib/vmpooler/version.rb ./lib/vmpooler/version.rb
RUN gem install bundler && \
bundle config set --local jobs 3 && \
bundle install
COPY ./ ./
RUN gem build vmpooler.gemspec && \
gem install vmpooler*.gem && \
chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]

5
docker/Gemfile Normal file
View file

@ -0,0 +1,5 @@
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
gem 'vmpooler', path: './vmpooler-source'
gem 'vmpooler-provider-gce', git: 'https://github.com/puppetlabs/vmpooler-provider-gce.git'
gem 'vmpooler-provider-vsphere', git: 'https://github.com/puppetlabs/vmpooler-provider-vsphere.git'

205
docker/Gemfile.lock Normal file
View file

@ -0,0 +1,205 @@
GIT
remote: https://github.com/puppetlabs/vmpooler-provider-gce.git
revision: 614c474305f707ef52b4e3e92aabccec5880fba6
specs:
vmpooler-provider-gce (0.1.2)
google-apis-compute_v1 (~> 0.14)
google-cloud-dns (~> 0.35.1)
googleauth (~> 0.16.2)
GIT
remote: https://github.com/puppetlabs/vmpooler-provider-vsphere.git
revision: a9662622d5574a7f9f6e97ff4c8bc82786982266
specs:
vmpooler-provider-vsphere (1.5.0)
rbvmomi (>= 2.1, < 4.0)
PATH
remote: vmpooler-source
specs:
vmpooler (2.2.0)
concurrent-ruby (~> 1.1)
connection_pool (~> 2.2)
deep_merge (~> 1.2)
net-ldap (~> 0.16)
nokogiri (~> 1.10)
opentelemetry-exporter-jaeger (= 0.20.1)
opentelemetry-instrumentation-concurrent_ruby (= 0.19.2)
opentelemetry-instrumentation-redis (= 0.21.2)
opentelemetry-instrumentation-sinatra (= 0.19.3)
opentelemetry-resource_detectors (= 0.19.1)
opentelemetry-sdk (~> 1.0, >= 1.0.2)
pickup (~> 0.0.11)
prometheus-client (~> 2.0)
puma (~> 5.0, >= 5.0.4)
rack (~> 2.2)
rake (~> 13.0)
redis (~> 4.1)
sinatra (~> 2.0)
spicy-proton (~> 2.1)
statsd-ruby (~> 1.4)
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
bindata (2.4.10)
builder (3.2.4)
concurrent-ruby (1.1.9)
connection_pool (2.2.5)
declarative (0.0.20)
deep_merge (1.2.2)
faraday (1.9.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.3)
multipart-post (>= 1.2, < 3)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
google-apis-compute_v1 (0.23.0)
google-apis-core (>= 0.4, < 2.a)
google-apis-core (0.4.1)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-dns_v1 (0.17.0)
google-apis-core (>= 0.4, < 2.a)
google-cloud-core (1.6.0)
google-cloud-env (~> 1.0)
google-cloud-errors (~> 1.0)
google-cloud-dns (0.35.1)
google-apis-dns_v1 (~> 0.1)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
zonefile (~> 1.04)
google-cloud-env (1.5.0)
faraday (>= 0.17.3, < 2.0)
google-cloud-errors (1.2.0)
googleauth (0.16.2)
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (~> 0.14)
httpclient (2.8.3)
json (2.6.1-java)
jwt (2.3.0)
memoist (0.16.2)
mini_mime (1.1.2)
multi_json (1.15.0)
multipart-post (2.1.1)
mustermann (1.1.1)
ruby2_keywords (~> 0.0.1)
net-ldap (0.17.0)
nio4r (2.5.8-java)
nokogiri (1.12.5-java)
racc (~> 1.4)
opentelemetry-api (1.0.1)
opentelemetry-common (0.19.3)
opentelemetry-api (~> 1.0)
opentelemetry-exporter-jaeger (0.20.1)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.19.2)
opentelemetry-sdk (~> 1.0)
thrift
opentelemetry-instrumentation-base (0.19.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-concurrent_ruby (0.19.2)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.19.0)
opentelemetry-instrumentation-redis (0.21.2)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.19.3)
opentelemetry-instrumentation-base (~> 0.19.0)
opentelemetry-instrumentation-sinatra (0.19.3)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.19.3)
opentelemetry-instrumentation-base (~> 0.19.0)
opentelemetry-resource_detectors (0.19.1)
google-cloud-env
opentelemetry-sdk
opentelemetry-sdk (1.0.2)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.19.3)
opentelemetry-instrumentation-base (~> 0.19.0)
opentelemetry-semantic_conventions
opentelemetry-semantic_conventions (1.8.0)
opentelemetry-api (~> 1.0)
optimist (3.0.1)
os (1.1.4)
pickup (0.0.11)
prometheus-client (2.1.0)
public_suffix (4.0.6)
puma (5.5.2-java)
nio4r (~> 2.0)
racc (1.6.0-java)
rack (2.2.3)
rack-protection (2.1.0)
rack
rake (13.0.6)
rbvmomi (3.0.0)
builder (~> 3.2)
json (~> 2.3)
nokogiri (~> 1.10)
optimist (~> 3.0)
redis (4.5.1)
representable (3.1.1)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.5)
ruby2_keywords (0.0.5)
signet (0.16.0)
addressable (~> 2.8)
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
sinatra (2.1.0)
mustermann (~> 1.0)
rack (~> 2.2)
rack-protection (= 2.1.0)
tilt (~> 2.0)
spicy-proton (2.1.13)
bindata (~> 2.3)
statsd-ruby (1.5.0)
thrift (0.15.0)
tilt (2.0.10)
trailblazer-option (0.1.2)
uber (0.1.0)
webrick (1.7.0)
zonefile (1.06)
PLATFORMS
universal-java-1.8
DEPENDENCIES
vmpooler!
vmpooler-provider-gce!
vmpooler-provider-vsphere!
BUNDLED WITH
2.3.5

View file

@ -4,7 +4,7 @@ services:
vmpooler-api:
build:
context: ../
dockerfile: docker/Dockerfile_local
dockerfile: docker/Dockerfile
volumes:
- type: bind
source: ${PWD}/vmpooler.yaml
@ -28,7 +28,7 @@ services:
vmpooler-manager:
build:
context: ../
dockerfile: docker/Dockerfile_local
dockerfile: docker/Dockerfile
volumes:
- type: bind
source: ${PWD}/vmpooler.yaml
@ -57,6 +57,19 @@ services:
- "6379:6379"
networks:
- redis-net
redis-commander:
container_name: redis-commander
hostname: redis-commander
image: rediscommander/redis-commander:latest
restart: always
environment:
- REDIS_HOSTS=local:redislocal:6379
ports:
- "8079:8081"
networks:
- redis-net
depends_on:
- redislocal
jaeger-aio:
image: jaegertracing/all-in-one:1.18
ports:

View file

@ -1,6 +1,6 @@
#!/bin/sh
set -e
set -- vmpooler "$@"
set -- bundle exec vmpooler "$@"
exec "$@"

8
docker/update-gemfile-lock.sh Executable file
View file

@ -0,0 +1,8 @@
#!/usr/bin/env bash
docker run -it --rm \
-v $(pwd)/docker:/app \
-v $(pwd):/app/vmpooler-source \
$(grep ^FROM docker/Dockerfile |cut -d ' ' -f2) \
/bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"'
rmdir docker/vmpooler-source