Basic file
This file show an extended example of the version 2, which includes several widgets, types, required variables optional ones, etc.



version: "2"
use_cases:
- name: default
sections:
- name: terraform
groups:
- name: application
technologies: [terraform]
vars:
- name: Front type
description: Type of Aws EC2 frontend servers.
key: front_type
widget: auto_complete
type: string
values: [t3.micro, t3.small, t3.medium, t3.large]
default: t3.small
- name: Front disk size
description: Disk size of Aws EC2 frontend servers.
unit: Go
key: front_disk_size
widget: slider_range
type: integer
values: [10, 250]
default: 30
- name: Front EBS optimized
description: Whether the Instance is EBS optimized or not, related to the
instance type you choose.
key: front_ebs_optimized
widget: switch
type: boolean
default: false
- name: Private subnets IDs
description: Amazon subnets IDs on which create each components.
key: private_subnets_ids
widget: text_area
type: array
default:
- subnet-id1
- subnet-id2
required: true
- name: Instance profile
description: Profile, can be either `ondemand` or `spot`.
key: instance_profile
widget: radios
type: string
values: [ondemand, spot]
default: ondemand
- name: databases
technologies: [terraform]
vars:
- name: RDS backup retention
description: RDS backup retention period in days.
key: rds_backup_retention
widget: number
type: integer
default: 7
- name: RDS instance type
description: The type of instance you want to create
key: rds_instance_type
widget: slider_list
type: string
values: [db.t3.nano, db.t3.micro, db.t3.small, db.t3.medium]
default: db.t3.small
- name: AWS
groups:
- name: Pipeline
technologies: [pipeline]
vars:
- name: Default Region
description: In which region you would like your project to run
key: aws_default_region
widget: dropdown
type: string
values: [eu-west-1, eu-west-2, eu-west3, eu-south1, eu-north1, eu-central1]
default: eu-west-1
required: true
- name: S3 Bucket
description: The S3 bucket where terraform will store its tfstate
key: terraform_storage_bucket_name
widget: simple_text
type: string
default: ($ organization_canonical $)-terraform-remote-state
required: true
- name: Ansible
technologies: [ansible]
vars:
- name: Network for instances
key: network_range
widget: dropdown
type: array
values: [[192.168.1.0/24, 192.168.50.0/24, 192.168.150.0/24], [172.16.1.0/24,
172.16.50.0/24, 172.16.150.0/24], [10.0.1.0/24, 10.0.50.0/24, 10.0.150.0/24]]
default:
- 192.168.1.0/24
- 192.168.50.0/24
- 192.168.150.0/24
- name: Git
technologies: [pipeline]
vars:
- name: Config repository
description: Git repository URL containing the config of the stack.
key: config_git_repository
widget: cy_crs
type: string
default: git@github.com:MyUser/config.git
required: true
- name: Service catalog repository
description: The service catalog repository
key: sc_repository
widget: cy_scs
type: string
default: ($ scs_url $)
required: true
- name: Service catalog credentials
description: The credential used to access the service catalog
key: sc_git_key
widget: cy_cred
type: string
default: ((git_readonly.ssh_key))
required: true
- name: Service catalog path
description: The path of the stack in the service catalog
key: sc_path
widget: simple_text
type: string
default: 8-wordpress-demo
required: true
- name: Service catalog branch
description: The branch used by the service catalog
key: sc_branch
widget: cy_branch
type: string
default: ($ scs_branch $)
required: true
source: sc_repository
- name: Nginx
groups:
- name: Ansible
technologies: [ansible]
vars:
- name: Nginx Modules
description: List of nginx modules to install
key: nginx_modules
widget: dropdown
type: map
values: [{image_filter: false, njs: false, perl: false, waf: false}, {image_filter: false,
njs: false, perl: true, waf: true}, {image_filter: true, njs: true, perl: true,
waf: true}]
required: true
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
With special variables
Note: the previous example file already includes special variables.
With common use-case
In this scenario, you can see that new groups/variables are added to the various use-cases, based on the cycloid-common
one. For more details or to migrate to current version, please see the previous versions page.

version: "2"
use_cases:
- name: cycloid-common
sections:
- name: Software config
groups:
- name: Backend
technologies: [pipeline]
vars:
- name: Source
description: Backend source to use for the dedicated env (image or branch).
key: backend_source
widget: dropdown
type: string
values: [image, branch]
default: image
required: true
- name: Version
description: Name of the image or branch to use
key: backend_version
widget: simple_text
type: string
required: true
- name: Frontend
technologies: [pipeline]
vars:
- name: Source
description: Frontend source to use for the dedicated env (image or branch).
key: frontend_source
widget: dropdown
type: string
values: [image, branch]
default: image
required: true
- name: Version
description: Name of the image or branch to use
key: frontend_version
widget: simple_text
type: string
required: true
- name: Dedicated
sections:
- name: Dedicated
groups:
- name: OnPrem config
technologies: [pipeline]
vars:
- name: Instance count
description: Number of Aws EC2 onprem server to create.
key: onprem_instances_count
widget: simple_text
type: string
default: "1"
- name: CloudFront usage
description: If CloudFront needs to be created
key: onprem_cloudfront
widget: switch
type: boolean
default: true
- name: Mutualized
sections:
- name: Mutualized
groups:
- name: K8S
technologies: [pipeline]
vars:
- name: Stack Git path
description: Path of stack in the Catalog Git repository.
key: stack_path
widget: simple_text
type: string
default: cycloid-playground/terraform/mutualized
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
With variable sharing
Shared variables are not explicitely indicated to users either, because it's not their responsibility to know in which technology each variables will end up. However it does simplify the configuration of a stack, as you won't have to define variables multiple times across technologies if they are identical.
version: "2"
use_cases:
- name: default
sections:
- name: Application
groups:
- name: Database configuration
technologies: [ansible, terraform]
vars:
- name: MySQL user
description: Which user to use to connect to MySQL
key: mysql_user
widget: simple_text
type: string
default: root
- name: MySQL password
description: Which password to use to connect to MySQL
key: mysql_pwd
widget: simple_text
type: string
default: eikua0xaengu7iome9Hai6uoh2ucei6o
- name: MySQL URL
description: Host to connect to contact MySQL
key: mysql_url
widget: simple_text
type: string
- name: MySQL Port
description: The port on which MySQL listens on
key: mysql_port
widget: number
type: integer
default: 3306
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
With condition
Example for a stack with "advanced configuration":
version: "2"
use_cases:
- name: default
sections:
- name: Application
groups:
- name: Configuration
technologies: [ansible]
vars:
- name: Application name
description: What is the name of your app?
key: app_name
widget: simple_text
type: string
- name: Advanced configuration
description: Do you wish to make advanced configuration?
key: app_advanced
widget: switch
type: boolean
default: false
- name: Advanced configuration
technologies: [ansible]
condition: $app_advanced == true
vars:
- name: Application port
description: On which port to listen to?
key: app_name
widget: simple_text
type: string
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
Example for a stack supporting "multiple database engines":
version: "2"
use_cases:
- name: default
sections:
- name: Database
groups:
- name: Engine
technologies: [ansible]
vars:
- name: Engine
description: Choose the kind of database that you want
key: db_engine
widget: dropdown
type: string
values: [mysql, pgsql, mongodb]
required: true
- name: Advanced configuration
description: Do you wish to make advanced configuration?
key: app_advanced
widget: switch
type: boolean
default: false
- name: MySQL advanced configuration
technologies: [ansible]
condition: $app_advanced == true && $db_engine == 'mysql'
vars:
- name: Version of MySQL
description: Which version of MySQL to use
key: mysql_version
widget: dropdown
type: string
values: ["8.0", "5.7", "5.6"]
default: "8.0"
- name: Postgres configuration
technologies: [ansible]
condition: $app_advanced == true && $db_engine == 'pgsql'
vars:
- name: Version of PgSQL
description: Which version of PgSQL to use
key: pgqsl_version
widget: dropdown
type: string
values: ["14.1", "13.5", "12.9", "11.14"]
default: "14.1"
- name: Mongo configuration
technologies: [ansible]
condition: $app_advanced == true && $db_engine == 'mongodb'
vars:
- name: Version of MongoDB
description: Which version of MongoDB to use
key: mongodb_version
widget: dropdown
type: string
values: ["5.0", "4.4", "3.6", "3.2", "2.4", "1.8"]
default: "5.0"
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
V1 (legacy)
Caution
This file is a legacy format, added for the sole purpose of documentation. For more details please see the previous version page.



---
default:
pipeline:
AWS:
- name: "Default Region"
key: aws_default_region
type: string
widget: dropdown
description: "In which region you would like your project to run"
default: "eu-west-1"
values: ["eu-west-1", "eu-west-2", "eu-west3", "eu-south1", "eu-north1", "eu-central1"]
required: true
- name: "S3 Bucket"
key: terraform_storage_bucket_name
type: string
widget: simple_text
description: "The S3 bucket where terraform will store its tfstate"
default: "($ organization_canonical $)-terraform-remote-state"
required: true
Git:
- name: "Config repository"
key: config_git_repository
type: string
widget: cy_crs
description: "Git repository URL containing the config of the stack."
default: "git@github.com:MyUser/config.git"
required: true
- name: "Service catalog repository"
key: sc_repository
widget: cy_scs
type: string
description: "The service catalog repository"
default: "git@github.com:cycloidio/cycloid-stacks-test.git"
required: true
- name: "Service catalog credentials"
key: sc_git_key
widget: cy_cred
type: string
description: "The credential used to access the service catalog"
default: "((git_readonly.ssh_key))"
required: true
- name: "Service catalog path"
key: sc_path
type: string
widget: simple_text
description: "The path of the stack in the service catalog"
default: "8-wordpress-demo"
required: true
- name: "Service catalog branch"
key: sc_branch
widget: cy_branch
type: string
description: "The branch used by the service catalog"
source: sc_repository
default: "stacks"
required: true
ansible:
AWS:
- name: Network for instances
key: network_range
type: array
widget: dropdown
values:
- ["192.168.1.0/24", "192.168.50.0/24", "192.168.150.0/24"]
- ["172.16.1.0/24", "172.16.50.0/24", "172.16.150.0/24"]
- ["10.0.1.0/24", "10.0.50.0/24", "10.0.150.0/24"]
default: ["192.168.1.0/24", "192.168.50.0/24", "192.168.150.0/24"]
required: false
Nginx:
- name: Nginx Modules
key: nginx_modules
description: List of nginx modules to install
type: map
widget: dropdown
values:
- {njs: false, perl: false, waf: false, image_filter: false}
- {njs: false, perl: true, waf: true, image_filter: false}
- {njs: true, perl: true, waf: true, image_filter: true}
required: true
terraform:
application:
- name: "Front type"
description: "Type of Aws EC2 frontend servers."
key: front_type
widget: auto_complete
type: string
default: "t3.small"
values:
- "t3.micro"
- "t3.small"
- "t3.medium"
- "t3.large"
- name: "Front disk size"
unit: Go
description: "Disk size of Aws EC2 frontend servers."
key: front_disk_size
widget: slider_range
type: integer
default: 30
values:
- 10
- 250
- name: "Front EBS optimized"
description: "Whether the Instance is EBS optimized or not, related to the instance type you choose."
key: front_ebs_optimized
widget: switch
type: boolean
default: false
- name: "Private subnets IDs"
description: "Amazon subnets IDs on which create each components."
key: private_subnets_ids
widget: text_area
type: array
default:
- subnet-id1
- subnet-id2
required: true
- name: "Instance profile"
description: "Profile, can be either `ondemand` or `spot`."
key: instance_profile
widget: radios
type: string
default: "ondemand"
values:
- "ondemand"
- "spot"
databases:
- name: "RDS backup retention"
description: "RDS backup retention period in days."
key: rds_backup_retention
widget: number
type: integer
default: 7
- name: "RDS instance type"
description: "The type of instance you want to create"
key: rds_instance_type
widget: slider_list
type: string
values:
- db.t3.nano
- db.t3.micro
- db.t3.small
- db.t3.medium
default: db.t3.small
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