Hoe roep je rollen aan in een Ansible-playbook?
sobes.tech AI
Antwoord van AI
Roles in Ansible kunnen op verschillende manieren worden aangeroepen binnen een playbook.
-
Gebruik van het trefwoord
rolesop playbook-niveau:# playbooks/my_playbook.yml - name: Rollen toepassen op servers hosts: webservers become: yes roles: - role: common # Aanroep van de 'common'-rol - role: nginx # Aanroep van de 'nginx'-rol vars: # Variabelen doorgeven aan de rol nginx_port: 8080 - another_role # Verkorte vorm van aanroepDeze methode wordt gebruikt om rollen aan te roepen die sequentieel worden uitgevoerd op alle hosts die in de sectie
hostszijn gedefinieerd. -
Gebruik van de module
include_rolein de taaklijst:# playbooks/my_playbook.yml - name: Rollen met voorwaarden toepassen hosts: appservers tasks: - name: Database-rol opnemen (alleen voor dev) include_role: name: database when: env == 'dev' # Conditionele oproep - name: Applicatierol opnemen include_role: name: app vars: app_version: 1.2.0 # Variabelen doorgeven aan de rolDe module
include_rolevoert de rol uit alsof het een lijst met taken is die in de huidige play worden opgenomen. Het maakt gebruik van voorwaarden (when) en lussen (loop) om de uitvoering te controleren. -
Gebruik van de module
import_rolein de taaklijst:# playbooks/my_playbook.yml - name: Applicatierol importeren hosts: appservers tasks: - name: Applicatierol voor alle hosts importeren import_role: name: app vars: app_config_file: /etc/app/config.conf # Variabelen doorgevenDe module
import_rolewordt verwerkt tijdens de parsingfase van het playbook, vóór de daadwerkelijke uitvoering. Dit betekent dat alle directieven zoalswhenop alle taken binnen de rol van toepassing zijn, niet alleen op de rol-aanroep zelf. Variabelen die viavarsworden doorgegeven, zijn binnen de rol beschikbaar.
Het belangrijkste verschil tussen include_role en import_role ligt in het moment van verwerking: import_role wordt statisch verwerkt tijdens de parseerfase, terwijl include_role dynamisch wordt verwerkt tijdens de uitvoering van het playbook. Dit beïnvloedt de mogelijkheid om voorwaarden en lussen te gebruiken:
| Functie | include_role |
import_role |
|---|---|---|
| Verwerking | Dynamisch | Statisch |
Gebruik when voor oproepen |
Ja | Nee |
Gebruik loop voor oproepen |
Ja | Nee |
| Mogelijkheid om variabelen te gebruiken die eerder in de play zijn gedefinieerd | Ja | Nee |
De keuze tussen deze methoden hangt af van de vereiste flexibiliteit en het moment van verwerking. Voor eenvoudige rolopnames volstaat meestal het sleutelwoord roles of import_role. Voor complexere scenario's met voorwaarden en lussen wordt include_role gebruikt.