Kapitel 07: Jinja / Dokuwiki

This commit is contained in:
Sven Velt 2024-09-18 09:00:52 +02:00
parent 3e8717b6a2
commit 8afda7989b
20 changed files with 346 additions and 0 deletions

7
.gitmodules vendored
View file

@ -7,3 +7,10 @@
[submodule "roles.extern/epel-simplified"] [submodule "roles.extern/epel-simplified"]
path = roles.extern/epel-simplified path = roles.extern/epel-simplified
url = https://git.velt.biz/Ansible/epel-simplified url = https://git.velt.biz/Ansible/epel-simplified
[submodule "roles.extern/dokuwiki_inventory"]
path = roles.extern/dokuwiki_inventory
url = https://git.velt.biz/Ansible/dokuwiki_inventory.git
[submodule "roles.extern/dokuwiki_inventory.devel"]
path = roles.extern/dokuwiki_inventory.devel
url = https://git.velt.biz/Ansible/dokuwiki_inventory.git
branch = devel

View file

@ -0,0 +1,7 @@
---
- hosts: all
roles:
- role: dokuwiki_inventory.devel
doku_path: /tmp/dokuwiki_inventory.devel

1
07/dokuwiki_inventory.yml Symbolic link
View file

@ -0,0 +1 @@
../roles.extern/dokuwiki_inventory/dokuwiki_inventory.yml

58
07/install_dokuwiki.yml Normal file
View file

@ -0,0 +1,58 @@
---
- hosts: all
tasks:
- name: Sanity check
assert:
that:
- ansible_os_family == "Debian"
- ansible_distribution_major_version == "12"
- name: Install packages
package:
name:
- apache2
- php-fpm
- dokuwiki
notify: Restart Apache2
- name: Fix Dokuwiki config for Apache
lineinfile:
dest: /etc/apache2/conf-available/dokuwiki.conf
regex: " Allow from localhost"
line: " Allow from all"
backup: yes
notify: Restart Apache2
- name: Enable Apache configurations
file:
state: link
src: "../conf-available/{{ item }}"
dest: "/etc/apache2/conf-enabled/{{ item }}"
loop:
- dokuwiki.conf
- php8.2-fpm.conf
notify: Restart Apache2
- name: Enable Apache2 modules
apache2_module:
name: "{{ item }}"
state: present
loop:
- proxy
- proxy_fcgi
notify: Restart Apache2
handlers:
- name: Stop Apache2
service:
name: apache2
state: stopped
listen: Restart Apache2
- name: Start Apache2
service:
name: apache2
state: started
listen: Restart Apache2

75
07/jinja2_filter.yml Normal file
View file

@ -0,0 +1,75 @@
---
- hosts: localhost
gather_facts: no
vars:
# var_undefined
var_zahl: 23
var_string: "Hallo Teilnehmer!"
var_liste_leer: []
var_liste: [Hund, Katze, Maus]
var_liste_mapping:
- firstname: Sven
- firstname: Berta
- firstname: Klara
- firstname: "X Æ A-12"
- firstname: Axel
var_bool_true: True
var_bool_false: False
tasks:
- name: 'default-Filter'
debug:
msg:
- "var_undefined|default(42) → {{ var_undefined|default(42) }}"
- "var_zahl|default(42) → {{ var_zahl|default(42) }}"
- "var_liste_leer|default(42) → {{ var_liste_leer|default(42) }}"
- "var_liste_leer|default(42, true) → {{ var_liste_leer|default(42, true) }}"
- name: 'String-Filter'
debug:
msg:
- "var_string|lower → {{ var_string|lower }}"
- "var_string|upper → {{ var_string|upper }}"
- "var_string|capitalize → {{ var_string|capitalize }}"
- name: 'ternary-Filter'
debug:
msg:
- "var_bool_true|ternary('Ja','Nein') → {{ var_bool_true|ternary('Ja','Nein') }}"
- "var_bool_false|ternary('Ja','Nein') → {{ var_bool_false|ternary('Ja','Nein') }}"
- "var_string|ternary('Ja','Nein') → {{ var_string|ternary('Ja','Nein') }}"
- name: 'list-Filter'
debug:
msg:
- "var_liste|join(', ') → {{ var_liste|join(', ') }}"
- "var_liste_mapping|join(' sowie ', attribute='firstname') → {{ var_liste_mapping|join(' sowie ', attribute='firstname') }}"
- name: 'Datei-Filter'
debug:
msg:
- "'/usr/local/bin/ansible'|basename → {{ '/usr/local/bin/ansible'|basename }}"
- "'/usr/local/bin/ansible'|dirname → {{ '/usr/local/bin/ansible'|dirname }}"
- "'/usr/local/bin'|dirname → {{ '/usr/local/bin'|dirname }}"
- "'/usr/local/bin/.'|dirname → {{ '/usr/local/bin/.'|dirname }}"
- name: 'ipaddr-Filter'
debug:
msg:
- "'192.168.128.42/28'|ansible.utils.ipaddr → {{ '192.168.128.42/28'|ansible.utils.ipaddr }}"
- "'192.168.128.42/28'|ansible.utils.ipv4 → {{ '192.168.128.42/28'|ansible.utils.ipv4 }}"
- "'192.168.128.42/28'|ansible.utils.ipv6 → {{ '192.168.128.42/28'|ansible.utils.ipv6 }}"
- "'192.168.128.42/28'|ansible.utils.ipaddr('address') → {{ '192.168.128.42/28'|ansible.utils.ipaddr('address') }}"
- "'192.168.128.42/28'|ansible.utils.ipaddr('network') → {{ '192.168.128.42/28'|ansible.utils.ipaddr('network') }}"
- "'192.168.128.42/28'|ansible.utils.ipaddr('size') → {{ '192.168.128.42/28'|ansible.utils.ipaddr('size') }}"
- "'192.168.128.42/28'|ansible.utils.ipaddr('broadcast') → {{ '192.168.128.42/28'|ansible.utils.ipaddr('broadcast') }}"
- "'192.168.128.42/28'|ansible.utils.ipaddr('network/prefix') → {{ '192.168.128.42/28'|ansible.utils.ipaddr('network/prefix') }}"
- name: 'ipaddr-Filter für eine Range'
debug:
msg:
- "'192.168.128.42/28'|ansible.utils.ipaddr('network/prefix')|ansible.utils.ipaddr(2) → {{ '192.168.128.42/28'|ansible.utils.ipaddr('network/prefix')|ansible.utils.ipaddr(2) }}"
- "'192.168.128.42/28'|ansible.utils.ipaddr('network/prefix')|ansible.utils.nthhost(-3) → {{ '192.168.128.42/28'|ansible.utils.ipaddr('network/prefix')|ansible.utils.nthhost(-3) }}"
- "'192.168.128.42/28'|ansible.utils.ipaddr('last_usable') → {{ '192.168.128.42/28'|ansible.utils.ipaddr('last_usable') }}"

10
07/jinja2_for-if.j2 Normal file
View file

@ -0,0 +1,10 @@
{% for u in users if not u.hidden %}
{{ loop.cycle('+', '-', ' ') }} {{ loop.index }} {{ loop.first }}
{% if u.sex == "M" %}Herr
{% elif u.sex == "W" %}Frau
{% else %}Divers
{% endif %} {{ u.firstname }} {{ u.lastname }}
{% else %}
Keine Benutzer gefunden!
{% endfor %}

13
07/jinja2_for-if.txt Normal file
View file

@ -0,0 +1,13 @@
+ 1 True
Herr
Sven Velt
- 2 False
Frau
Klara Verstand
3 False
Divers
X Æ A-12 Musk
+ 4 False
Herr
Axel Schweiss

12
07/jinja2_for-if.yml Normal file
View file

@ -0,0 +1,12 @@
---
- hosts: localhost
gather_facts: no
vars_files:
- var_users.yml
tasks:
- template:
src: jinja2_for-if.j2
dest: jinja2_for-if.txt

View file

@ -0,0 +1,4 @@
{% for intname in ansible_interfaces %}
- {{ intname }}: {{ ansible_facts[ intname|replace('-', '_')]['macaddress']|default('-') }}
{% endfor %}

View file

@ -0,0 +1,39 @@
- veth9tuUab: fe:c6:6e:2d:37:47
- vethsbqt3E: fe:97:65:4a:ea:79
- vethDzmsZE: fe:4c:88:c8:e6:21
- vethz83qdd: fe:2e:fc:55:6b:da
- veth4okp9f: fe:0b:17:14:b1:d0
- vethCOuH4a: fe:85:b6:2b:e1:bf
- lxcbr0: 00:16:3e:00:00:00
- eth0: bc:24:11:d3:01:19
- vethutzBeV: fe:0e:73:59:ff:8c
- vethpc5mmF: fe:7f:8d:dc:21:59
- veth3dky0y: fe:2a:04:64:d0:70
- vethqIuvN4: fe:8f:84:04:08:e0
- vethTPr6rD: fe:46:e7:c1:29:e2
- vethss4VTW: fe:dc:cd:ef:c5:17
- vethkxTpmB: fe:7c:71:4c:23:38
- lo: -
- vethXVA3b7: fe:03:04:6e:b0:f2
- vethexbn7g: fe:67:69:30:5b:d5
- vethyu4LoK: fe:e3:47:09:b4:0a
- vethSIGrkv: fe:19:cd:85:a7:f7
- vethopVhm9: fe:54:ec:c3:da:24
- vethEVMS3F: fe:8f:5a:ed:01:5e
- vethNknT2n: fe:47:ca:c1:9e:0d
- vethRCfqNI: fe:fe:ce:bc:57:bd
- vethDr0ikH: fe:cf:96:1d:31:8f
- vethkoPbDc: fe:6a:44:b3:18:8f
- vethKvXX6G: fe:b9:05:19:d2:f2
- vethrg1dS8: fe:3d:ce:d2:2c:ef
- vethwUPIeM: fe:dd:6f:44:d1:ff
- vethDTpz2e: fe:47:c9:a8:f6:61
- vethIiYpve: fe:fc:02:fe:b4:23
- vethb9oDV7: fe:de:56:39:f0:9b
- vethpLQaLU: fe:d3:9f:ad:14:15
- vethSzJZ59: fe:c6:03:8c:d8:a5
- vethemM109: fe:2e:75:d9:8e:dc
- vethng0Zki: fe:9d:53:8a:53:e8
- vethyZCApU: fe:ab:61:ff:85:c9
- vethPfX7c9: fe:32:b8:84:d3:a5

View file

@ -0,0 +1,9 @@
---
- hosts: localhost
tasks:
- template:
src: jinja2_localhost_interface-list.j2
dest: jinja2_localhost_interface-list.txt

View file

@ -0,0 +1,32 @@
---
- hosts: localhost
gather_facts: no
vars_files:
- var_user.yml
vars:
field: firstname
tasks:
- name: 'user'
debug:
msg: '{{ user }}'
- name: 'user["firstname"] '
debug:
msg: '{{ user["firstname"] }}'
- name: 'user.firstname '
debug:
msg: '{{ user.firstname }}'
- name: 'user[field]'
debug:
msg: '{{ user[field] }}'
- name: 'user[field] mit Task-Var'
debug:
msg: '{{ user[field] }}'
vars:
field: lastname

12
07/uebung_1.j2 Normal file
View file

@ -0,0 +1,12 @@
# Meine NTP-Server:
## Als Liste
{{ chrony_pools }}
## Als String mit join-Filter
{{ chrony_pools|join(", ") }}
## In einer for-Schleife
{% for n in chrony_pools %}{{ loop.index }}: {{ n }}
{% endfor %}

9
07/uebung_1.yml Normal file
View file

@ -0,0 +1,9 @@
---
- hosts: all
tasks:
- local_action:
module: template
src: uebung_1.j2
dest: "/tmp/uebung_1_{{ inventory_hostname}}.txt"

12
07/uebung_2.j2 Normal file
View file

@ -0,0 +1,12 @@
# Netzwerk-Daten
IP: {{ ansible_default_ipv4.address }}
Netzmaske: {{ ansible_default_ipv4.netmask }}
Gateway: {{ ansible_default_ipv4.gateway }}
# IPv6
## Als String
{{ ansible_all_ipv6_addresses|join(" und ") }}
## Als Schleife
{% for a in ansible_all_ipv6_addresses %}{{ loop.index }}{{ loop.cycle('-', ' ', ' ')}}{{ a }}
{% endfor %}

8
07/uebung_2.yml Normal file
View file

@ -0,0 +1,8 @@
---
- hosts: localhost
tasks:
- template:
src: uebung_2.j2
dest: "/tmp/uebung_2_{{ inventory_hostname}}.txt"

8
07/var_user.yml Normal file
View file

@ -0,0 +1,8 @@
---
user:
firstname: Sven
lastname: Velt
sex: M
year: 1975
hidden: no

28
07/var_users.yml Normal file
View file

@ -0,0 +1,28 @@
---
users:
- firstname: Sven
lastname: Velt
sex: M
year: 1975
hidden: no
- firstname: Berta
lastname: Müller
sex: W
year: 1923
hidden: yes
- firstname: Klara
lastname: Verstand
sex: W
year: 1989
hidden: no
- firstname: "X Æ A-12"
lastname: Musk
sex: unbekannt
year: 2020
hidden: no
- firstname: Axel
lastname: Schweiss
sex: M
year: 1999
hidden: no

@ -0,0 +1 @@
Subproject commit 25d3363a39612f342e44d1f1de90e5df7b4c9b50

@ -0,0 +1 @@
Subproject commit 0ef7eb89052b3ccce9bdfaded8feb8da49b915ed