-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathmanifest.jps
167 lines (147 loc) · 4.37 KB
/
manifest.jps
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
type: install
version: 1.1
id: docker-swarm-ce
baseUrl: https://raw.githubusercontent.com/jelastic-jps/docker-native/master/addons
description:
text: /text/description-swarm.md
short: Docker Swarm Cluster with out-of-box auto-clustering and auto-scaling
categories:
- apps/clusters
- apps/dev-and-admin-tools
logo: ../images/docker-swarm-logo-89x70.png
name: Docker Swarm Cluster
targetRegions:
type: vz7
globals:
connect-node: ${baseUrl}/scripts/connect-swarm-node.js?_r=${fn.random}
update-tokens: ${baseUrl}/scripts/update-swarm-tokens.js?_r=${fn.random}
get-tokens: ${baseUrl}/scripts/get-swarm-tokens.js?_r=${fn.random}
startPage: http://${env.domain}/
settings:
fields:
- type: spinner
name: mngr
caption: Manager
min: 1
max: 10
default: 1
- type: spinner
name: worker
caption: Worker
min: 1
max: 10
default: 1
- name: stack
type: radio-fieldset
values:
clean: Clean Cluster
deploy: Deploy Stack YML
default: clean
showIf:
deploy:
- name: yml
type: string
caption: Stack YML URL
default: https://github.com/jelastic/example-voting-app/blob/master/docker-stack.yml
required: true
vtype: url
- name: stackName
type: string
caption: Stack Name
default: example
required: true
- name: preHook
type: string
caption: Pre Hook
inputType: hidden
clean:
name: portainer
type: checkbox
caption: Install <a href='https://portainer.io' target='_blank'>Portainer UI</a> - lightweight container management
value: false
- name: autoscaling
type: checkbox
caption: Enable Horizontal Auto-Scaling
value: true
nodes:
- count: ${settings.mngr}
cloudlets: 32
image: jelastic/docker-ce
nodeGroup: cp
displayName: Manager
env:
JELASTIC_EXPOSE: false
- count: ${settings.worker}
nodeGroup: worker
image: jelastic/docker-ce
displayName: Worker
cloudlets: 32
env:
JELASTIC_EXPOSE: false
skipNodeEmails: true
onInstall:
- addExtIp
- init-swarm
- scaling-events
- if (${settings.autoscaling}): scaling-triggers
- if ('${settings.stack}' == 'deploy'): deploy
- portainer
- get-tokens
actions:
init-swarm:
install: ${baseUrl}/docker-swarm-init.jps?_r=${fn.random}
scaling-events:
install:
jps: ${baseUrl}/docker-swarm-scaling.jps?_r=${fn.random}
settings:
baseUrl: ${baseUrl}
connect-node: ${globals.connect-node}
update-tokens: ${globals.update-tokens}
get-tokens: ${globals.get-tokens}
scaling-triggers:
install:
jps: ${baseUrl}/autoscaling-triggers.jps?_r=${fn.random}
settings:
mngr: ${settings.mngr}
worker: ${settings.worker}
deploy:
- install:
jps: ${baseUrl}/docker-deploy.jps?_r=${fn.random}
settings:
yml: ${settings.yml}
stackName: ${settings.stackName}
type: stackName
preHook: ${settings.preHook}
- if ('${settings.yml}'.indexOf('/openfaas/') > -1):
setGlobals:
startPage: http://${env.domain}:8080/
- if ('${settings.yml}'.indexOf('/example-voting-app/') > -1):
setGlobals:
startPage: http://${env.domain}:5000/
get-tokens:
script: ${globals.get-tokens}
next: no-ssh-keys
no-ssh-keys:
- send-success:
manager_token: ${this.manager}
worker_token: ${this.worker}
name: swarm-success-no-ssh-keys.md
send-success:
script: |
import com.hivext.api.core.utils.Transport;
var text = new Transport().get('${baseUrl}/text/${this.name}?_r=${fn.random}').replace('${globals.manager_token}', '${this.manager_token}').replace('${globals.worker_token}', '${this.worker_token}')
return {type:'success', message:text, email:text}
portainer:
if ('${settings.portainer}' == 'true'):
- install:
jps: ${baseUrl}/portainer.jps?_r=${fn.random}
settings:
mode: swarm
- setGlobals:
startPage: https://${env.domain}:4848/
addExtIp:
script: ${baseUrl}/scripts/attach-external-ip.js?_r=${fn.random}
startPage: ${globals.startPage}
success:
text: /text/swarm-success-no-ssh-keys.md
email: /text/swarm-success-no-ssh-keys.md