Como chamar funções no playbook do Ansible?
sobes.tech IA
Resposta da IA
Os papéis no Ansible podem ser invocados de várias maneiras dentro de um playbook.
-
Uso da palavra-chave
rolesao nível do playbook:# playbooks/my_playbook.yml - name: Aplicar papéis aos servidores hosts: webservers become: yes roles: - role: common # Invoca o papel 'common' - role: nginx # Invoca o papel 'nginx' vars: # Passa variáveis para o papel nginx_port: 8080 - another_role # Forma abreviada de invocarEste método é usado para invocar papéis que serão executados sequencialmente em todos os hosts definidos na secção
hosts. -
Uso do módulo
include_rolena lista de tarefas:# playbooks/my_playbook.yml - name: Aplicar papéis com condições hosts: appservers tasks: - name: Incluir o papel de base de dados (apenas para dev) include_role: name: database when: env == 'dev' # Invoca o papel condicionalmente - name: Incluir o papel da aplicação include_role: name: app vars: app_version: 1.2.0 # Passa variáveis para o papelO módulo
include_roleexecuta o papel como se fosse uma lista de tarefas incluída no play atual. Permite usar condições (when) e ciclos (loop) para controlar a execução do papel. -
Uso do módulo
import_rolena lista de tarefas:# playbooks/my_playbook.yml - name: Importar o papel da aplicação hosts: appservers tasks: - name: Importar o papel da aplicação para todos os hosts import_role: name: app vars: app_config_file: /etc/app/config.conf # Passa variáveisO módulo
import_roleé processado na fase de análise do playbook, antes da sua execução real. Isso significa que todas as diretivas, comowhen, serão aplicadas a todas as tarefas dentro do papel, e não apenas à invocação do papel. As variáveis passadas viavarsestarão disponíveis dentro do papel.
A diferença chave entre include_role e import_role reside no momento de processamento: import_role é processado de forma estática na fase de análise, enquanto que include_role é processado dinamicamente durante a execução do playbook. Isto afeta a capacidade de usar condições e ciclos:
| Função | include_role |
import_role |
|---|---|---|
| Processamento | Dinâmico | Estático |
Uso de when para invocar |
Sim | Não |
Uso de loop para invocar |
Sim | Não |
| Capacidade de usar variáveis definidas anteriormente no play | Sim | Não |
A escolha entre estes métodos depende da flexibilidade requerida e do momento de processamento. Para inclusão simples de papéis, geralmente basta a palavra-chave roles ou import_role. Para cenários mais complexos com condições e ciclos, usa-se include_role.