-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathconfig.yaml
652 lines (558 loc) · 24.2 KB
/
config.yaml
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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
manager:
# The manager's private IP address. This is the address which will be used by
# agent hosts to connect to the Manager's fileserver and message broker.
private_ip: ''
# An IP address by which the Manager is accessible externally, such as via the CLI
# or external clients. If not applicable, provide the same value as "private_ip".
public_ip: ''
# The Manager's hostname, doesn't have to be accessible.
# If no hostname is supplied it will be read from /etc/hostname
hostname: ''
######################################################################################
#
# As long as you have set the config entries above, you can install the manager with:
# cfy_manager install
# The rest of the configuration is only required if you need to change the defaults.
#
######################################################################################
security:
# When enabled, the external REST communication will be performed over HTTPS
ssl_enabled: true
# Username and password of the Cloudify Manager administrator.
admin_username: admin
# If admin_password is left blank, a password will be generated for you and provided
# to you at the end of the install process.
admin_password: ''
# A path to a Cloudify license to be uploaded on the Manager during installation
# For clusters this must be supplied, and will only be used, on the first manager
cloudify_license_path: ''
# Whether to replicate the data stored on filesystem between worker nodes in
# a cluster. Disable this if the data is replicated using other means,
# eg. a shared volume.
# When not using a cluster, this setting is ignored.
cluster_filesystem_replication: true
# internal_rest_port is the port that agents will connect to the REST-service on,
# using the address set in private_ip or networks.
# If this is set to 443, and private_ip is the same as public_ip, then
# ssl_inputs.external_rest_cert must not be set: internal_rest_cert is used
# instead.
# This can be set to any port, but best possibilities are
# 443, or 53333 (the default prior to Cloudify 7)
# Note: internal REST access always uses TLS.
internal_rest_port: 443
# Additional ports that will ALSO serve the REST-service. This is useful when
# upgrading a Cloudify Manager, so that already-deployed agents can continue
# to access the Manager on the previously-configured port.
additional_internal_rest_listeners:
- 53333
cli:
# If set to true, Cloudify CLI will not be installed
skip_installation: false
# Provide an IP or hostname to be used in the local CLI profile on the manager.
# This might be useful when providing an external certificate.
local_profile_host_name: ''
provider_context:
policy_engine:
start_timeout: 30
# An imported URL is prefix-matched against the key in each entry. If a match is found,
# then the URL prefix is replaced with the value of the corresponding entry.
# That allows serving YAML files from within the manager, even when the imported URL
# points to the external network.
import_resolver:
parameters:
rules:
- {http://www.getcloudify.org/spec: file:///opt/manager/resources/spec}
- {http://www.cloudify.co/spec: file:///opt/manager/resources/spec}
- {http://getcloudify.org/spec: file:///opt/manager/resources/spec}
- {http://cloudify.co/spec: file:///opt/manager/resources/spec}
- {https://www.getcloudify.org/spec: file:///opt/manager/resources/spec}
- {https://www.cloudify.co/spec: file:///opt/manager/resources/spec}
- {https://getcloudify.org/spec: file:///opt/manager/resources/spec}
- {https://cloudify.co/spec: file:///opt/manager/resources/spec}
# if this is set to true, the import resolver will try the original,
# non-resolved URL as well, if the resolved one returns a HTTP error
fallback: true
# A dict of network names and IP addresses of managers and brokers associated with them.
# By default, there is only a "default" network, with the manager's
# private IP and broker IPs associated with it. This network can be overwritten.
# Structure:
# networks:
# <network_name>: <manager address or ip>
# <network2_name>: ...
networks: {}
agent:
broker_port: 5671
min_workers: 2
max_workers: 5
# AMQP heartbeat timeout. 0 means no heartbeats
heartbeat: 30
# Default logging level.
# This can be overridden on a per-agent basis by using the "log_level" directive
# under "agent_config".
log_level: INFO
rabbitmq:
# Sets the username/password to use for clients such as celery to connect to
# the rabbitmq broker. It is recommended that you set both the username and
# password to something reasonably secure.
username: cloudify
password: c10udify
# A list of cluster members, including network-specific addresses.
# The 'default' network address must be set for each member.
# (addresses can be IPs, and the address of the local node will be used for
# connecting to it, so it must be allowed by the rabbitmq certificate)
# If installing an all-in-one manager this section can be left blank.
# Example:
# cluster_members:
# <hostname of first rabbit node>:
# networks:
# default: <address of rabbit node> (not needed if node name is resolvable via DNS)
# <other network name>: <address for this node on 'other network'>
# ...
# <hostname of second rabbit node>:
# networks:
# default: ...
# ...
# ...
# All nodes must have a 'default' entry.
# This should not be populated on an all-in-one manager.
cluster_members: {}
# Set this to true if the RabbitMQ is an external service. This will result in the RabbitMQ
# service not being internally-monitored by the CLoudify cluster status reporter.
is_external: false
# Path to cert for CA that signed the broker cert.
# Must be provided to use external brokers.
# Will default to cert_path if installing a broker locally.
ca_path: ''
# Path to key for CA that signed the broker cert.
ca_key_path: ''
# Set this to true if the cluster member hostnames should be used to refer to cluster members in the DB.
# If this is left false, the default network address for each member will be used.
# If these are the same (e.g. due to using a proxy) then the cluster status reporter will fail.
use_hostnames_in_db: false
#####################################################
# #
# RABBITMQ SERVER SETTINGS #
# Settings before this point are relevant for both #
# locally and remotely installed queue_service. #
# Settings after this point are only relevant when #
# installing the queue_service on its own or as #
# part of an all-in-one manager. #
# They are not used in any other cases, and so can #
# be left unaltered if the queue_service is not #
# being installed locally. #
# #
#####################################################
# Path to broker certificate for external broker
# For all-in-one manager install, this should be left blank
# For external brokers, the broker certificate (in PEM format) should be
# in the file referred to by this configuration entry
# NOTE: This certificate and key pair must both be provided when installing
# a broker. These are not relevant for a manager-only or postgres-only
# install. For manager-only specification of brokers, see the
# cluster_members setting.
cert_path: ''
# Associated key
key_path: ''
# The name to give this cluster node. If this is blank, it will be set to localhost.
nodename:
# Whether to support FQDNs. If this is set to false, only the hostname will be
# used even if the FQDN is supplied.
# Caution: Setting this to true will require manually specifying target node
# and using the --longnames argument for any rabbitmqctl operations.
use_long_name: false
# If this is part of a cluster and not the first node to be configured, set
# this to one of the other cluster node names.
join_cluster:
# If this is a cluster then this value must be the same on all rabbitmq nodes.
# If left blank, it will be auto-generated.
erlang_cookie:
# Sets the File Descriptor limit for the rabbitmq user.
fd_limit: 102400
# NOTE: The policy settings are only set up by the first broker in a cluster
# of brokers, and they're not configured at all by a manager using an external
# broker.
# If you remove any of these policies, you may encounter undefined
# behaviour, so it's probably best not to remove them.
policies:
- name: logs_queue_message_policy
expression: ^cloudify-log$
# Highest value priority is applied in expression collisions
priority: 100
policy:
# Sets the number of milliseconds to wait before a message expires
# in the events queue. Not used if an external endpoint is used.
message-ttl: 1200000
# Sets the number of messages the events queue can hold. Note this is NOT
# the message byte length! Not used if an external endpoint is used.
# Note that for each of the queue length limit properties, new messages
# will be queued in RabbitMQ and old messages will be deleted once the
# limit is reached! https://www.rabbitmq.com/maxlength.html
max-length: 1000000
# Used to ensure data integrity by keeping a replica of the queue on all
# cluster nodes
ha-mode: all
ha-sync-mode: automatic
ha-sync-batch-size: 50
- name: events_queue_message_policy
expression: ^cloudify-events$
priority: 100
policy:
message-ttl: 1200000
max-length: 1000000
ha-mode: all
ha-sync-mode: automatic
ha-sync-batch-size: 50
- name: default_policy
expression: ^
priority: 1
policy:
ha-mode: all
ha-sync-mode: automatic
ha-sync-batch-size: 50
# IMPORTANT: some of the configuration keys in the "postgresql_server" and
# "postgresql_client" sections are only applicable for certain use cases.
#
# If "services_to_install" includes "database_service", you should consider
# the "postgresql_server" section in its entirety.
#
# If "services_to_install" includes "manager_service":
#
# * You should consider the "postgresql_client" section in its entirety.
# * If "database_service" is NOT included, then you must populate
# the "ca_path" field under "postgresql_server".
postgresql_server:
# Password to set for the PostgreSQL user.
postgres_password: ''
# postgresql.conf overrides
config:
# Put here any compatible parameters that will override PostgreSQL defaults.
# We suggest and set as default values following:
#
# * "shared_buffers": 25% of total RAM size,
# * "effective_cache_size":
# - 25% of total RAM size for all-in-one manager installation,
# - 50% of total RAM size for cluster installation
work_mem: '16MB'
# PostgreSQL server's or cluster's public certificate, private key, and CA certificate
# paths. All will be copied to the appropriate location and have permissions and
# ownership set appropriately.
cert_path: ''
key_path: ''
ca_path: ''
ca_key_path: ''
cluster:
# List of nodes that will be members of the PostgreSQL cluster.
# 3 nodes are recommended for maintaining safe levels of redundancy without
# excessive resource usage.
# If this is populated during a DB service install, the PostgreSQL cluster.
# components will be installed.
# The nodes must be provided with IPs, e.g.
# nodes:
# <hostname of first postgres node>:
# ip: <ip of first postgres node>
# <hostname of second postgres node>:
# ip: <ip of second postgres node>
# <hostname of third postgres node>:
# ip: <ip of third postgres node>
nodes: {}
# During DB cluster installation, all of the following cluster config
# entries must be populated
etcd:
# etcd shared secret for clustering
# Note that single quotes in this string will be replaced with double,
# and backslashes with forward slashes
cluster_token: ''
root_password: ''
patroni_password: ''
patroni:
# These are credentials for accessing the configuration REST interface for
# patroni. They are not needed for regular operation such as querying
# status.
rest_user: patroni
rest_password: ''
postgres:
replicator_password: ''
# For external single-node postgres installation, set to true.
# For clusters this will be treated as true and the actual setting ignored
enable_remote_connections: false
# SSL must be enabled for external databases - provide proper certificates.
# For external DB servers and clusters this will be treated as true and
# the actual setting ignored.
ssl_enabled: false
# If true only SSL connections will be permitted, use with caution
# For clusters this will be treated as true and the actual setting ignored
ssl_only_connections: false
# If true, client certificate verification will be required for postgres clients
# If this is set, ssl_only_connections must be enabled
ssl_client_verification: false
# A PostgreSQL account used for monitoring
db_monitoring:
username: cloudify_db_monitoring
password: c10udify_db_monitoring
postgresql_client:
# Host name (or IP address) of the database. If you are using an external
# database, update accordingly; otherwise use the default.
host: localhost
# The CA certificate to connect to the server with.
# If left blank postgresql_server.ca_path will be used
ca_path: ''
ca_key_path: ''
# Server user name (server_username), password (server_password),
# and DB (server_db_name) to use when connecting to the database for Cloudify
# DB initialization and population.
# This is only relevant for external postgres installations when you enable
# remote connections
#
# If your database is an Azure DBaaS instance, you must set 'server_username'
# so it includes the database name as a suffix. For example, if your database
# name is "mycfydb" and your username is "test", then "server_username"
# should be "test@mycfydb".
#
server_db_name: postgres
server_username: postgres
server_password: ''
# Cloudify DB name, user name and password to be created.
#
# The following apply if your database is an Azure DBaaS instance:
#
# * "cloudify_username" must include the database name as a suffix. For example,
# if your desired database username is "cloudify" and your database name is
# "test", then "cloudify_username" should be "cloudify@test".
#
# * "cloudify_username" must be different from "server_username".
cloudify_db_name: cloudify_db
cloudify_username: cloudify
cloudify_password: cloudify
# SSL must be enabled for external databases - provide proper certificates
# This setting will be ignored (treated as true) if an external DB or
# cluster is used
ssl_enabled: false
# If true, client SSL certificates will need to be supplied for database connections
ssl_client_verification: false
stage:
# If set to true, Cloudify UI will not be installed
skip_installation: false
# Additional environment variables to add to stage's service file.
extra_env: {}
composer:
# If set to true, Cloudify Composer will not be installed
skip_installation: false
python:
# Some plugins installed from sources require compilation - installs a
# compiler and the python headers to allow that.
install_python_compilers: false
# If set to true, python sources (e.g. pip) will be removed when
# uninstalling the Cloudify Manager. NOTE: only set to true if those
# dependencies weren't available before Cloudify Manager installation
remove_on_teardown: false
restservice:
log:
# Logging level for the REST service. Defaults to 'INFO', as 'DEBUG' may
# end up logging sensitive information.
level: INFO
# The size, in MB, that the REST service log file may grow to before it's
# rotated.
file_size: 100
# Number of historical log files to keep when rotating the REST service logs.
files_backup_count: 7
gunicorn:
# The number of gunicorn worker processes for handling requests. If the
# default value (0) is set, then min((cpu_count * cpu_ratio + 1 processes), max_worker_count)
# will be used.
worker_count: 0
# The number used to automatically (based on number of CPUs) calculate worker_count value.
cpu_ratio: 2.0
# Maximum number of gunicorn workers (if calculated automatically)
max_worker_count: 12
# The maximum number of requests a worker will process before restarting.
# If this is set to zero then the automatic worker restarts are disabled.
max_requests: 1000
# Minimum available memory for running list query on Manager host in MB.
min_available_memory_mb: 100
# Disables insecure REST endpoints
insecure_endpoints_disabled: true
# Port to be used by the REST service
port: 8100
# Number of failed logins (bad password) before account lockout
failed_logins_before_account_lock: 4
# Account lockout time in minutes. `-1` means no account lockout,
# even when `failed_logins_before_account_lock` has a value.
account_lock_period: -1
# The default page size for REST queries
default_page_size: 1000
# Additional environment variables to add to the REST Service's service
# file.
extra_env: {}
api:
gunicorn:
# The number of gunicorn worker processes for handling requests. If the
# default value (0) is set, then min((cpu_count * cpu_ratio + 1 processes), max_worker_count)
# will be used.
worker_count: 0
# The number used to automatically (based on number of CPUs) calculate worker_count value.
cpu_ratio: 0.2
# Maximum number of gunicorn workers (limits number of workers in case of automatic calculation)
max_worker_count: 4
# The maximum number of requests a worker will process before restarting.
# If this is set to zero then the automatic worker restarts are disabled.
max_requests: 1000
# Port to be used by the gunicorn server
port: 8101
nginx:
# external port to use; if null, default is 80 for http and 443 for https
port: null
# Number of nginx worker processes to have.
# Specify "auto" to use nginx's recommended configuration of one
# process per core.
worker_processes: auto
# Number of connections that any nginx worker is allowed to carry simultaneously.
worker_connections: 4096
# Maximum number of open file descriptors that any nginx process
# is allowed to have.
max_open_fds: 102400
# configure request rate-limits. If enabled, requests are rate-limited based
# on the remote IP address.
# Requests that authenticate with a valid execution-token, are never
# rate-limited
rate_limit:
enabled: true
# rate is a string in the form of "10r/s" (10 requests per second)
# or "600r/m" (600 requests per minute)
rate: "10r/s"
# burst and delay manage the request queueing mechanism. With the
# default settings of burst=30 and delay=20, up to 30 requests
# can be queued per IP (i.e. before nginx starts responding with 503),
# and the first 20 requests will be served without any delay. Then, requests
# will be delayed according to the rate, and if there's more than 30 queued
# total, will receive 503.
burst: 30
delay: 20
mgmtworker:
# Sets the logging level to use for the management workers. This affects the
# logging performed by the manager during the execution of management tasks,
# such as deployment creation and deployment deletion. NOTE: specifying
# "debug" will result in considerable amount of logging activity. Consider
# using "info" (or a more restrictive level) for production environments.
log_level: INFO
# Minimum number of worker processes maintained by the management worker.
min_workers: 2
# Maximum number of worker processes started by the management worker.
max_workers: 100
# Additional environment variables to add to the management worker's service
# file.
extra_env: {}
workflows:
# Sets the number of times a failed task will be retried on recoverable error.
task_retries: 60
# Sets the interval between retry attempts in seconds.
task_retry_interval: 15
# A local copy of Cloudify resources (e.g. deployment working directories)
resources_root: /opt/manager/resources
sanity:
# If set to true, the sanity blueprint install/uninstall will not be
# performed during Cloudify Manager installation
skip_sanity: false
validations:
# If set to true, install/configuration validations will not be performed
skip_validations: false
# These allow to override specific validation values
# NOTE: We do not recommend changing these values unless you know exactly
# what you're doing.
minimum_required_total_physical_memory_in_mb: 1838
# Minimum required disk space on Manager host in GB.
minimum_required_available_disk_space_in_gb: 1
# The only Linux distros fully supported, on which a Cloudify Manager can
# be installed
supported_distros: [centos, rhel, redhat]
# The supported versions of the above distros
supported_distro_versions: ['7', '8']
# Environment variables that must be set. Values are regexps that the
# environment variable must contain, or a list of regexps.
expected_env:
PATH:
- "(^|:)/usr/sbin($|:)"
- "(^|:)/usr/bin($|:)"
- "(^|:)/sbin($|:)"
- "(^|:)/bin($|:)"
ssl_inputs:
external_cert_path: ''
external_key_path: ''
internal_cert_path: ''
internal_key_path: ''
postgresql_client_cert_path: ''
postgresql_client_key_path: ''
postgresql_superuser_client_cert_path: ''
postgresql_superuser_client_key_path: ''
ca_cert_path: ''
ca_key_path: ''
ca_key_password: ''
# External CA cert is used to auto-generate the external cert, if the
# external cert is not provided.
# The key and the password will not be stored.
# External CA cert, if provided, will also be used with the on-manager CLI.
external_ca_cert_path: ''
external_ca_key_path: ''
external_ca_key_password: ''
usage_collector:
collect_cloudify_uptime:
# True if the uptime collector will be installed
active: true
# Sets the interval between running the uptime collector in hours
interval_in_hours: 4
collect_cloudify_usage:
# True if the usage collector will be installed
active: true
# Sets the interval between running the usage collector in days
interval_in_days: 1
prometheus:
# A public certificate, a private key, and a CA certificate file paths for the Nginx
# HTTPS proxy for the Prometheus. All will be copied to the appropriate location and
# have permissions and ownership set appropriately.
cert_path: ''
key_path: ''
ca_path: ''
ca_key_path: ''
port: 9090
node_exporter:
metrics_port: 9100
blackbox_exporter:
metrics_port: 9115
# ca_cert_path is a path to the CA certificate, which is used currently by the blackbox_exporter
# to connect to the HTTPS services that use certificates signed with this CA certificate.
ca_cert_path: ''
postgres_exporter:
metrics_port: 9187
# ca_cert_path is a path to the CA certificate, which is used by the postgres_exporter
# to connect to the PostgreSQL Server that use certificates signed with this CA certificate.
ca_cert_path: ''
rabbitmq_prometheus:
metrics_port: 15692
# Parameters that will be used to access the monitoring service remotely
credentials:
username: 'monitoring_user'
password: 'm0n1torify'
# How frequently should Prometheus scrape its targets and evaluate rules.
scrape_interval: 15s
# How long should status reporter wait for Prometheus response (in seconds).
request_timeout: 4
flask_security: {}
# list of services - manager_service, queue_service, database_service
# will install only these services on this machine
# I.E - all-in-one installation
# services_to_install:
# - database_service
# - queue_service
# - manager_service
# - monitoring_service
# - entropy_service
#
# entropy_service should not be installed on docker containers.
# It is used to generate entropy (haveged) to avoid hanging executions.
# It is not useful on nodes that do not have manager_service.
services_to_install:
- database_service
- queue_service
- manager_service
- monitoring_service
- entropy_service
unconfigured_install: true