Sobes.tech
Junior

De que componentes e ficheiros consiste um papel em DevOps?

sobes.tech IA

Resposta da IA

O papel no DevOps, mais frequentemente implementado através do Ansible, consiste nos seguintes componentes e ficheiros principais:

  • tasks/: Diretório que contém as tarefas executadas pelo papel. O ficheiro principal é main.yml.
    // tasks/main.yml
    - name: Instalar nginx
      apt:
        name: nginx
        state: present
    
  • handlers/: Diretório que contém os manipuladores de eventos. O ficheiro principal é main.yml. Os manipuladores são executados apenas quando há alterações nas tarefas que os notificam.
    // handlers/main.yml
    - name: reiniciar nginx
      service:
        name: nginx
        state: restarted
    
  • defaults/: Diretório que contém os valores padrão das variáveis do papel. O ficheiro principal é main.yml. Estas variáveis têm a prioridade mais baixa.
    // defaults/main.yml
    nginx_port: 80
    
  • vars/: Diretório que contém variáveis específicas do papel. O ficheiro principal é main.yml. Estas variáveis têm uma prioridade mais alta do que as de defaults/.
    // vars/main.yml
    nginx_user: www-data
    
  • files/: Diretório que contém ficheiros que serão copiados para as máquinas destino sem alterações.
    // tasks/main.yml
    - name: Copiar ficheiro estático
      copy:
        src: my_static_file.conf
        dest: /etc/nginx/conf.d/my_static_file.conf
    
  • templates/: Diretório que contém ficheiros de modelos (normalmente em formato Jinja2), que serão copiados para as máquinas destino após processamento (substituição de variáveis).
    // templates/nginx.conf.j2
    server {
        listen {{ nginx_port }};
        ...
    }
    
    // tasks/main.yml
    - name: Configurar nginx
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: restart nginx
    
  • meta/: Diretório que contém metadados do papel, como dependências. O ficheiro principal é main.yml.
    // meta/main.yml
    dependencies:
      - role: another_role
        variable: value
    
  • library/: (Opcional) Diretório para módulos personalizados do Ansible.
  • module_utils/: (Opcional) Diretório para utilitários personalizados usados nos módulos.
  • lookup_plugins/, filter_plugins/, etc.: (Opcional) Diretórios para plugins personalizados de diferentes tipos.

A estrutura típica de um papel é assim:

my_role/
├── tasks/
│   └── main.yml
├── handlers/
│   └── main.yml
├── defaults/
│   └── main.yml
├── vars/
│   └── main.yml
├── files/
│   └── my_static_file.conf
├── templates/
│   └── nginx.conf.j2
└── meta/
    └── main.yml

Estes componentes permitem organizar a automação de instalação, configuração e gestão de serviços e sistemas de forma estruturada e reutilizável.