Skip to content

Commit 70a41b8

Browse files
authored
Merge pull request #92 from puppetlabs/add-google-clouddns
(RE-15124) Bump vmpooler, providers, and add new dns gem
2 parents 9b12364 + db4058f commit 70a41b8

File tree

11 files changed

+89
-48
lines changed

11 files changed

+89
-48
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/*/**/vendor/bundle/
22
/docker/**/vmpooler.yaml
3+
/docker/data/*.json
34
.vagrant/
45
.idea/
56
helm-charts/vmpooler/charts/

README.md

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
# vmpooler-deployment
22

3-
- [vmpooler-deployment](#vmpooler-deployment)
4-
- [VMPooler Components](#vmpooler-components)
5-
- [Docker Registry](#docker-registry)
6-
- [Helm Repository](#helm-repository)
7-
- [Adding / updating charts](#adding--updating-charts)
8-
- [Development](#development)
9-
- [Docker Compose URLs](#docker-compose-urls)
10-
- [Deploy Chart for Testing](#deploy-chart-for-testing)
11-
- [Releasing](#releasing)
12-
- [Contributing](#contributing)
13-
- [License](#license)
3+
- [VMPooler Components](#vmpooler-components)
4+
- [Docker Registry](#docker-registry)
5+
- [Helm Repository](#helm-repository)
6+
- [Adding / updating charts](#adding--updating-charts)
7+
- [Development](#development)
8+
- [Docker Compose URLs](#docker-compose-urls)
9+
- [Deploy Chart for Testing](#deploy-chart-for-testing)
10+
- [Releasing](#releasing)
11+
- [Contributing](#contributing)
12+
- [License](#license)
1413

1514
This repo contains Dockerfiles and a Helm chart that can be used to deploy [VMPooler](https://github.com/puppetlabs/vmpooler). The Release Engineering team at Puppet uses the code here as part of operating our VMPooler instances.
1615

@@ -19,6 +18,7 @@ This repo contains Dockerfiles and a Helm chart that can be used to deploy [VMPo
1918
The docker image gnerated and hosted by this project contain the following VMPooler components:
2019

2120
- [VMPooler Core](https://github.com/puppetlabs/vmpooler)
21+
- [VMPooler Google CloudDNS Plugin](https://github.com/puppetlabs/vmpooler-dns-google-clouddns)
2222
- [VMPooler EC2 Provider](https://github.com/puppetlabs/vmpooler-provider-ec2)
2323
- [VMPooler GCE Provider](https://github.com/puppetlabs/vmpooler-provider-gce)
2424
- [VMPooler vSphere Provider](https://github.com/puppetlabs/vmpooler-provider-vsphere)
@@ -56,13 +56,16 @@ Prerequisites:
5656
- [vmpooler-provider-ec2](https://github.com/puppetlabs/vmpooler-provider-ec2)
5757
- [vmpooler-provider-gce](https://github.com/puppetlabs/vmpooler-provider-gce)
5858
- [vmpooler-provider-vsphere](https://github.com/puppetlabs/vmpooler-provider-vsphere)
59+
- If you are not using Dynamic DNS, then the following DNS plugins can be used to manage records across different compute providers:
60+
- [VMPooler Google CloudDNS Plugin](https://github.com/puppetlabs/vmpooler-dns-google-clouddns)
5961
2. Chose a Development method:
6062
- Develop via local source:
6163
1. Clone all of the known vmpooler projects listed at [vmpooler-components](#vmpooler-components) under a common directory, for example:
6264

6365
```bash
6466
|-- vmpooler-projects
6567
| |--vmpooler-deployment
68+
| |--vmpooler-dns-google-clouddns
6669
| |--vmpooler-provider-ec2
6770
| |--vmpooler-provider-gce
6871
| |--vmpooler-provider-vsphere
@@ -72,10 +75,10 @@ Prerequisites:
7275
3. Run `docker compose -f vmpooler-deployment/docker/docker-compose.local.yml up`
7376

7477
- Develop via Git source:
75-
1. For the component(s) you are developing on, commit and push changes to a branch.
76-
2. Change to the `docker` directory and modify the `Gemfile` as needed to pull the gem(s) from your git branch.
77-
3. Run `./update-gemfile-lock` to update the `Gemfile.lock`
78-
4. Run `docker compose build && docker compose up`.
78+
4. For the component(s) you are developing on, commit and push changes to a branch.
79+
5. Change to the `docker` directory and modify the `Gemfile` as needed to pull the gem(s) from your git branch.
80+
6. Run `./update-gemfile-lock` to update the `Gemfile.lock`
81+
7. Run `docker compose build && docker compose up`.
7982

8083
When a dependency Helm chart is updated, be sure to run `./update-chart-lock` to update the lockfile, otherwise the test and release workflows will fail.
8184

docker/Dockerfile.local

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ RUN apt-get update -qq && \
2525
rm -rf /var/lib/apt/lists/*
2626

2727
COPY vmpooler /opt/vmpooler
28+
COPY vmpooler-dns-gcp /opt/vmpooler-dns-gcp
2829
COPY vmpooler-provider-ec2 /opt/vmpooler-provider-ec2
2930
COPY vmpooler-provider-gce /opt/vmpooler-provider-gce
3031
COPY vmpooler-provider-vsphere /opt/vmpooler-provider-vsphere

docker/Gemfile

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
22

3-
gem 'vmpooler', '~> 2.5'
3+
gem 'vmpooler', '~> 3.0'
4+
gem 'vmpooler-dns-gcp', '~> 1.0'
45
# Remove temporarily until a stable minor release is published
56
# gem 'vmpooler-provider-ec2', '~> 0.0.1'
6-
gem 'vmpooler-provider-gce', '~> 0.5'
7-
gem 'vmpooler-provider-vsphere', '~> 2.1'
7+
gem 'vmpooler-provider-gce', '~> 1.0'
8+
gem 'vmpooler-provider-vsphere', '~> 3.0'
89

910
# For development install via a git branch use something like:
1011
# gem 'vmpooler', git: 'https://github.com/puppetlabs/vmpooler.git', branch: 'my-feature'
12+
# gem 'vmpooler-dns-gcp', git: 'https://github.com/puppetlabs/vmpooler-dns-gcp.git', branch: 'my-feature'
1113
# gem 'vmpooler-provider-ec2', git: 'https://github.com/puppetlabs/vmpooler-provider-ec2.git', branch: 'my-feature'
1214
# gem 'vmpooler-provider-gce', git: 'https://github.com/puppetlabs/vmpooler-provider-gce.git', branch: 'my-feature'
1315
# gem 'vmpooler-provider-vsphere', git: 'https://github.com/puppetlabs/vmpooler-provider-vsphere.git', branch: 'my-feature'

docker/Gemfile.local

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
22

33
gem 'vmpooler', path: '/opt/vmpooler'
4+
gem 'vmpooler-dns-gcp', path: '/opt/vmpooler-dns-gcp'
45
gem 'vmpooler-provider-ec2', path: '/opt/vmpooler-provider-ec2'
56
gem 'vmpooler-provider-gce', path: '/opt/vmpooler-provider-gce'
67
gem 'vmpooler-provider-vsphere', path: '/opt/vmpooler-provider-vsphere'

docker/Gemfile.lock

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
GEM
22
remote: https://rubygems.org/
33
specs:
4-
addressable (2.8.1)
4+
addressable (2.8.4)
55
public_suffix (>= 2.0.2, < 6.0)
66
bindata (2.4.15)
77
builder (3.2.4)
88
concurrent-ruby (1.2.2)
9-
connection_pool (2.3.0)
9+
connection_pool (2.4.0)
1010
declarative (0.0.20)
1111
deep_merge (1.2.2)
1212
faraday (2.7.4)
1313
faraday-net_http (>= 2.0, < 3.1)
1414
ruby2_keywords (>= 0.0.4)
1515
faraday-net_http (3.0.2)
16-
google-apis-compute_v1 (0.63.0)
16+
google-apis-compute_v1 (0.66.0)
1717
google-apis-core (>= 0.11.0, < 2.a)
1818
google-apis-core (0.11.0)
1919
addressable (~> 2.5, >= 2.5.1)
@@ -24,7 +24,7 @@ GEM
2424
retriable (>= 2.0, < 4.a)
2525
rexml
2626
webrick
27-
google-apis-dns_v1 (0.31.0)
27+
google-apis-dns_v1 (0.32.0)
2828
google-apis-core (>= 0.11.0, < 2.a)
2929
google-cloud-core (1.6.0)
3030
google-cloud-env (~> 1.0)
@@ -52,9 +52,9 @@ GEM
5252
multi_json (1.15.0)
5353
mustermann (2.0.2)
5454
ruby2_keywords (~> 0.0.1)
55-
net-ldap (0.17.1)
56-
nio4r (2.5.8-java)
57-
nokogiri (1.14.2-java)
55+
net-ldap (0.18.0)
56+
nio4r (2.5.9-java)
57+
nokogiri (1.14.3-java)
5858
racc (~> 1.4)
5959
opentelemetry-api (1.1.0)
6060
opentelemetry-common (0.19.6)
@@ -101,7 +101,7 @@ GEM
101101
puma (5.6.5-java)
102102
nio4r (~> 2.0)
103103
racc (1.6.2-java)
104-
rack (2.2.6.3)
104+
rack (2.2.6.4)
105105
rack-protection (2.2.4)
106106
rack
107107
rake (13.0.6)
@@ -135,7 +135,7 @@ GEM
135135
tilt (2.1.0)
136136
trailblazer-option (0.1.2)
137137
uber (0.1.0)
138-
vmpooler (2.5.0)
138+
vmpooler (3.0.0)
139139
concurrent-ruby (~> 1.1)
140140
connection_pool (~> 2.2)
141141
deep_merge (~> 1.2)
@@ -156,24 +156,28 @@ GEM
156156
sinatra (~> 2.0)
157157
spicy-proton (~> 2.1)
158158
statsd-ruby (~> 1.4)
159-
vmpooler-provider-gce (0.5.0)
160-
google-apis-compute_v1 (~> 0.14)
159+
vmpooler-dns-gcp (1.0.0)
161160
google-cloud-dns (~> 0.35.1)
162161
googleauth (>= 0.16.2, < 1.3.0)
163-
vmpooler (~> 2.3, >= 1.3.0)
164-
vmpooler-provider-vsphere (2.1.0)
162+
vmpooler (~> 3.0)
163+
vmpooler-provider-gce (1.0.0)
164+
google-apis-compute_v1 (~> 0.14)
165+
googleauth (>= 0.16.2, < 1.3.0)
166+
vmpooler (~> 3.0)
167+
vmpooler-provider-vsphere (3.0.0)
165168
rbvmomi2 (>= 3.1, < 4.0)
166-
vmpooler (~> 2.4)
169+
vmpooler (~> 3.0)
167170
webrick (1.8.1)
168171
zonefile (1.06)
169172

170173
PLATFORMS
171174
universal-java-11
172175

173176
DEPENDENCIES
174-
vmpooler (~> 2.5)
175-
vmpooler-provider-gce (~> 0.5)
176-
vmpooler-provider-vsphere (~> 2.1)
177+
vmpooler (~> 3.0)
178+
vmpooler-dns-gcp (~> 1.0)
179+
vmpooler-provider-gce (~> 1.0)
180+
vmpooler-provider-vsphere (~> 3.0)
177181

178182
BUNDLED WITH
179-
2.4.7
183+
2.4.8

docker/data/vmpooler.yaml

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
---
2+
:dns_configs:
3+
ddns_domain: 'dynamic.example.com'
4+
:gcp-clouddns:
5+
project: vmpooler-example
6+
domain: vmpooler.example.com
7+
dns_zone_resource_name: vmpooler-example-com
8+
29
:providers:
10+
# :gce:
11+
# network_name: projects/vmpooler-example/global/networks/default
12+
# project: vmpooler-example
13+
# title: gce
14+
# zone: us-west1-b
15+
316
:dummy:
417
filename: '/tmp/dummy-backing.yaml'
518

@@ -23,13 +36,19 @@
2336
allowed_tags:
2437
- 'created_by'
2538
- 'project'
26-
domain: 'example.com'
27-
# domain: 'localhost' # Flip these out for local requests
2839

2940
:pools:
30-
- name: 'debian-10-x86_64'
31-
template: 'Templates/debian-7-x86_64'
32-
folder: 'Pooled VMs/debian-7-x86_64'
41+
# - name: 'fedora-36-x86_64'
42+
# template: 'projects/fedora-cloud/global/images/fedora-cloud-base-gcp-36-20220506-n-0-x86-64'
43+
# size: 0
44+
# provider: 'gce'
45+
# dns_plugin: 'google-clouddns'
46+
# machine_type: 'zones/us-west1-b/machineTypes/n1-standard-2'
47+
# disk_type: 'pd-ssd'
48+
# subnetwork_name: 'projects/vmpooler-example/regions/us-west1/subnetworks/default'
49+
- name: 'debian-11-x86_64'
50+
template: 'Templates/debian-11-x86_64'
51+
folder: 'Pooled VMs/debian-11-x86_64'
3352
datastore: 'vmstorage'
3453
size: 5
3554
timeout: 15

docker/docker-compose.local.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,21 @@ services:
4141
- type: bind
4242
source: ./data/vmpooler.yaml
4343
target: /etc/vmpooler/vmpooler.yaml
44+
# - type: bind
45+
# source: ./data/vmpooler-example-key.json
46+
# target: /etc/vmpooler/vmpooler-example-key.json
4447
ports:
4548
- "8082:4567"
4649
environment:
4750
- VMPOOLER_DEBUG=true # for use of dummy auth
51+
- DEBUG_FLAG=true
4852
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
4953
- REDIS_SERVER=redis-server
5054
- REDIS_PASSWORD=vmpooler
5155
- LOGFILE=/dev/null
5256
- VMPOOLER_TRACING_ENABLED=true
5357
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
58+
# - GOOGLE_APPLICATION_CREDENTIALS=/etc/vmpooler/vmpooler-example-key.json
5459
command: api
5560
links:
5661
- redis-server
@@ -63,16 +68,21 @@ services:
6368
- type: bind
6469
source: ./data/vmpooler.yaml
6570
target: /etc/vmpooler/vmpooler.yaml
71+
# - type: bind
72+
# source: ./data/vmpooler-example-key.json
73+
# target: /etc/vmpooler/vmpooler-example-key.json
6674
ports:
6775
- "8083:4567"
6876
environment:
6977
- VMPOOLER_DEBUG=true # for use of dummy auth
78+
- DEBUG_FLAG=true
7079
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
7180
- REDIS_SERVER=redis-server
7281
- REDIS_PASSWORD=vmpooler
7382
- LOGFILE=/dev/null
7483
- VMPOOLER_TRACING_ENABLED=true
7584
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
85+
# - GOOGLE_APPLICATION_CREDENTIALS=/etc/vmpooler/vmpooler-example-key.json
7686
command: manager
7787
links:
7888
- redis-server

helm-charts/vmpooler/templates/deployment-api.yaml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,13 @@ spec:
4646
- 'api'
4747
livenessProbe:
4848
httpGet:
49-
path: /api/v1/status
49+
path: /api/v3/status
5050
port: {{ .Values.service.port }}
5151
initialDelaySeconds: 40
5252
periodSeconds: 10
5353
readinessProbe:
5454
httpGet:
55-
path: /api/v1/status
55+
path: /api/v3/status
5656
port: {{ .Values.service.port }}
5757
initialDelaySeconds: 40
5858
periodSeconds: 10
@@ -63,8 +63,6 @@ spec:
6363
value: {{ .Values.service.port | quote }}
6464
- name: SITE_NAME
6565
value: '<b>{{ .Values.vmpoolerInstance }}</b>.{{ .Values.ingress.domain }}'
66-
- name: DOMAIN
67-
value: {{ .Values.sut_domain }}
6866
- name: EXPERIMENTAL_FEATURES
6967
value: 'true'
7068
- name: USAGE_STATS

helm-charts/vmpooler/templates/deployment-manager.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,6 @@ spec:
9393
value: '20'
9494
- name: PURGE_UNCONFIGURED_FOLDERS
9595
value: 'true'
96-
- name: DOMAIN
97-
value: {{ .Values.sut_domain }}
9896
- name: VMPOOLER_CONFIG_FILE
9997
value: /etc/vmpooler/vmpooler.yaml
10098
- name: VMPOOLER_TRACING_ENABLED

0 commit comments

Comments
 (0)