allow_duplicates och rollernas idempotens
Styr upprepad körning av roller
allow_duplicates och rollernas idempotens är en gratis lektion i Ansible Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Ansible Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Ansible Academy innehåller totalt 4 lektioner.
Roller körs en gång som standard
Om två roller båda är beroende av en common-roll är Ansible smart: common körs bara en gång, inte två, under samma play-körning.
Varför deduplicering finns
Den här dedupliceringen hindrar delade konfigurationsroller från att upprepa kostsamt arbete, till exempel att köra en basroll för säkerhetshärdning igen för varje applikationsroll.
Samma roll, samma parametrar
Överhoppningen gäller bara när rollen begärs med samma parametrar. Identiska anrop betraktas som redan utförda.
Olika parametrar körs igen
Anropa samma roll med olika variabler så kör Ansible den igen. En vhost-roll med två konfigurationer tillämpar båda, precis som du vill.
roles:
- role: vhost
vars: { name: site_a }
- role: vhost
vars: { name: site_b }Möt allow_duplicates
Inställningen allow_duplicates i meta/main.yml styr detta beteende. Ställ in den på true så kan rollen köras flera gånger under en play-körning.
# meta/main.yml
allow_duplicates: trueNär du bör tillåta dubbletter
Aktivera det för roller som är avsedda att tillämpas många gånger, till exempel när flera användare eller virtuella värdar ska skapas och varje anrop faktiskt utför nytt arbete.
Standardvärdet är false
Som standard är allow_duplicates false, så en roll med identiska parametrar körs bara en gång. Låt inställningen vara avstängd för roller som bara ska konfigurera något en gång.
Deduplicering är inte idempotens
Att hoppa över ett duplicerat anrop är praktiskt under körningen. Verklig idempotens innebär att varje task leder till samma önskade tillstånd, oavsett hur ofta den körs.
Skapa idempotenta tasker
Använd i en roll helst tillståndsbaserade moduler i stället för raw command. En verkligt idempotent roll är säker att tillämpa två gånger utan negativa följder.
include_role körs alltid igen
Var uppmärksam: include_role följer inte dedupliceringslogiken på samma sätt. En dynamiskt inkluderad roll körs varje gång körningen når den.
Sammansättningsbar och säker
Kombinera deduplicering, allow_duplicates och idempotenta tasker för att bygga roll-hierarchies som kan sättas samman på ett tydligt sätt och förblir säkra att köra igen.
Snabbkontroll
Kom ihåg inställningen som låter en roll köras mer än en gång i en play.
Sammanfattning
Ansible tar bort dubblerade anrop av samma roll. Ange allow_duplicates som true för att upprepa ett anrop, och se till att uppgifterna är idempotenta så att de kan köras om säkert. ♻️
Lär dig YAML med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”allow_duplicates och rollernas idempotens” gratis?
Ja – hela texten till ”allow_duplicates och rollernas idempotens” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Ansible Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Ansible Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”allow_duplicates och rollernas idempotens”?
Styr upprepad körning av roller Ni övar på Ansible Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Ansible Academy?
Du behöver inga förkunskaper. Utbildningen i Ansible Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”allow_duplicates och rollernas idempotens”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Ansible Academy-lektionen?
Ja. Varje Ansible Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Rollberoenden i meta/main.yml
- defaults jämfört med vars: ordningen för överskrivning
- include_role och import_role vid körning
- allow_duplicates och rollernas idempotens