efbeff 2 месяцев назад
Родитель
Сommit
7a9ae3dd6e
1 измененных файлов с 260 добавлено и 1 удалено
  1. 260 1
      Community/Bildung/FF@home/30 Ansible für ff@home aufsetzen.page

+ 260 - 1
Community/Bildung/FF@home/30 Ansible für ff@home aufsetzen.page

@@ -3,5 +3,264 @@ format: markdown
 title: Ansible ff@home aufsetzen
 toc: yes
 ...
+# Description
+# Software 
+- Debian 12 (bookworm) oder Ubuntu 22.04
+- python3 und ansible
+
+     ***** Es empfiehlt sich, eine python virtuelle Umgebung zu verwenden *****  
+     Die folgenden Pakete installieren:
+     sudo apt install python3-pip python3-venv
+
+Dazu in das Basisverzeichnis gehen (bei mir /datadisk), dann die virtuelle Umgebung anlegen
+python3 -m venv ffhome
+In das Verzeichnis ffhome wechseln und die Umgebung aktivieren
+source bin/activate
+Dadurch ändert sich der prompt:
+(ffhome) 18:16:41[frankb@berglap /datadisk/ffhome 0]
+
+Zum Verlassen der Umgebung:
+deactivate  oder Terminal Fenster schliessen
+
+Jetzt kann ansible in der ffhome Umgebung installiert werden:
+pip3 install ansible
+
+
+18:11:20[frankb@berglap /datadisk/ffhome 0] 
+Die Verzeichnistruktur der Testumgebung   
+tree -L 4
+    .
+    ├── ansible.cfg
+    ├── bin
+    │   ├── activate
+    │   ├── activate.csh
+    │   ├── activate.fish
+    │   ├── Activate.ps1
+    │   ├── ansible
+    │   ├── ansible-community
+     ... 
+    │   └── yamllint
+    ├── include
+    ├── inventory
+    │   ├── hosts.yaml
+    │   └── host_vars
+    │       ├── bergdesk
+    │       │   ├── vars
+    │       │   └── vault
+    │       ├── berghofen
+    │       │   ├── vars
+    │       │   └── vault
+    │       ├── berglap
+    │       │   ├── vars
+    │       │   └── vault
+    │       └── luna
+    │           ├── vars
+    │           └── vault
+    ├── lib
+    │   └── python3.10
+    ├── lib64 -> lib
+     ...
+    ├── playbooks
+    │   └── update.yaml
+    └── pyvenv.cfg
+
+Bei den ... sind Zeilen der Übersichtlichkeit halber weggelassen.
+
+Datei mit den beteiligten Hosts inventory/hosts.yaml
+
+    ---
+    all:
+      vars:
+        ansible_port: 24
+        ansible_user: frankb
+        ansible_become: true
+    
+    apus:
+      hosts:
+        berghofen:
+          ansible_host: 192.168.178.51
+          ansible_user: fb
+          ansible_become_password: "{{ berghofen_password }}"
+    
+    desktops:
+      hosts:
+        bergdesk:
+          ansible_host: 192.168.178.201
+          ansible_become_pass: '{{ bergdesk_password }}'
+    
+        berglap:
+          ansible_host: 192.168.178.52
+          ansible_become_pass: '{{ berglap_password }}'
+    
+        luna:
+          ansible_host: 192.168.178.224
+          ansible_become_pass: '{{ luna_password }}'
+    
+    altlast:
+      hosts:
+        hoerde:
+          ansible_host: 193.43.220.136
+          ansible_become: true
+          ansible_become_method: su
+    
+    supernodes:
+      hosts:
+        31.172.33.20:
+          ansible_port: 22
+        snng-dus01.ffdo.de:
+          ansible_port: 22
+        snng-dtm01.ffdo.de:
+          ansible_port: 22
+
+Die Gruppen apus und desktops enthalten die testhosts, die Gruppen altlast und supernodes sind nicht komplett einbezogen.
+
+
+Im Verzeichnis inventory/host_vars sind Variablen für die einzelnen hosts, also hier die passwords, in vars unverschlüsselt, in vault aes256 geschützt. Beispielhaft mal für bergdesk
+
+bergdesk/vars
+    ---
+    bergdesk_password: "{{ vault_bergdesk_password }}"
+
+bergdesk/vault
+    $ANSIBLE_VAULT;1.2;AES256;xx
+    35656536383233636434636533613830303439316263636436363932333636626462616461636537
+    3838626266396332363236643361626134393238636133640a646333333866643161356333626564
+    32373735343033633666353763376230646137663639373438393537663031643562376365396337
+    3161646534666236350a303366373433373833373066353030363766616166666361376637393464
+    30613139313661643932373239333865616338653132613530393161656466326561633537383535
+    3631356664643139383037636565346630643036353364333866
+
+Zur Erzeugung der Verschlüsselung in der vault Datei
+    ---
+    vault_bergdesk_password: hier das echte PW eintragen
+dann mit 
+ansible-vault encrypt vault --vault-id xxxxx@prompt
+die verschlüsselte vault datei erzeugen
+anzeigen kann man die Datei mit ansible-vault view vault   
+und entschlüsseln mit ansible-vault decrypt vault
+
+
+
+playbooks/update.yaml
+    ---
+    # name: update yaml
+    - hosts: [desktops,apus,altlast]
+    
+      tasks:
+        - name: Testausgabe
+          debug: msg="Hallo von {{ ansible_hostname }} Ansible managed!"
+    
+        - name: df -h Aufruf
+          command: df -h /
+          changed_when: false
+          register: df_cmd
+    
+        - debug:
+            msg: '{{df_cmd.stdout_lines}} {{ansible_distribution }}'
+    
+        - name: ping meine hosts
+          ansible.builtin.ping:
+          changed_when: false
+    
+    #   - name: Warte auf enter Taste
+    #     ansible.builtin.pause:
+    
+        - name: apt update mit upgrade und autoremove
+          ansible.builtin.apt:
+            update_cache: yes
+            cache_valid_time: 3600
+            autoremove: yes
+            upgrade: 'yes'
+          when:  ansible_os_family == "Debian"
+
+        - stat:
+            path: /var/run/needrestart
+          register: needrestart_file
+
+        - name: reboot falls erforderlich
+          ansible.builtin.reboot:
+          when:
+            - needrestart_file.stat.exists == True
+
+    
+Ausgabe von playbook update.yaml (die letzten beiden tasks stat und reboot sind nicht in der Ausgabe, weil sie später hinzugefügt wurden) 
+
+luna ist ausgeschaltet und nicht erreichbar.
+
+(ffhome) 20:55:59[frankb@berglap /datadisk/ffhome 4] ansible-playbook -b  playbooks/update.yaml -i inventory/hosts.yaml --ask-vault-pass 
+Vault password: 
+
+PLAY [desktops,apus,altlast] ***************************************************************
+
+TASK [Gathering Facts] *********************************************************************
+[WARNING]: Platform linux on host berglap is using the discovered Python interpreter at
+/usr/bin/python3.10, but future installation of another Python interpreter could change the
+meaning of that path. See https://docs.ansible.com/ansible-
+core/2.17/reference_appendices/interpreter_discovery.html for more information.
+ok: [berglap]
+[WARNING]: Platform linux on host bergdesk is using the discovered Python interpreter at
+/usr/bin/python3.11, but future installation of another Python interpreter could change the
+meaning of that path. See https://docs.ansible.com/ansible-
+core/2.17/reference_appendices/interpreter_discovery.html for more information.
+ok: [bergdesk]
+fatal: [luna]: UNREACHABLE! => changed=false 
+  msg: 'Failed to connect to the host via ssh: ssh: connect to host 192.168.178.224 port 24: No route to host'
+  unreachable: true
+[WARNING]: Platform linux on host berghofen is using the discovered Python interpreter at
+/usr/bin/python3.11, but future installation of another Python interpreter could change the
+meaning of that path. See https://docs.ansible.com/ansible-
+core/2.17/reference_appendices/interpreter_discovery.html for more information.
+ok: [berghofen]
+[WARNING]: Platform freebsd on host hoerde is using the discovered Python interpreter at
+/usr/local/bin/python3.9, but future installation of another Python interpreter could
+change the meaning of that path. See https://docs.ansible.com/ansible-
+core/2.17/reference_appendices/interpreter_discovery.html for more information.
+ok: [hoerde]
+
+TASK [Testausgabe] *************************************************************************
+ok: [bergdesk] => 
+  msg: Hallo von bergdesk Ansible managed!
+ok: [berglap] => 
+  msg: Hallo von berglap Ansible managed!
+ok: [berghofen] => 
+  msg: Hallo von berghofen Ansible managed!
+ok: [hoerde] => 
+  msg: Hallo von hoerde Ansible managed!
+
+TASK [df -h Aufruf] ************************************************************************
+ok: [berglap]
+ok: [bergdesk]
+ok: [berghofen]
+ok: [hoerde]
+
+TASK [debug] *******************************************************************************
+ok: [bergdesk] => 
+  msg: '[''Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf'', ''/dev/sdb1       439G     98G  319G   24% /''] Debian'
+ok: [berglap] => 
+  msg: '[''Dateisystem             Größe Benutzt Verf. Verw% Eingehängt auf'', ''/dev/mapper/system-root  444G    298G  124G   71% /''] Ubuntu'
+ok: [berghofen] => 
+  msg: '[''Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf'', ''/dev/sda6        18G    5,1G   12G   30% /''] Debian'
+ok: [hoerde] => 
+  msg: '[''Filesystem                       Size    Used   Avail Capacity  Mounted on'', ''s3pool25/jail/hoerde.ffdo.net    3.9G    891M    3.0G    22%    /''] FreeBSD'
+
+TASK [ping meine hosts] ********************************************************************
+ok: [berglap]
+ok: [bergdesk]
+ok: [berghofen]
+ok: [hoerde]
+
+TASK [apt update mit upgrade und autoremove] ***********************************************
+skipping: [hoerde]
+ok: [bergdesk]
+ok: [berglap]
+ok: [berghofen]
+
+PLAY RECAP *********************************************************************************
+bergdesk                   : ok=6    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
+berghofen                  : ok=6    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
+berglap                    : ok=6    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
+hoerde                     : ok=5    changed=0    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
+luna                       : ok=0    changed=0    unreachable=1    failed=0    skipped=0    rescued=0    ignored=0   
+
+
 
-# Freifunk Dortmund und Ansible