Speicher- und Mount-Konfiguration automatisieren

AnsibleBeginner
Jetzt üben

Einführung

Die Automatisierung von Mount-Vorgängen sollte wiederholbar und sicher sein. Für eine Labor-VM bietet tmpfs ein harmloses Dateisystem, das sich dennoch hervorragend eignet, um die Verwaltung von Einhängepunkten und der /etc/fstab zu üben.

In diesem Lab erstellen Sie einen Einhängepunkt, binden ein tmpfs mit ansible.posix.mount ein, überprüfen den Status mit findmnt sowie in der /etc/fstab und belegen die Idempotenz des Playbooks.

Ein Projekt zur Mount-Automatisierung erstellen

In diesem Schritt erstellen Sie ein Projekt zur Automatisierung eines sicheren tmpfs-Mounts.

cd /home/labex/project
mkdir -p rhce-ansible/{inventory,playbooks,reports}
cd rhce-ansible
cat > ansible.cfg <<'EOF'
[defaults]
inventory = ./inventory/hosts
host_key_checking = False
retry_files_enabled = False
EOF
cat > inventory/hosts <<'EOF'
[managed]
host ansible_connection=local
EOF

Das Mount-Ziel ist ein echter System-Einhängepunkt, verwendet jedoch tmpfs, sodass keine Festplattenpartitionierung erforderlich ist. Dies hält das Lab sicher und ermöglicht dennoch das Üben des Mount-Verhaltens und der Konfiguration von /etc/fstab.

Mount-Variablen definieren

In diesem Schritt definieren Sie den Einhängepunkt, den Dateisystemtyp und die Optionen. Die Option size=16m hält das tmpfs klein. Bevor Sie in diesem Schritt Befehle ausführen, kehren Sie in das Ansible-Projektverzeichnis zurück. Dies sorgt für Stabilität, auch wenn LabEx jeden Schritt separat ausführt.

cd /home/labex/project/rhce-ansible
mkdir -p inventory/group_vars
cat > inventory/group_vars/managed.yml <<'EOF'
mount_point: /mnt/rhce-ansible-data
mount_src: tmpfs
mount_fstype: tmpfs
mount_opts: size=16m,mode=0755
EOF

Die Variablen beschreiben sowohl den aktiven Mount als auch den persistenten Eintrag. tmpfs ist die Quelle und der Dateisystemtyp, während size=16m,mode=0755 die Größe des speicherbasierten Dateisystems und die Berechtigungen des Einhängepunkts steuert.

cat inventory/group_vars/managed.yml

Das Mount-Playbook schreiben

In diesem Schritt verwenden Sie ansible.posix.mount. Die Einstellung state: mounted sorgt dafür, dass das Dateisystem sofort eingehängt wird und ein Eintrag in der /etc/fstab sichergestellt ist. Bevor Sie in diesem Schritt Befehle ausführen, kehren Sie in das Ansible-Projektverzeichnis zurück.

cd /home/labex/project/rhce-ansible
cat > playbooks/manage-mount.yml <<'EOF'
---
- name: Configure a safe tmpfs mount
  hosts: managed
  become: true
  gather_facts: false
  tasks:
    - name: Ensure mount point exists
      ansible.builtin.file:
        path: "{{ mount_point }}"
        state: directory
        mode: '0755'

    - name: Mount and persist tmpfs
      ansible.posix.mount:
        path: "{{ mount_point }}"
        src: "{{ mount_src }}"
        fstype: "{{ mount_fstype }}"
        opts: "{{ mount_opts }}"
        state: mounted

    - name: Write evidence inside mounted filesystem
      ansible.builtin.copy:
        dest: "{{ mount_point }}/mounted-by-ansible.txt"
        content: |
          mounted=true
        mode: '0644'
EOF

state: mounted erfüllt zwei Aufgaben: Es hängt das Dateisystem sofort ein und stellt sicher, dass ein Eintrag in /etc/fstab für zukünftige Systemstarts vorhanden ist. Die letzte Copy-Task schreibt eine kleine Markierungsdatei in das eingehängte Dateisystem, damit Sie die Nutzbarkeit des Mounts überprüfen können.

ansible-playbook playbooks/manage-mount.yml --syntax-check

Den Mount ausführen und überprüfen

In diesem Schritt führen Sie das Playbook aus und überprüfen den aktiven Mount sowie den persistenten Eintrag in der fstab.

cd /home/labex/project/rhce-ansible
ansible-playbook playbooks/manage-mount.yml | tee reports/mount-first.txt

Der erste Durchlauf sollte den Einhängepunkt erstellen, das tmpfs einhängen, die /etc/fstab aktualisieren und die Markierungsdatei schreiben. Sie werden jedes dieser Ergebnisse direkt überprüfen.

findmnt /mnt/rhce-ansible-data

findmnt bestätigt, dass der aktive Kernel-Mount-Table den Einhängepunkt enthält.

grep -F /mnt/rhce-ansible-data /etc/fstab

Die Zeile in /etc/fstab bestätigt, dass die persistente Konfiguration vorhanden ist.

cat /mnt/rhce-ansible-data/mounted-by-ansible.txt

Das Lesen der Markierungsdatei beweist, dass das eingehängte Dateisystem beschreibbar ist und unter dem erwarteten Pfad eingebunden wurde.

Die Idempotenz der Mount-Automatisierung bestätigen

In diesem Schritt führen Sie das Playbook erneut aus. Der Einhängepunkt, der fstab-Eintrag und die Markierungsdatei sollten bereits dem gewünschten Zustand entsprechen.

cd /home/labex/project/rhce-ansible
ansible-playbook playbooks/manage-mount.yml | tee reports/mount-second.txt

Der zweite Durchlauf prüft, ob Ansible den bestehenden Mount, den fstab-Eintrag und die Markierungsdatei erkennt, ohne Änderungen vorzunehmen.

grep -E 'host.*changed=0' reports/mount-second.txt

Zusammenfassung

Sie haben einen sicheren tmpfs-Mount mit ansible.posix.mount konfiguriert, den aktiven und persistenten Mount-Status überprüft und bestätigt, dass das Playbook konvergiert.