stack

module
v0.6.15 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 23, 2020 License: Apache-2.0

README

stack tool stack tool

Stack is a Tool About Creating Kindda

stack.yaml

api: v1             # обязательный ключ.
libs: []            # необязательный ключ. список путей, в которых необходимо выполнять поиск стеков
name: stackDir      # обязательный ключ при inline пределении стека. Если стек определен через файл, то равно имени каталога с файлом stack.yaml
vars: {}            # необязательный ключ. словарь переменных
varsFrom: []        # необязательный ключ. список импорта в ключ vars
flags: {}           # необязательный ключ. словарь флагов доступных для использования в независимых стеках
locals: {}          # необязательный ключ. словарь локальных значений
preRun: []
run: []             # список команд для выполнения _последовательно_
stacks: []          # список стеков, для выполнения _пледовательно_, которые будут выполняться после завершения выполнения данного стека
pstacks: []         # список стеков, для выполнения _параллельно_, которые будут выполняться после завершения выполнения данного стека
postRun: []
when: ""            # условие для выполнения стека (run && stacks)         _| See google/cel-go
wait: ""            # условие, которое стек будет ждать для своего запуска  | https://github.com/google/cel-go
waitGroups: []      # группы ожидания в которые входит текущий стек
# workdir:
api
api: v1
libs

Типы библиотек:

  1. Локальный каталог
  2. git репозиторий

Порядок поиска локальных билиотек:

  1. Каталог текущего стека
  2. Библиотеки
  3. Каталог корневого стека
libs:
- libs
- git: https://gitlab.example.org/utility/tests.git
  ref: 5be7ad7861c8d39f60b7101fd8d8e816ff50353a
  path: libraries/tests
name

Необходим только при inline определении стека

name: stack_name
vars
# parent stack
vars:
  test1: value      # _затирает_ все последующие ключи в child stacks рекурсивно
  test2+: value     # _дополняет_ все последующие ключи в child stacks рекурсивно
  test3~: value     # ТОЛЬКО КОРНЕВЫЕ КЛЮЧИ. слабый ключ (weak key) может быть затерт или дополнен соответствующими ключами в child stacks

# child stack
vars:
  test3-: value     # не может быть дополнен слабым ключем (weak var) от родительского стека, может комбинироваться с другими модификаторами
  test5-^+: value   # символ ^ отделяет суффикс переменной от ее названия (test5-)
varsFrom
varsFrom:
- file: testVars.yaml
- sops: testSopsFile.yaml
flags
flags:   # значение может быть прочитано из любых стеков
  test1: value1
  test2: value2
  test3: value3
locals
locals:  # локальные ключи, актуальны только в текущем стеке
  test1: localvalue1
  test2: localvalue2
  test3: localvalue3
run
- gomplate: "{{ .name | filepath.Base }}"
  output:
  - strvar: namespace

- gomplate: |-
    {{ .vars.monitoring_grafana | toJSON }}
  output:
  - yml2var: monitoringGrafana

- gomplate:
  - templates/getEnvVars.gtpl
  output:
  - stderr

- jsonnet:
  - jsonnet/func.jsonnet
  output:
  - stderr

- jsonnet: |-
    function(stack)
      {test: stack.name}
  output:
  - stderr

- pongo2:
  - tpl/jinjaTemplate.jinja2
  output:
  - stdout

- script: scripts/example.sh
  output:
  - stdout

- group:
  - script: |-
      ping google.com -c 5
    output:
    - stderr
  - script: |-
      ping example.com -c 5
    output:
    - stderr
  parallel: true
  runTimeout: 10s
stacks
stacks:
- libs:
  - _base:
    - namespace
  - infra:
    - aws-node-termination-handler
    - aws-auth
    - cluster-autoscaler
    - eks-arm64
    - external-dns
    - chart: locals.chart_spec
when
when: vars.test1 == "value"
wait

Стек будет ждать выполнения условия время заданное в wait_timeout (default: 5 min)

wait: flags.test1 == "value1"
waitGroups
waitGroups:
- wg_example
- |- # cel may be used here
  "wg_" + name

Exaples

stack-examples


Used libraries

google/cel-go

docs, git

hairyhenderson/gomplate

docs, git

google/go-jsonnet

docs, git

flosch/pongo2

docs, git

Go project layout

https://github.com/golang-standards/project-layout

Inspired by

kapitan
kasane
argo-cd
fluxcd

Thanx

hd-deman pogossian zavgorodny

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL