The .cycloid.yml file is the one that will detail what and how to use your stack.

# Example

---
version: '2'
name: 'Magento'
canonical: 'stack-magento'
description: 'This stack will deploy a Magento on X Amazon EC2 instances behind an ELB load balancer, using RDS database and ElasticCache.'
keywords:
  - 'magento'
author: 'Cycloid'
image: 'https://raw.githubusercontent.com/cycloid-community-catalog/stack-magento/master/icon.png'
technologies:
  - technology: Debian
    version: 9.x
  - technology: Nginx
    version: 1.1x
  - technology: Php
    version: 7.2
  - technology: Redis
    version: 3.4
  - technology: Magento
    version: 2.x
config:
  # define the default pipeline here
  default:
    name: 'my default use-case'
    description: 'this is the default pipeline of the stack'

    # Pipeline and variable configuration for default usecase
    pipeline:
      pipeline:
        path: 'pipeline/pipeline.yml'
      variables:
        path: 'pipeline/variables.sample.yml'
        destination: '($ project $)/pipeline/($ environment $)/variables.yml'

    # Configuration of ansible for provisionning for default usecase
    ansible:
      magento:
        path: 'ansible/environments/front.yml.sample'
        destination: '($ project $)/ansible/($ environment $)-front.yml'

    # Configuration of terraform to setup the infrastructure for default usecase
    terraform:
      magento:
        path: 'terraform/magento.tf.sample'
        destination: '($ project $)/terraform/($ environment $)/magento.tf'
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

# Argument Reference

  • version: version of .cycloid.yml file. Version 2 is require for multi usecase feature.
  • name: name of the stack displayed
  • canonical: unique name within the organization. contain only lowercase alphanumeric a-z, hyphen - or underscore _ characters, between 3 and 30 length.
  • description: details displayed of the stack
  • keywords: to simplify stack search on the interface
  • author: author of the stack
  • image: url to the icon.png (200×200) used on stack view
  • technologies: list of technology|version used in the stack
  • config: allow to define pipeline|ansible|terraform config section. /!\ Paths should be relative to the .cycloid.yml file.
    • default: to define the default use-case section
      • name: name of the default use-case
      • description: details of the use-case
      • pipeline: dict containing configurations to expose to the user
        • pipeline: name of your configuration file displayed
          • path: relative path of the yaml pipeline to use
        • variables: concourse variables sample file to expose when using the stack
          • path: relative path of your configuration sample
          • destination: relative path to commit in your config repository
      • ansible: dict containing configurations to expose to the user
        • magento: name of your configuration file displayed
          • path: relative path of your configuration sample
          • destination: relative path to commit in your config repository
      • terraform: variables sample file to expose when using the stack
        • magento: name of your configuration file displayed
          • path: relative path of your configuration sample
          • destination: relative path to commit in your config repository

# Frequent questions

# What are the sample purpose?

"Sample files" are files which are fetched from the stack, they are displayed when you pick this stack and create a project from it. Typically, they will contain pre-filled variables which suits the pipeline, and potentially some that depends of your preference/configuration. These files will be displayed directly on the console, when you configure the environment of a project.

Here is a concrete example of the Magento's stack: https://github.com/cycloid-community-catalog/stack-magento The sample file is indicated here and it corresponds to that file - which would then be displayed upon creation.

There is then only the edit to do, and save it for later on in the destination.

# What are the destination purpose/used for?

Generally, destination is the indicated path to save files in so that the pipeline works from scratch. This is only an indication, and can easily be changed, the pipeline variables would logically need to be edited to search this new path, but that would work as well.

The destination part, as indicated here, references in fact the path, where the config file should be saved - so that it is found by default.

The files with destination keys, should be saved in the config, as they require a minimum of configuration; without those the stack will not work appropriately.