
Jinja2 je moderní šablonovací systém. Mezi hlavní výhody patří přehlednost, rozšířitelnost (pomocí filtrů a pluginů), snadnost použití, vysoká rychlost, možnost použití if a for syntaxí. Používá kódování Unicode.
Balíček pro jinja2 se dá instalovat přímo z repozitářů jmenuje se j2-cli:
apt-get install j2-cli
Konfigurák s hodnotami pojmenenujeme variables.yml:
server:
address: "172.16.1.1"
port: "8080"
document_root: "/var/www/data"
distribution_release: "bullseye"
Konfigurák s hodnotami pro Nginx, které se budou templatovat nginx_config.j2:
server {
listen 80;
server_name {{ server.address }};
root {{ document_root }};
index index.htm;
location / {
return 301 https://$host$request_uri;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php{%- if distribution_release == "buster" -%}7.4{%- elif distribution_release == "bullseye" -%}8.2{%- endif -%}.sock;
# With php-cgi (or other tcp sockets):
fastcgi_pass {{server.address}}:{{server.port}};
}
}
Do template nginx_config.j2 vložíme hodnoty ze souboru variables.yml:
j2 -f yaml nginx_config.j2 variables.yml > nginx_config.conf
Výsledkem bude konfigurák nginx_config.conf:
server {
listen 80;
server_name 172.16.1.1;
root /var/www/data;
index index.htm;
location / {
return 301 https://$host$request_uri;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php8.2.sock;
# With php-cgi (or other tcp sockets):
fastcgi_pass 172.16.1.1:8080;
}
}
Jinja2 se dá použít také s bashovými proměnými:
$ vim /tmp/person.xml
<data><name>{{ name }}</name><age>{{ age }}</age></data>
$ export name=Andrew
$ export age=31
$ j2 /tmp/person.xml
<data><name>Andrew</name><age>31</age></data>