Criar Stackfiles

Nesta seção, você encontra detalhes de como criar um Stackfile.

O que são Stackfiles?

Stackfiles são bundles, ou seja, um conjunto de Templates e Plugins predefinidos de uma Stack que será aplicado no comando stk create app).

Quando você utiliza um Stackfile, você pode criar um app e aplicá-los em um conjunto de Plugins com um único comando do STK CLI.

Quando usar Stackfiles?

  1. Em cenários onde um bundle de Template/Plugin é frequentemente usado dentro de uma Stack.
  2. Os Stackfiles são utéis para evitar que você utilize vários comandos para criar um projeto. Por isso, você pode criar um bundle de templates e plugins predefinidos e colocá-los dentro do contexto de um projeto.

Como criar Stackfiles?

Siga os passos abaixo:

Passo 1. Criar uma pasta com o nome ‘stackfiles’ dentro do repositório da sua Stack

Passo 2. Executar o comando

Dentro da pasta Stackfiles, execute o comando abaixo e escolha um nome para o seu Stackfile:

stk create stackfile <nome-stackfile>

Passo 3. Editar e definir o arquivo <nome-stackfile>.yaml

O arquivo yaml será criado com o nome que você definiu no passo anterior. Procure a pasta e abra o arquivo. Você verá algo parecido com:

type: app
description: Just an example
template: <stack-name>/<template-name>
inputs:
  some_input: value
plugins:
- plugin: <stack-name>/<plugin-name>
  inputs:
    some_input: value
    some_list:
    - item1
    - item2

Você deve editar e definir os itens abaixo:

  • O Template que será usado
  • Os Plugins que serão aplicados

A sequência de aplicação de Plugins é definida no arquivo.

Atributos:

  • type: Indica que o Stackfile será usado em um stk create app.
  • description: Descrição do Stackfile que será apresentada no comando stk list stackfile.
  • template: Template a ser usado para criar o app no formato nome-stack/nome-template.
  • inputs: Objetos com os valores dos inputs que serão passados para o Template. Ele não é obrigatório e caso algum valor de input definido no Template não seja informado, a pergunta é feita para o usuário.
  • plugins: Lista de objetos que indicam os Plugins que serão aplicados.
    • plugin: Plugin a ser aplicado no formato nome-stack/nome-plugin.
    • inputs: Objeto com os valores dos inputs que serão passados para o Plugin. Não é obrigatório e caso algum valor de input definido no Plugin não seja informado, a pergunta é feita para o usuário.

Confira um exemplo da estrutura de um Stackfile já preenchida:

type: app
description: Python Rest API using flask
template: stack-python/python-app-template
inputs:
  source_folder: src 
plugins:
  - plugin: stack-python/flask-api-plugin
    inputs:
      enable_cors: true
  - plugin: stack-python/zappa-deploy-plugin

Passo 4. Adicionar o arquivo no Git

Siga os passos abaixo:

  1. Adicione o arquivo yaml do Stackfile no Git e faça o push da Stack;

  2. Logo depois o seu Stackfile será publicado.

Veja abaixo o exemplo do layout de um repositório com Stackfiles:

/stack-python
  stack.yaml
  /python-app-template/
    template.yaml
    /templates/
        ...
  /flask-api-plugin/
    plugin.yaml
    /templates/
        ...
  /zappa-deploy-plugin/
    plugin.yaml
    /templates/
        ...
  /stackfiles/
    default.yaml
    flask-serverless-api.yaml

Como utilizar os Stackfiles?

Os Stackfiles podem ser utilizados com o comando

Para Stackfiles incluídos na própria Stack use a sintaxe:

stk create app nome-app --stackfile <nome-stack>/<nome-stackfile>
  • Quando você utilizar o Stackfile, o Template e o Plugin já definidos, o app será aplicado com as mesmas definições.

Exemplos

Exemplo de aplicação de um Stackfile default:

stk create app nome-app --stackfile <nome-stack>

Você pode utilizar um Stackfile customizado, ou seja, que não está dentro da pasta Stackfiles de uma Stack. Informe o caminho para arquivo yaml da especificação.

Exemplo de aplicação de um Stackfile customizado:

stk create app nome-app --stackfile /home/user/custom-stackfile.yaml