-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvmpooler.yaml.example
169 lines (164 loc) · 6.2 KB
/
vmpooler.yaml.example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
---
:providers:
# :providers:
#
# This section contains the VM providers for VMs and Pools
# The currently supported backing services are:
# - vsphere
# - dummy
# - gce
# - aws
#
# - provider_class
# For multiple providers, specify one of the supported backing services (vsphere or dummy or gce or aws)
# (optional: will default to it's parent :key: name eg. 'aws')
#
# - purge_unconfigured_resources
# Enable purging of VMs, disks and snapshots
# By default will purge resources in the project without a "pool" label, or a "pool" label with the value for an unconfigured pool
# An optional allowlist can be provided to ignore purging certain VMs based on pool labels
# Setting this on the provider will enable purging for the provider
# Expects a boolean value
# (optional; default: false)
#
# - resources_allowlist
# For GCE: Specify labels that should be ignored when purging VMs. For example if a VM's label is
# set to 'pool' with value 'donotdelete' and there is no pool with that name configured, it would normally be purged,
# unless you add a resources_allowlist "donotdelete" in which case it is ignored and not purged.
# Additionally the "" (empty string) has a special meaning whereas VMs that do not have the "pool" label are not purged.
# Additionally if you want to ignore VM's with an arbitrary label, include it in the allow list as a string with the separator "="
# between the label name and value eg user=bob would ignore VMs that include the label "user" with the value "bob"
# If any one of the above condition is met, the resource is ignored and not purged
# This option is only evaluated when 'purge_unconfigured_resources' is enabled
# Expects an array of strings specifying the allowlisted labels by name. The strings should be all lower case, since
# no uppercase char is allowed in a label
# (optional; default: nil)
#
# If you want to support more than one provider with different parameters you have to specify the
# backing service in the provider_class configuration parameter for example 'vsphere' or 'dummy'. Each pool can specify
# the provider to use.
#
# Multiple providers example:
:aws1:
provider_class: 'aws'
zone: 'us-west-2b'
region: 'us-west'
:aws2:
provider_class: 'aws'
zone: 'us-west-2b'
region: 'us-west'
resources_allowlist:
- "user=bob"
- ""
- "custom-pool"
# :aws:
#
# This section contains the global variables for the aws provider
# some of them can be overwritten at the pool level
#
# Available configuration parameters:
#
# - region
# The AWS region name to use when creating/deleting resources
# (required)
# - zone
# The AWS zone name to use when creating/deleting resources (vms, disks etc)
# Can be overwritten at the pool level
# (required)
# - amisize
# The AMI machine type to use eg a1.large
# Can be overwritten at the pool level
# (required)
# - volume_size
# A custom root volume size to use in GB, the default is whatever the default for the AMI used is
# (optional)
# - dns_zone_resource_name
# The name given to the DNS zone ressource. This is not the domain, but the name identifier of a zone eg example-com
# (optional) when not set, the dns setup / teardown is skipped
# - domain
# Overwrites the global domain parameter. This should match the dns zone domain set for the dns_zone_resource_name.
# It is used to infer the domain part of the FQDN ie $vm_name.$domain
# When setting multiple providers at the same time, this value should be set for each GCE pools.
# (optional) when not set, the dns setup / teardown is skipped and the instance is reachable via the private_dns_name
# - project
# The GCP project name where the DNS zone resource exists
# (optional)
# Example:
:aws:
region: 'us-west'
zone: 'us-west-2b'
amisize: 'a1.small'
volume_size: '10'
dns_zone_resource_name: 'subdomain-example-com'
domain: 'subdomain.example.com'
project: 'gcp-project-1'
# :pools:
#
# This section contains a list of virtual machine 'pools' for vmpooler to
# create and maintain.
#
# Available configuration parameters (per-pool):
#
# - name
# The name of the pool.
# (required)
#
# - alias
# Other names this pool can be requested as.
# (optional)
#
# - template
# The template or virtual machine target to spawn clones from, in AWS this means an AMI id.
# (required)
#
# - size
# The number of waiting VMs to keep in a pool.
# (required)
#
# - provider
# The name of the VM provider which manage this pool. This should match
# a name in the :providers: section above e.g. vsphere
# (required; will default to vsphere for backwards compatibility)
# If you have more than one provider, this is where you would choose which
# one to use for this pool
#
# - timeout
# How long (in minutes) before marking a clone in 'pending' queues as 'failed' and retrying.
# This setting overrides any globally-configured timeout setting.
# (optional; default: '15')
#
# - ready_ttl
# How long (in minutes) to keep VMs in 'ready' queues before destroying.
# (optional; default: no limit)
#
# - check_loop_delay_min (optional; default: 5) seconds
# - check_loop_delay_max (optional; default: same as check_loop_delay_min) seconds
# - check_loop_delay_decay (optional; default: 2.0) Must be greater than 1.0
# See the :config: section for information about these settings
#
# Provider specific pool settings
#
# EC2 provider
# - zone
# The zone to create the VMs in
# (optional: default is global provider zone value)
# - amisize
# The AMI machine type to use eg a1.large
# (optional: default is global provider amisize value)
# - volume_size
# (optional: default is global provider amisize value)
# - provision
# Set to true to run the extra aws setup steps (SSH, keys etc) once the VM is available
# (optional: default to false)
# Example:
:pools:
- name: 'almalinux-x86_64'
alias: [ 'almalinux-64', 'almalinux-amd64' ]
template: 'ami-foobar1234'
size: 5
timeout: 15
ready_ttl: 1440
provider: aws
zone: 'us-new-zone'
amisize: 'a1.large'
volume_size: '20'