Modulen template och .j2-filer
Distribuera en renderad fil till en värd
Modulen template och .j2-filer är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Statiska filer räcker inte
Modulen copy levererar en fil oförändrad. Men konfigurationsfiler behöver ofta en port eller ett värdnamn som skiljer sig mellan servrar, så statiska kopior räcker inte till. 🤔
Använd modulen template
Modulen template renderar först en fil via Jinja2 genom att fylla i variabler och kopierar sedan resultatet till värden.
- name: Deploy config
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf.j2-konventionen
Källfiler för mallar slutar med .j2 för att markera dem som Jinja2-filer. Det är en konvention, inte en strikt regel, men alla följer den.
src och dest
src pekar på .j2-filen på kontrollnoden, och dest är den slutliga sökvägen på den hanterade värden.
template:
src: app.conf.j2
dest: /etc/app/app.confVar mallar finns
Som standard letar Ansible efter mallar i katalogen templates bredvid playbooken eller inuti en roll. Något sökvägsprefix behövs inte.
templates/
nginx.conf.j2
site.ymlEn minimal mall
I .j2-filen förblir vanlig text oförändrad och markörer med {{ }} ersätts. Här blir en portvariabel ett faktiskt tal.
listen {{ http_port }};
server_name {{ domain }};Ange filbehörigheter
Precis som copy accepterar template owner, group och mode, så att den renderade filen får rätt ägarskap.
template:
src: app.conf.j2
dest: /etc/app.conf
mode: "0644"Validera före skrivning
Alternativet validate kör ett kontrollkommando på den renderade filen innan den installeras, så att en trasig konfiguration aldrig distribueras.
template:
src: sshd.j2
dest: /etc/ssh/sshd_config
validate: "sshd -t -f %s"Mallar är idempotenta
Om det renderade resultatet matchar filen som redan finns på värden rapporterar template ok och ändrar ingenting. Säkert att köra om och om igen.
Meddela en handler vid ändring
Kombinera template med notify så att en tjänst endast startas om när konfigurationsfilen faktiskt ändrades. En perfekt kombination.
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: restart nginxtemplate jämfört med copy
Välj copy när en fil är likadan överallt och template när någon del måste variera mellan värdar.
Snabb kontroll
Ni behöver en konfigurationsfil vars port skiljer sig mellan servrar. Vilken modul passar?
Sammanfattning
Ni har nu mött modulen template: den renderar en .j2-fil med Jinja2, placerar den på dest, anger behörigheter och förblir idempotent. ✨
Lär dig DevOps-bootcamp 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
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Modulen template och .j2-filer” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Modulen template och .j2-filer”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Modulen template och .j2-filer”?
Distribuera en renderad fil till en värd Ni övar på DevOps-bootcamp 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 DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp 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 1 av 4.
Hur lång tid tar lektionen ”Modulen template och .j2-filer”?
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 DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-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
- Modulen template och .j2-filer
- Variabler och uttryck i Jinja2
- Loopar och if-block i templates
- Filter: default, join och upper