Sobes.tech
Junior

Do que consiste a função, quais pastas e ficheiros a compõem?

sobes.tech IA

Resposta da IA

O papel do Ansible consiste num conjunto de diretórios e ficheiros que definem tarefas, variáveis, modelos, ficheiros, controladores e metadados para executar uma função específica nos nós geridos.

Estrutura principal do papel:

  • defaults/: Valores padrão das variáveis para o papel.
  • vars/: Variáveis específicas do papel. Sobrescrevem os valores de defaults/.
  • tasks/: Tarefas principais realizadas pelo papel. O ficheiro main.yml é obrigatório.
  • handlers/: Controladores ativados por eventos específicos (por exemplo, reiniciar um serviço). O ficheiro main.yml é obrigatório.
  • files/: Ficheiros que serão copiados para os nós geridos.
  • templates/: Ficheiros de modelos Jinja2 que serão copiados para os nós após processamento.
  • meta/: Informações sobre o papel: dependências, autor, licença. O ficheiro main.yml é obrigatório.
  • library/: Módulos personalizados.
  • module_utils/: Utilitários para módulos personalizados.
  • lookup_plugins/: Plugins para pesquisa.
  • filter_plugins/: Plugins para filtros.

Exemplo de conteúdo do ficheiro tasks/main.yml:

# tasks/main.yml
- name: Instalar servidor web Nginx
  ansible.builtin.apt:
    name: nginx
    state: present

- name: Copiar ficheiro de configuração do Nginx
  ansible.builtin.template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
  notify: Reiniciar Nginx

Exemplo de conteúdo do ficheiro handlers/main.yml:

# handlers/main.yml
- name: Reiniciar Nginx
  ansible.builtin.service:
    name: nginx
    state: restarted

Exemplo de conteúdo do ficheiro templates/nginx.conf.j2:

# templates/nginx.conf.j2
server {
    listen {{ http_port }};
    server_name {{ server_name }};

    location / {
        proxy_pass http://localhost:{{ app_port }};
    }
}

Exemplo de conteúdo do ficheiro defaults/main.yml:

# defaults/main.yml
http_port: 80
server_name: localhost
app_port: 8080

Ficheiro meta/main.yml contém metadados sobre o papel:

# meta/main.yml
galaxy_info:
  author: Your Name
  description: Um papel para instalar e configurar Nginx.
  license: MIT

  min_ansible_version: 2.9

  platforms:
  - name: Debian
    versions:
    - all
  - name: Ubuntu
    versions:
    - bionic

  galaxy_tags: []

dependencies: []

Cada diretório, exceto library e module_utils, deve conter um ficheiro main.yml (ou main.yaml), que é o ponto de entrada para essa parte do papel.