Skip to content

Ansible - ein kurzer Test

Linux
  • Kur vorab, ich denke nicht das ich zum jetzigen Zeitpunkt einen Einblick darin habe, was Ansible alles kann. Aber, da ich hier immer als notiere, was ich so ausprobiere, möchte ich auch das hier festhalten.

    Sollte das jemand lesen, der davon richtig Ahnung hat, Vorsicht hier kann einiges Falsche stehen! Ich bitte in so einem Fall um einen Kommentar, damit ich das ändern oder löschen kann. Vielen Dank!

    Was ist Ansible?

    Ansible ist ein Open-Source Automatisierungs-Werkzeug zur Orchestrierung und allgemeinen Konfiguration und Administration von Computern
    Quelle: https://de.wikipedia.org/wiki/Ansible

    Die Projektseite -> https://www.ansible.com/

    Warum Ansible?

    Um alle meine Server immer schön auf dem aktuellen Stand zu halten, nutze ich zur Zeit ClusterSSH. Wenn es aber etwas umfangreicher und komplizierter werden sollte, scheint es nicht das rechte Tool zu sein.

    Da ich gerne eine erstellte VM auf einen von mir festgelegten Stand bringen möchte, erschien mir dieses Tool als geeignet.

    Installation

    apt install ansible
    

    Kontrolle

    frank@frank-MS-7C37:~$ ansible --version
    ansible 2.9.6
      config file = /etc/ansible/ansible.cfg
      configured module search path = ['/home/frank/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python3/dist-packages/ansible
      executable location = /usr/bin/ansible
      python version = 3.8.10 (default, Sep 28 2021, 16:10:42) [GCC 9.3.0]
    

    Konfiguration Ansible

    Die findet man unter /etc/ansible/

     frank@frank-MS-7C37:~$ ls -lha /etc/ansible/
        insgesamt 40K
        drwxr-xr-x   2 root root 4,0K Nov 13 15:47 .
        drwxr-xr-x 156 root root  12K Nov 13 15:44 ..
        -rw-r--r--   1 root root  20K Mär  5  2020 ansible.cfg
        -rw-r--r--   1 root root 1005 Nov 13 15:47 hosts
    

    Die ansible.cfg habe ich auf Standard gelassen. In der hosts Datei konfiguriert man die Server, die man administrieren möchte. Also z.B.

    192.168.3.10    
    

    Playbook

    Ansible wird mit YAML Textdateien konfiguriert. Ich hatte erst angefangen, diese mit nano zu editieren habe aber sehr schnell festgestellt das das keine gute Idee ist. YAML ist sehr empfindlich was die Formatierung angeht und das sieht man in einem richtigen Code-Editor einfach besser. Somit habe ich das Playbook in Codium ertsellt und editiert. Dort kann man bei Erstellung auch direkt YAML auswählen.

    Ich habe in meinem Homeordner eine Datei task.yml erstellt. Der Name ist beliebig.

    ---
    - name: My task
      hosts: all
      tasks:
    
    # Update and install the base software
      - name: Update apt package cache.
        apt:
          update_cache: yes
          cache_valid_time: 600
    
      - name: Upgrade installed apt packages.
        apt:
          upgrade: 'yes'
          #register: upgrade
    
      - name: Ensure that a base set of software packages are installed.
        apt:
          pkg:
           # - build-essential
           # - curl
            - fail2ban
           # - firewalld
           # - git
            - htop
           # - needrestart
           # - pwgen
           # - resolvconf
            - restic
            - rsync
           # - sudo
           # - unbound
           # - unzip
           # - vim-nox
          state: latest
    

    In diesem Beispiel wird erst mal alles aktualisiert. Danach wird eine Liste von Tools installiert, die ich gerne hätte.

    Aufruf des Playbooks

    ansible-playbook playbooks/task.yml
    

    Je nach Konfiguration Eurers Servers kann es evt. folgende Ausgabe kommen.

    frank@frank-MS-7C37:~$ ansible-playbook playbooks/task.yml 
    
    PLAY [My task] **************************************************************************************************************************************************************************
    
    TASK [Gathering Facts] ******************************************************************************************************************************************************************
    fatal: [<Server-IP>]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: frank@<Server-IP>: Permission denied (publickey,password).", "unreachable": true}
    
    PLAY RECAP ******************************************************************************************************************************************************************************
    <Server-IP>     : ok=0    changed=0    unreachable=1    failed=0    skipped=0    rescued=0    ignored=0  
    

    Der Grund ist, das zum Login der Public-Key benötigt wird. Also root@<Server-IP>, oben ist das ja mit frank@<Server-IP> erfolgt.

    ansible-playbook -u root playbooks/task.yml
    

    Ein -u root übergibt den Benutzer root und nun klappt der Zugriff. Ausgabe

     frank@frank-MS-7C37:~$ ansible-playbook -u root playbooks/task.yml 
     
     PLAY [My task] **************************************************************************************************************************************************************************
     
     TASK [Gathering Facts] ******************************************************************************************************************************************************************
     [WARNING]: Platform linux on host <Server-IP> is using the discovered Python interpreter at /usr/bin/python3, but future installation of another Python interpreter could
     change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
     ok: [<Server-IP>
     
    
     TASK [Update apt package cache.] ********************************************************************************************************************************************************
     changed: [<Server-IP>]
     
     TASK [Upgrade installed apt packages.] **************************************************************************************************************************************************
     ok: [<Server-IP>]
     
     TASK [Ensure that a base set of software packages are installed.] ***********************************************************************************************************************
     ok: [<Server-IP>]
     
     PLAY RECAP ******************************************************************************************************************************************************************************
     <Server-IP>     : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    

    Fazit

    Sieht nach einem sehr mächtigen Werkzeug aus und auch extrem umfangreich. Aber auch das was ich suche um ein paar Dinge zu erledigen, die ich nicht immer wieder von Hand machen möchte. Beispiele

    • apt update && apt upgrade
    • packages installieren
    • firewall installieren (Mein Standardfile)
    • und viele Dinge, die mir im Moment nicht einfallen 😉

    Fortsetzung folgt...

  • 0 Votes
    2 Posts
    159 Views
    FrankMF
    Ergänzungen

    Ich hatte Steam auch auf meinem Haupt-PC installiert, da muss es aber wieder runter. Läuft da nicht vernünftig und am PC wird auch nichts geändert. Dafür habe ich ja den anderen eingerichtet. Also, ran ans Aufräumen 😉

    Installation

    Steam gibt es auch als Flatpak, aber das habe ich nicht getestet. Wenn es läuft, würde ich das empfehlen. Dann bleibt das System sauber.

    Deinstallation

    Das .deb Paket mit der Software Verwaltung öffnen. Auf Deinstallation klicken.

    Danach waren leider alle Daten noch vorhanden, als Handarbeit

    rm -R /home/frank/.local/share/Steam
  • 0 Votes
    2 Posts
    485 Views
    FrankMF

    Ich kann jetzt hier von meiner ersten Erfahrung berichten und wie CrowdSec mich gebannt hat 🙂

    Was war passiert? Ich war gestern sehr intensiv mit der Konfiguration von Nextcloud <-> Collabora Online beschäftigt. Nachdem ich irgendwie nicht weiterkam habe ich mich der Erstellung eines Dokumentes gewidmet. Nach einiger Zeit war die Nextcloud nicht mehr erreichbar.

    Ok, hatte ich bei der Konfiguration auch schon mal, den Server einmal neugestartet und fertig. Doch jetzt kam es, Server neugestartet - hilft nicht. Gut, schauen wir mal nach, Der SSH Login ging auch nicht 😞

    Jetzt war guter Rat gefragt. Zu diesem Zeitpunkt ging ich noch davon aus, das auf diesem Server kein CrowdSec installiert war, sondern fail2ban. Und fail2ban hatte eine sehr kurze Bantime vom 10M.

    Also blieb wohl nur noch das Rescue System von Hetzner.

    488866bc-3dcf-4abc-9e98-6107d65aa4c7-grafik.png

    Da hatte ich ja so gut wie gar keine Erfahrung mit. Also mal kurz den Nico angetriggert und es kam folgender Link.

    Link Preview Image Hetzner Rescue-System - Hetzner Docs

    favicon

    (docs.hetzner.com)

    Das Laufwerk war schnell bestimmt und schnell nach /tmp gemountet. Danach musste man sich noch mit chroot in diese Umgebung anmelden.

    chroot-prepare /mnt chroot /mnt

    Nachdem das klappte, habe ich eben fail2ban disabled.

    sysmctl disable fail2ban

    Danach das Rescue beendet. Der Server startete wieder und ich kam wieder per SSH drauf. Puuh.
    Bei meiner ersten Kontrolle fiel mir was auf

    root@:~# pstree systemd─┬─2*[agetty] ├─atd ├─cron ├─crowdsec─┬─journalctl │ └─8*[{crowdsec}] ├─crowdsec-firewa───9*[{crowdsec-firewa}]

    Wie? Da läuft CrowdSec? Da ich dabei bin die Server auf CrowdSec umzustellen, war das wohl hier schon gemacht, aber leider nicht vernünftig. fail2ban hätte mindestens disabled werden müssen und in meiner Dokumentation war das auch nicht enthalten. 6 setzen!

    CrowdSec besteht ja aus zwei Diensten, CrowdSec und dem Firewall-Bouncer. Der CrowdSec Dienst lief aber nicht, der war irgendwie failed. Ok, starten wir ihn und schauen was passiert. Nachdem er gestarte war mal die Banliste angeschaut.

    cscli decisions list

    ergab diesen Eintrag.

    2551501 │ crowdsec │ Ip:5.146.xxx.xxx │ crowdsecurity/http-crawl-non_statics │ ban │ │ │ 53 │ 1h5m55.391864693s │ 1671

    Meine IP war gebannt. Dann wissen wir ja , woher die Probleme kamen.

    cscli decisions delete --id 2551501

    Nach Eingabe war der Ban entfernt. Na gut, aber da ich aktuell immer noch an der richtigen Konfiguration von NC <-> CODE bastel, könnte das ja wieder passieren. Was machen? Kurz gegoogelt. Es gibt eine Whitelist. Aha!

    /etc/crowdsec/parsers/s02-enrich/whitelists.yaml

    name: crowdsecurity/whitelists description: "Whitelist events from private ipv4 addresses" whitelist: reason: "private ipv4/ipv6 ip/ranges" ip: - "127.0.0.1" - "::1" - "5.146.XXX.XXX" cidr: - "192.168.0.0/16" - "10.0.0.0/8" - "172.16.0.0/12" # expression: # - "'foo.com' in evt.Meta.source_ip.reverse"

    Danach den Dienst neustarten. Jetzt hoffen wir mal, das es hilft.

    Zum Schluss noch was, was mir aufgefallen war und was mich auch sehr verwirrt hatte. CrowdSec hatte wegen einem crowdsecurity/http-crawl-non_statics gebannt. Dadurch konnte ich meine
    subdomain.<DOMAIN> nicht erreichen. Ok, logisch, wenn der Ban von da ausgeht. Ich konnte aber gleichzeitig eine andere subdomain mit derselben <DOMAIN> auch nicht erreichen. Komplett verwirrte es mich dann, als ich eine andere <DOMAIN> auf dem selben Server erreichen konnte. Und zum Schluss ging auch der SSH nicht.

    Also, wieder viel gelernt.. 🤓

  • 0 Votes
    1 Posts
    154 Views
    No one has replied
  • Test - Nach einigen Änderungen

    Linux
    1
    0 Votes
    1 Posts
    37 Views
    No one has replied
  • 0 Votes
    6 Posts
    370 Views
    FrankMF

    Es scheint sich was zu tuen. Ein paar Probleme, gehören der Vergangenheit an. Bitte beachten, ich nutze fast ausschließlich Wayland!

    e0c00b53-8f25-4b52-97a3-6fd49a2c5638-grafik.png

    Problem VLC

    Ich nutze zum TV schauen gerne die Listen der Fritzbox. Damit kann man einfach im VLC TV schauen und umschalten usw. Problem war, das sehr oft, das Umschalten nicht korrekt funktionierte. Das scheint mittlerweile gefixt zu sein. DANKE!

    56648116-4bbb-461c-b7fd-4a344cc12749-grafik.png

    Problem KDE Desktop

    Der KDE Desktop konnte sich die Positionen der Icons nicht "merken". Ich sortiere die gerne, so das ich die TV-Listen z.B. immer unten rechts vorfinde. Das ging leider lange nicht. Mittlerweile scheint das nervige Problem gefixt zu sein. Ich habe eben sogar extra dafür neugestartet um zu sehen, das die Positionen erhalten bleiben. DANKE!

    63f71f34-c208-4b98-b0e9-54c94f3d19f2-grafik.png

    Fazit

    Somit bleibt aktuell noch ein Problem, das wäre OBS. Dafür muss ich aktuell noch immer auf eine X11 Session umschalten. Bitte fixen!

    Es sieht auch so aus, das am KDE Plasma Desktop recht aktiv gearbeitet wird. Da kommen sehr oft, sehr viele neue Pakete rein. Nein, ich benutze kein Testing, ich bin aktuell auf dem Stable Zweig.

    So langsam wird der KDE Plasma Desktop - unter Wayland - rund!

    Bitte beachten, die Wayland Erfahrung hängt extrem von der GPU ab. Unter NVidia wird das auch heute keinen Spaß machen. Mit eingebauter AMD GPU und Intel GPU solltet ihr sehr wenige Probleme haben.

    Das dürfte auch der Grund sein, warum immer mehr Distributionen ankündigen, in Zukunft nur noch auf Wayland zus setzen.

    Link Preview Image It's Final: Fedora 40 to Offer Plasma 6, Drops X11 Entirely

    FESCo members voted 6+1 to include KDE Plasma 6 with Wayland as the only desktop mode available in Fedora 40. Here's more on that!

    favicon

    Linuxiac (linuxiac.com)

  • Fedora 34

    Linux
    5
    0 Votes
    5 Posts
    262 Views
    FrankMF

  • Debian 10 Buster 10.5 released

    Linux
    1
    0 Votes
    1 Posts
    196 Views
    No one has replied
  • 0 Votes
    1 Posts
    358 Views
    No one has replied