mirror of
https://github.com/puppetlabs/vmpooler-deployment.git
synced 2026-01-26 03:28:41 -05:00
Consolidate dockerfiles and add docs for development
This will reduce the number of files that need to be managed and dependencies that need updated at the same time.
This commit is contained in:
parent
3a771dfadd
commit
71b4edcd1d
35 changed files with 386 additions and 627 deletions
6
docker/.dockerignore
Normal file
6
docker/.dockerignore
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Exclude everything by default; explicitly include necessary files
|
||||
*
|
||||
!Gemfile
|
||||
!Gemfile.lock
|
||||
!Gemfile.local
|
||||
!docker-entrypoint.sh
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
# RUN:
|
||||
# docker run -e VMPOOLER_CONFIG -p 80:4567 -it vmpooler
|
||||
|
||||
FROM jruby:9.3.6-jdk
|
||||
FROM amd64/jruby:9.3.6-jdk
|
||||
|
||||
LABEL org.opencontainers.image.description "VMPooler plus all known providers"
|
||||
|
||||
|
|
@ -23,8 +23,7 @@ RUN apt-get update -qq && \
|
|||
apt-get autoremove -y && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN gem install bundler && \
|
||||
gem update --system 3.2.3
|
||||
RUN gem install bundler
|
||||
|
||||
COPY ./docker-entrypoint.sh /usr/local/bin/
|
||||
|
||||
43
docker/Dockerfile.local
Normal file
43
docker/Dockerfile.local
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# For local development of vmpooler core and provider gems instead of using a
|
||||
# git source ensure the following directory structure:
|
||||
# |-- vmpooler-projects
|
||||
# | |--vmpooler-deployment
|
||||
# | |--vmpooler-provider-ec2
|
||||
# | |--vmpooler-provider-gce
|
||||
# | |--vmpooler-provider-vsphere
|
||||
#
|
||||
# Then change directory into vmpooler-projects and build with:
|
||||
|
||||
|
||||
FROM amd64/jruby:9.3.6-jdk
|
||||
|
||||
LABEL org.opencontainers.image.description "VMPooler plus all known providers"
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV LOGFILE=/dev/stdout
|
||||
ENV RACK_ENV=production
|
||||
|
||||
RUN apt-get update -qq && \
|
||||
apt-get upgrade -y && \
|
||||
apt-get install -y --no-install-recommends make git netbase && \
|
||||
apt-get clean autoclean && \
|
||||
apt-get autoremove -y && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY vmpooler /opt/vmpooler
|
||||
COPY vmpooler-provider-ec2 /opt/vmpooler-provider-ec2
|
||||
COPY vmpooler-provider-gce /opt/vmpooler-provider-gce
|
||||
COPY vmpooler-provider-vsphere /opt/vmpooler-provider-vsphere
|
||||
|
||||
RUN gem install bundler
|
||||
|
||||
COPY vmpooler-deployment/docker/docker-entrypoint.sh /usr/local/bin/
|
||||
|
||||
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
|
||||
|
||||
COPY vmpooler-deployment/docker/Gemfile.local ./Gemfile
|
||||
|
||||
RUN bundle config set --local jobs 3 && \
|
||||
bundle install
|
||||
|
||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||
12
docker/Gemfile
Normal file
12
docker/Gemfile
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
|
||||
|
||||
gem 'vmpooler', '~> 2.4'
|
||||
gem 'vmpooler-provider-ec2', '~> 0.0.1'
|
||||
gem 'vmpooler-provider-gce', '~> 0.4'
|
||||
gem 'vmpooler-provider-vsphere', '~> 1.6'
|
||||
|
||||
# For development install via a git branch use something like:
|
||||
# gem 'vmpooler', git: 'https://github.com/puppetlabs/vmpooler.git', branch: 'my-feature'
|
||||
# gem 'vmpooler-provider-ec2', git: 'https://github.com/puppetlabs/vmpooler-provider-ec2.git', branch: 'my-feature'
|
||||
# gem 'vmpooler-provider-gce', git: 'https://github.com/puppetlabs/vmpooler-provider-gce.git', branch: 'my-feature'
|
||||
# gem 'vmpooler-provider-vsphere', git: 'https://github.com/puppetlabs/vmpooler-provider-vsphere.git', branch: 'my-feature'
|
||||
6
docker/Gemfile.local
Normal file
6
docker/Gemfile.local
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
|
||||
|
||||
gem 'vmpooler', path: '/opt/vmpooler'
|
||||
gem 'vmpooler-provider-ec2', path: '/opt/vmpooler-provider-ec2'
|
||||
gem 'vmpooler-provider-gce', path: '/opt/vmpooler-provider-gce'
|
||||
gem 'vmpooler-provider-vsphere', path: '/opt/vmpooler-provider-vsphere'
|
||||
0
docker/data/redis/.gitkeep
Normal file
0
docker/data/redis/.gitkeep
Normal file
37
docker/data/vmpooler.yaml
Normal file
37
docker/data/vmpooler.yaml
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
:providers:
|
||||
:dummy:
|
||||
filename: '/tmp/dummy-backing.yaml'
|
||||
|
||||
:prometheus:
|
||||
prefix: 'vmpooler-local'
|
||||
|
||||
:redis:
|
||||
server: 'redis-server'
|
||||
|
||||
:auth:
|
||||
provider: 'dummy'
|
||||
|
||||
:config:
|
||||
site_name: 'vmpooler'
|
||||
logfile: '/var/log/vmpooler.log'
|
||||
task_limit: 10
|
||||
timeout: 15
|
||||
vm_checktime: 1
|
||||
vm_lifetime: 12
|
||||
vm_lifetime_auth: 24
|
||||
allowed_tags:
|
||||
- 'created_by'
|
||||
- 'project'
|
||||
domain: 'example.com'
|
||||
# domain: 'localhost' # Flip these out for local requests
|
||||
|
||||
:pools:
|
||||
- name: 'debian-10-x86_64'
|
||||
template: 'Templates/debian-7-x86_64'
|
||||
folder: 'Pooled VMs/debian-7-x86_64'
|
||||
datastore: 'vmstorage'
|
||||
size: 5
|
||||
timeout: 15
|
||||
ready_ttl: 1440
|
||||
provider: dummy
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
.bundle/
|
||||
vendor/
|
||||
update-gemfile-lock.sh
|
||||
|
|
@ -1,38 +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.3.6-jdk
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV RACK_ENV=production
|
||||
|
||||
RUN apt-get update -qq && \
|
||||
apt-get upgrade -y && \
|
||||
apt-get install -y --no-install-recommends make git netbase && \
|
||||
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"]
|
||||
|
|
@ -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.3.6-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 git 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}
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
# For local development run with a dummy provider
|
||||
version: '3.8'
|
||||
services:
|
||||
vmpooler-api:
|
||||
build:
|
||||
context: ../
|
||||
dockerfile: docker/Dockerfile_local
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ${PWD}/vmpooler.yaml
|
||||
target: /etc/vmpooler/vmpooler.yaml
|
||||
ports:
|
||||
- "8080:4567"
|
||||
networks:
|
||||
- redis-net
|
||||
environment:
|
||||
- VMPOOLER_DEBUG=true # for use of dummy auth
|
||||
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
|
||||
- REDIS_SERVER=redislocal
|
||||
- LOGFILE=/dev/null
|
||||
- VMPOOLER_TRACING_ENABLED=true
|
||||
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
|
||||
image: vmpooler-local
|
||||
command: api
|
||||
depends_on:
|
||||
- redislocal
|
||||
vmpooler-manager:
|
||||
build:
|
||||
context: ../
|
||||
dockerfile: docker/Dockerfile_local
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ${PWD}/vmpooler.yaml
|
||||
target: /etc/vmpooler/vmpooler.yaml
|
||||
ports:
|
||||
- "8081:4567"
|
||||
networks:
|
||||
- redis-net
|
||||
environment:
|
||||
- VMPOOLER_DEBUG=true # for use of dummy auth
|
||||
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
|
||||
- REDIS_SERVER=redislocal
|
||||
- LOGFILE=/dev/null
|
||||
- VMPOOLER_TRACING_ENABLED=true
|
||||
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
|
||||
image: vmpooler-local
|
||||
command: manager
|
||||
depends_on:
|
||||
- redislocal
|
||||
redislocal:
|
||||
image: redis
|
||||
# Uncomment this if you don't want the redis data to persist
|
||||
#command: "redis-server --save '' --appendonly no"
|
||||
ports:
|
||||
- "6379:6379"
|
||||
networks:
|
||||
- redis-net
|
||||
jaeger-aio:
|
||||
image: jaegertracing/all-in-one:1.18
|
||||
ports:
|
||||
- "14250:14250"
|
||||
- "8082:16686"
|
||||
networks:
|
||||
- redis-net
|
||||
user: '1001'
|
||||
read_only: true
|
||||
cap_drop:
|
||||
- ALL
|
||||
|
||||
networks:
|
||||
redis-net:
|
||||
79
docker/docker-compose.local.yml
Normal file
79
docker/docker-compose.local.yml
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
# For local development run with a dummy provider
|
||||
version: '3.8'
|
||||
services:
|
||||
redis-server:
|
||||
# This should match the major version used in the vmpooler helm chart
|
||||
image: redis:6
|
||||
command: "redis-server --requirepass vmpooler"
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./data/redis
|
||||
target: /data
|
||||
ports:
|
||||
- "6379:6379"
|
||||
|
||||
redis-commander:
|
||||
image: rediscommander/redis-commander:latest
|
||||
environment:
|
||||
- REDIS_HOST=redis-server
|
||||
- REDIS_PASSWORD=vmpooler
|
||||
- HTTP_USER=admin
|
||||
- HTTP_PASSWORD=admin
|
||||
ports:
|
||||
- 8080:8081
|
||||
links:
|
||||
- redis-server
|
||||
|
||||
jaeger-aio:
|
||||
image: jaegertracing/all-in-one:1
|
||||
ports:
|
||||
- "14250:14250"
|
||||
- "8081:16686"
|
||||
user: '1001'
|
||||
read_only: true
|
||||
cap_drop:
|
||||
- ALL
|
||||
|
||||
vmpooler-api:
|
||||
# See image build instructions in README and Dockerfile.local
|
||||
image: vmpooler-local
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./data/vmpooler.yaml
|
||||
target: /etc/vmpooler/vmpooler.yaml
|
||||
ports:
|
||||
- "8082:4567"
|
||||
environment:
|
||||
- VMPOOLER_DEBUG=true # for use of dummy auth
|
||||
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
|
||||
- REDIS_SERVER=redis-server
|
||||
- REDIS_PASSWORD=vmpooler
|
||||
- LOGFILE=/dev/null
|
||||
- VMPOOLER_TRACING_ENABLED=true
|
||||
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
|
||||
command: api
|
||||
links:
|
||||
- redis-server
|
||||
- jaeger-aio
|
||||
|
||||
vmpooler-manager:
|
||||
# See image build instructions in README and Dockerfile.local
|
||||
image: vmpooler-local
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./data/vmpooler.yaml
|
||||
target: /etc/vmpooler/vmpooler.yaml
|
||||
ports:
|
||||
- "8083:4567"
|
||||
environment:
|
||||
- VMPOOLER_DEBUG=true # for use of dummy auth
|
||||
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
|
||||
- REDIS_SERVER=redis-server
|
||||
- REDIS_PASSWORD=vmpooler
|
||||
- LOGFILE=/dev/null
|
||||
- VMPOOLER_TRACING_ENABLED=true
|
||||
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
|
||||
command: manager
|
||||
links:
|
||||
- redis-server
|
||||
- jaeger-aio
|
||||
89
docker/docker-compose.yml
Normal file
89
docker/docker-compose.yml
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
# For local development run with a dummy provider
|
||||
version: '3.8'
|
||||
services:
|
||||
redis-server:
|
||||
# This should match the major version used in the vmpooler helm chart
|
||||
image: redis:6
|
||||
command: "redis-server --requirepass vmpooler"
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./data/redis
|
||||
target: /data
|
||||
ports:
|
||||
- "6379:6379"
|
||||
|
||||
redis-commander:
|
||||
image: rediscommander/redis-commander:latest
|
||||
environment:
|
||||
- REDIS_HOST=redis-server
|
||||
- REDIS_PASSWORD=vmpooler
|
||||
- HTTP_USER=admin
|
||||
- HTTP_PASSWORD=admin
|
||||
ports:
|
||||
- 8080:8081
|
||||
links:
|
||||
- redis-server
|
||||
|
||||
jaeger-aio:
|
||||
image: jaegertracing/all-in-one:1
|
||||
ports:
|
||||
- "14250:14250"
|
||||
- "8081:16686"
|
||||
user: '1001'
|
||||
read_only: true
|
||||
cap_drop:
|
||||
- ALL
|
||||
|
||||
vmpooler-api:
|
||||
# Uncomment image and comment out build, which will allow you to use an
|
||||
# image with local gem source instead of from a git source.
|
||||
# See build instructions in Dockerfile.local
|
||||
# image: vmpooler-local
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: Dockerfile
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./data/vmpooler.yaml
|
||||
target: /etc/vmpooler/vmpooler.yaml
|
||||
ports:
|
||||
- "8082:4567"
|
||||
environment:
|
||||
- VMPOOLER_DEBUG=true # for use of dummy auth
|
||||
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
|
||||
- REDIS_SERVER=redis-server
|
||||
- REDIS_PASSWORD=vmpooler
|
||||
- LOGFILE=/dev/null
|
||||
- VMPOOLER_TRACING_ENABLED=true
|
||||
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
|
||||
command: api
|
||||
links:
|
||||
- redis-server
|
||||
- jaeger-aio
|
||||
|
||||
vmpooler-manager:
|
||||
# Uncomment image and comment out build, which will allow you to use an
|
||||
# image with local gem source instead of from a git source.
|
||||
# See build instructions in Dockerfile.local
|
||||
# image: vmpooler-local
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: Dockerfile
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./data/vmpooler.yaml
|
||||
target: /etc/vmpooler/vmpooler.yaml
|
||||
ports:
|
||||
- "8083:4567"
|
||||
environment:
|
||||
- VMPOOLER_DEBUG=true # for use of dummy auth
|
||||
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
|
||||
- REDIS_SERVER=redis-server
|
||||
- REDIS_PASSWORD=vmpooler
|
||||
- LOGFILE=/dev/null
|
||||
- VMPOOLER_TRACING_ENABLED=true
|
||||
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
|
||||
command: manager
|
||||
links:
|
||||
- redis-server
|
||||
- jaeger-aio
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
---
|
||||
BUNDLE_PATH: "vendor/bundle"
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
.bundle/
|
||||
vendor/
|
||||
update-gemfile-lock.sh
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
|
||||
|
||||
gem 'vmpooler', '~> 2.4'
|
||||
gem 'vmpooler-provider-ec2', '~> 0.0.1'
|
||||
gem 'vmpooler-provider-gce', '~> 0.4'
|
||||
gem 'vmpooler-provider-vsphere', '~> 1.6'
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
# For local development run with a dummy provider
|
||||
version: '3.8'
|
||||
services:
|
||||
vmpooler-api:
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: Dockerfile
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ${PWD}/vmpooler.yaml
|
||||
target: /etc/vmpooler/vmpooler.yaml
|
||||
ports:
|
||||
- "8080:4567"
|
||||
networks:
|
||||
- redis-net
|
||||
environment:
|
||||
- VMPOOLER_DEBUG=true # for use of dummy auth
|
||||
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
|
||||
- REDIS_SERVER=redislocal
|
||||
- LOGFILE=/dev/null
|
||||
- VMPOOLER_TRACING_ENABLED=true
|
||||
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
|
||||
image: vmpooler-local
|
||||
command: api
|
||||
depends_on:
|
||||
- redislocal
|
||||
vmpooler-manager:
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: Dockerfile
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ${PWD}/vmpooler.yaml
|
||||
target: /etc/vmpooler/vmpooler.yaml
|
||||
ports:
|
||||
- "8081:4567"
|
||||
networks:
|
||||
- redis-net
|
||||
environment:
|
||||
- VMPOOLER_DEBUG=true # for use of dummy auth
|
||||
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
|
||||
- REDIS_SERVER=redislocal
|
||||
- LOGFILE=/dev/null
|
||||
- VMPOOLER_TRACING_ENABLED=true
|
||||
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
|
||||
image: vmpooler-local
|
||||
command: manager
|
||||
depends_on:
|
||||
- redislocal
|
||||
redislocal:
|
||||
image: redis
|
||||
# Uncomment this if you don't want the redis data to persist
|
||||
#command: "redis-server --save '' --appendonly no"
|
||||
ports:
|
||||
- "6379:6379"
|
||||
networks:
|
||||
- redis-net
|
||||
jaeger-aio:
|
||||
image: jaegertracing/all-in-one:1.18
|
||||
ports:
|
||||
- "14250:14250"
|
||||
- "8082:16686"
|
||||
networks:
|
||||
- redis-net
|
||||
user: '1001'
|
||||
read_only: true
|
||||
cap_drop:
|
||||
- ALL
|
||||
|
||||
networks:
|
||||
redis-net:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
set -- bundle exec vmpooler "$@"
|
||||
|
||||
exec "$@"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
docker run -it --rm \
|
||||
-v $(pwd):/app \
|
||||
$(grep ^FROM ./Dockerfile |cut -d ' ' -f2) \
|
||||
/bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make git && cd /app && gem install bundler && gem update --system 3.2.3 && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"'
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
---
|
||||
BUNDLE_PATH: "vendor/bundle"
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
.bundle/
|
||||
vendor/
|
||||
update-gemfile-lock.sh
|
||||
|
|
@ -1,38 +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.3.6-jdk
|
||||
|
||||
LABEL org.opencontainers.image.description "VMPooler and known providers pulled directly from Git"
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV LOGFILE=/dev/stdout
|
||||
ENV RACK_ENV=production
|
||||
|
||||
RUN apt-get update -qq && \
|
||||
apt-get upgrade -y && \
|
||||
apt-get install -y --no-install-recommends make git netbase && \
|
||||
apt-get clean autoclean && \
|
||||
apt-get autoremove -y && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN gem install bundler && \
|
||||
gem update --system 3.2.3
|
||||
|
||||
COPY ./docker-entrypoint.sh /usr/local/bin/
|
||||
|
||||
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
|
||||
|
||||
COPY ./Gemfile* ./
|
||||
|
||||
RUN bundle config set --local jobs 3 && \
|
||||
bundle install
|
||||
|
||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
|
||||
|
||||
gem 'vmpooler', git: 'https://github.com/puppetlabs/vmpooler.git'
|
||||
gem 'vmpooler-provider-ec2', git: 'https://github.com/puppetlabs/vmpooler-provider-ec2.git'
|
||||
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'
|
||||
|
||||
|
|
@ -1,215 +0,0 @@
|
|||
GIT
|
||||
remote: https://github.com/puppetlabs/vmpooler-provider-ec2.git
|
||||
revision: 13d0de6dc035c46dcd099d0b5e9b02bc19e8fcdd
|
||||
specs:
|
||||
vmpooler-provider-ec2 (0.0.1)
|
||||
aws-sdk-ec2 (~> 1)
|
||||
net-ssh (~> 6.2.0.rc2)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/puppetlabs/vmpooler-provider-gce.git
|
||||
revision: 46b9c5aef06184f8a2bd0be6086ae2256b19020a
|
||||
specs:
|
||||
vmpooler-provider-gce (0.3.0)
|
||||
google-apis-compute_v1 (~> 0.14)
|
||||
google-cloud-dns (~> 0.35.1)
|
||||
googleauth (>= 0.16.2, < 1.2.0)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/puppetlabs/vmpooler-provider-vsphere.git
|
||||
revision: 82e35dfb54705f9a495b64498779da6cfb322f16
|
||||
specs:
|
||||
vmpooler-provider-vsphere (1.6.0)
|
||||
rbvmomi (>= 2.1, < 4.0)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/puppetlabs/vmpooler.git
|
||||
revision: b9a1bb74017c417526cde6586b8dd333435ff74c
|
||||
specs:
|
||||
vmpooler (2.4.0)
|
||||
concurrent-ruby (~> 1.1)
|
||||
connection_pool (~> 2.2)
|
||||
deep_merge (~> 1.2)
|
||||
net-ldap (~> 0.16)
|
||||
opentelemetry-exporter-jaeger (= 0.20.1)
|
||||
opentelemetry-instrumentation-concurrent_ruby (= 0.19.2)
|
||||
opentelemetry-instrumentation-http_client (= 0.19.4)
|
||||
opentelemetry-instrumentation-redis (= 0.21.3)
|
||||
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)
|
||||
aws-eventstream (1.2.0)
|
||||
aws-partitions (1.610.0)
|
||||
aws-sdk-core (3.131.3)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.525.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-ec2 (1.324.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sigv4 (1.5.1)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
bindata (2.4.10)
|
||||
builder (3.2.4)
|
||||
concurrent-ruby (1.1.10)
|
||||
connection_pool (2.2.5)
|
||||
declarative (0.0.20)
|
||||
deep_merge (1.2.2)
|
||||
faraday (2.3.0)
|
||||
faraday-net_http (~> 2.0)
|
||||
ruby2_keywords (>= 0.0.4)
|
||||
faraday-net_http (2.0.3)
|
||||
google-apis-compute_v1 (0.44.0)
|
||||
google-apis-core (>= 0.7, < 2.a)
|
||||
google-apis-core (0.7.0)
|
||||
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.23.0)
|
||||
google-apis-core (>= 0.7, < 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.6.0)
|
||||
faraday (>= 0.17.3, < 3.0)
|
||||
google-cloud-errors (1.2.0)
|
||||
googleauth (1.1.3)
|
||||
faraday (>= 0.17.3, < 3.a)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
memoist (~> 0.16)
|
||||
multi_json (~> 1.11)
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (>= 0.16, < 2.a)
|
||||
httpclient (2.8.3)
|
||||
jmespath (1.6.1)
|
||||
json (2.6.2-java)
|
||||
jwt (2.4.1)
|
||||
memoist (0.16.2)
|
||||
mini_mime (1.1.2)
|
||||
multi_json (1.15.0)
|
||||
mustermann (2.0.2)
|
||||
ruby2_keywords (~> 0.0.1)
|
||||
net-ldap (0.17.1)
|
||||
net-ssh (6.2.0.rc2)
|
||||
nio4r (2.5.8-java)
|
||||
nokogiri (1.13.8-java)
|
||||
racc (~> 1.4)
|
||||
opentelemetry-api (1.0.2)
|
||||
opentelemetry-common (0.19.6)
|
||||
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-http_client (0.19.4)
|
||||
opentelemetry-api (~> 1.0)
|
||||
opentelemetry-common (~> 0.19.3)
|
||||
opentelemetry-instrumentation-base (~> 0.19.0)
|
||||
opentelemetry-instrumentation-redis (0.21.3)
|
||||
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-registry (0.1.0)
|
||||
opentelemetry-api (~> 1.0.1)
|
||||
opentelemetry-resource_detectors (0.19.1)
|
||||
google-cloud-env
|
||||
opentelemetry-sdk
|
||||
opentelemetry-sdk (1.1.0)
|
||||
opentelemetry-api (~> 1.0)
|
||||
opentelemetry-common (~> 0.19.3)
|
||||
opentelemetry-registry (~> 0.1)
|
||||
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.7)
|
||||
puma (5.6.4-java)
|
||||
nio4r (~> 2.0)
|
||||
racc (1.6.0-java)
|
||||
rack (2.2.4)
|
||||
rack-protection (2.2.2)
|
||||
rack
|
||||
rake (13.0.6)
|
||||
rbvmomi (3.0.0)
|
||||
builder (~> 3.2)
|
||||
json (~> 2.3)
|
||||
nokogiri (~> 1.10)
|
||||
optimist (~> 3.0)
|
||||
redis (4.7.1)
|
||||
representable (3.2.0)
|
||||
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.17.0)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
sinatra (2.2.2)
|
||||
mustermann (~> 2.0)
|
||||
rack (~> 2.2)
|
||||
rack-protection (= 2.2.2)
|
||||
tilt (~> 2.0)
|
||||
spicy-proton (2.1.14)
|
||||
bindata (~> 2.3)
|
||||
statsd-ruby (1.5.0)
|
||||
thrift (0.16.0)
|
||||
tilt (2.0.11)
|
||||
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-ec2!
|
||||
vmpooler-provider-gce!
|
||||
vmpooler-provider-vsphere!
|
||||
|
||||
BUNDLED WITH
|
||||
2.3.18
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
# For local development run with a dummy provider
|
||||
version: '3.8'
|
||||
services:
|
||||
vmpooler-api:
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: Dockerfile
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ${PWD}/vmpooler.yaml
|
||||
target: /etc/vmpooler/vmpooler.yaml
|
||||
ports:
|
||||
- "8080:4567"
|
||||
networks:
|
||||
- redis-net
|
||||
environment:
|
||||
- VMPOOLER_DEBUG=true # for use of dummy auth
|
||||
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
|
||||
- REDIS_SERVER=redislocal
|
||||
- LOGFILE=/dev/null
|
||||
- VMPOOLER_TRACING_ENABLED=true
|
||||
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
|
||||
image: vmpooler-local
|
||||
command: api
|
||||
depends_on:
|
||||
- redislocal
|
||||
vmpooler-manager:
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: Dockerfile
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ${PWD}/vmpooler.yaml
|
||||
target: /etc/vmpooler/vmpooler.yaml
|
||||
ports:
|
||||
- "8081:4567"
|
||||
networks:
|
||||
- redis-net
|
||||
environment:
|
||||
- VMPOOLER_DEBUG=true # for use of dummy auth
|
||||
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
|
||||
- REDIS_SERVER=redislocal
|
||||
- LOGFILE=/dev/null
|
||||
- VMPOOLER_TRACING_ENABLED=true
|
||||
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
|
||||
image: vmpooler-local
|
||||
command: manager
|
||||
depends_on:
|
||||
- redislocal
|
||||
redislocal:
|
||||
image: redis
|
||||
# Uncomment this if you don't want the redis data to persist
|
||||
#command: "redis-server --save '' --appendonly no"
|
||||
ports:
|
||||
- "6379:6379"
|
||||
networks:
|
||||
- redis-net
|
||||
jaeger-aio:
|
||||
image: jaegertracing/all-in-one:1.18
|
||||
ports:
|
||||
- "14250:14250"
|
||||
- "8082:16686"
|
||||
networks:
|
||||
- redis-net
|
||||
user: '1001'
|
||||
read_only: true
|
||||
cap_drop:
|
||||
- ALL
|
||||
|
||||
networks:
|
||||
redis-net:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
set -- bundle exec vmpooler "$@"
|
||||
|
||||
exec "$@"
|
||||
Loading…
Add table
Add a link
Reference in a new issue