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 arquivoyaml é criado com o nome que você definiu no passo anterior. Procure a pasta e abra o arquivo. Você verá algo parecido com a estrutura abaixo:

type: app
description: Create a Stackfile Example
display-name: Example Portal Stackfile
template: example-portal-stack/example-portal-template
inputs:
  project_version: "1.0.0"
  project_description: "Example"
  author_name: "John Doe"
  author_email: "johndoe@mail.com"
plugins:
- plugin: example-portal-stack/example-portal-plugin

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 Mandatórios:

AtributoDescrição
typeIndica que o Stackfile será usado em um stk create app.
templateTemplate a ser usado para criar o app no formato nome-stack/nome-template.

Atributos Opcionais

AtributoDescrição
descriptionDescrição do Stackfile que será apresentada no comando stk list stackfile.
inputsObjetos 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.
pluginsLista 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
display-name: Example Portal Stackfile
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.

Confira 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