Skip to content

Runfiles

Os arquivos de execução (runfiles) são configurações YAML usadas para definir uma série de tarefas a serem executadas em nós remotos via SSH. Esses arquivos são estruturados para incluir configurações de ambiente, nomes de tarefas, nós associados e os comandos específicos a serem executados. Abaixo, fornecemos uma explicação detalhada de como criar e estruturar esses arquivos de execução.

Estrutura do Arquivo

Um arquivo de execução típico inclui várias seções principais:

  • runfile: Um título ou descrição do propósito do arquivo de execução.
  • envs: (Opcional) Variáveis de ambiente globais aplicáveis a todas as tarefas.
  • tasks: Uma lista de tarefas, onde cada tarefa especifica um comando a ser executado em um ou mais nós.

Examplo de Runfile

Aqui está um exemplo de um arquivo de execução simples chamado first_runfile.yaml:

runfile: first_runfile

envs:
  - key: MYNAME
    value: Lucas

tasks:
  - name: hello
    node: 
      - oci1
    command: 
      echo "Hello, $MYNAME!"

A saída:

2024/10/21 22:41:02 Node: oci1  stdout   Task: hello: Hello, Lucas!

The execution is done

Detalhamento das Seções

runfile

Este campo é usado para fins de documentação, descrevendo o arquivo de execução.

envs

Define as variáveis de ambiente que são configuradas antes da execução de qualquer comando nas tarefas. Cada variável deve ter uma chave e um valor.

envs:
  - key: TEST1
    value: VALUE_1

  - key: TEST2
    value: VALUE_2

tasks

  • name: Nome descritivo da tarefa para identificação.
  • node: Lista de nós onde o comando será executado. Cada nó deve corresponder a um host configurado.
  • command: O comando a ser executado. Pode incluir variáveis de ambiente inline, operadores de shell, etc.
- name: hostname
  node: 
    - oci1
  command: hostname

Escrevendo comandos

Os comandos devem ser válidos como comandos de shell. Eles podem incluir o uso de variáveis de ambiente, pipe, e outras funcionalidades do shell. Se um comando envolver várias instruções, separe-as com ponto e vírgula ou use um formato de várias linhas.

Uso Avançado

Para cenários mais complexos, como instalar softwares ou executar serviços, considere dividir as tarefas em vários arquivos de execução ou usar dependências dentro das tarefas para garantir a ordem de execução.

  • Comandos em várias linhas:
command: 
  whoami ;
  hostname -I ;
  echo "$TEST1" ;
  echo "$TEST2" ;
  echo "It's working!"
  • Múltiplas tarefas:
tasks:
  - name: who_am_i
    node: 
      - oci1
      - oci2
    command: whoami

  - name: check_env1
    node: 
      - oci1
      - oci2
    command: echo "$TEST1"