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 dedefaults/.tasks/: Tarefas principais realizadas pelo papel. O ficheiromain.ymlé obrigatório.handlers/: Controladores ativados por eventos específicos (por exemplo, reiniciar um serviço). O ficheiromain.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 ficheiromain.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.