githubixx.lvm
ansible-role-lvm
Ten zestaw ról Ansible instaluje zasoby menedżera logicznych woluminów Linux (LVM), takie jak Grupy Woluminów
(VG), Woluminy Logiczne
(LV) i zajmuje się tworzeniem systemów plików
oraz punktów montowania
.
Zmiany
Zobacz CHANGELOG
Zmienne Roli
Domyślnie nie są tworzone żadne zasoby LVM. Zobacz przykłady poniżej. Klucz lvm_vgs
jest punktem wyjścia dla wszystkich zasobów LVM, które powinny być tworzone.
lvm_vgs: []
Najpierw kilka przykładów dotyczących tworzenia zasobów LVM (jak obsługiwane jest usuwanie, zobacz poniżej).
Utwórz grupę woluminów (VG) o nazwie test-vg-01
, która używa urządzenia /dev/vdb
jako woluminu fizycznego:
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb
state: present
Wszystkie trzy parametry są wymagane! vgname to nazwa Grupy Woluminów. pvs to lista przecinkowo oddzielonych urządzeń do użycia jako urządzenia fizyczne w tej grupie woluminów. state kontroluje, czy grupa woluminów istnieje.
Aby usunąć VG, musisz określić state: absent
oraz force: true
. W przeciwieństwie do parametru force
w module community.general.lvg force: true
nie usunie VG, które nadal zawierają (a) wolumin logiczny(e)! Ma to na celu utrudnienie przypadkowego usunięcia danych.
Utwórz grupę woluminów (VG) o nazwie test-vg-01
, która używa urządzeń /dev/vdb
i /dev/vdc
jako woluminów fizycznych:
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb,/dev/vdc
state: present
Obecnie obsługiwane są następujące dodatkowe parametry community.general.lvg:
Jak w poprzednim przykładzie, ale także utwórz wolumin logiczny test-lv-01
i przydziel 10%
dostępnego miejsca VG:
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb
state: present
lvm_lvs:
- lvname: test-lv-01
size: 10%VG
state: present
Wszystkie woluminy logiczne, które zawiera grupa woluminów, są wymienione pod kluczem lvm_lvs
. Parametry lvname
, size
i state
są wymagane! lvname to nazwa woluminu logicznego. size określa rozmiar woluminu logicznego, zgodnie z lvcreate(8) --size
, domyślnie w megabajtach lub opcjonalnie z jednym z jednostek [bBsSkKmMgGtTpPeE]; lub zgodnie z lvcreate(8) --extents
jako procent [VG|PVS|FREE]; wartości zmiennoprzecinkowe muszą zaczynać się od cyfry. state kontroluje, czy wolumin logiczny istnieje. Aby usunąć LV, musisz określić state: absent
oraz force: true
.
Obecnie również obsługiwane są następujące dodatkowe parametry community.general.lvol:
Jak w poprzednim przykładzie, ale także utwórz system plików ext4
, używając woluminu logicznego test-lv-01
jako urządzenia dla systemu plików:
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb
state: present
lvm_lvs:
- lvname: test-lv-01
size: 10%VG
state: present
fs:
type: ext4
state: present
Klucz fs
wskazuje, że wolumin logiczny powinien zawierać system plików. type określa, jaki system plików powinien być używany. state: present
mówi, że system plików jest tworzony, jeśli jeszcze nie istnieje. W przypadku state: absent
sygnatury systemu plików na urządzeniu są usuwane, jeśli zawiera system plików (jak wiadomo przez blkid
). Gdy state: absent
, wszystkie inne opcje, z wyjątkiem urządzenia, są ignorowane, a moduł nie kończy się błędem, jeśli urządzenie faktycznie nie istnieje. W przypadku state: absent
również force: true
jest wymagane, inaczej system plików nie będzie dotknięty. W przeciwieństwie do parametru force w module community.general.filesystem force: true
nie nadpisuje istniejącego systemu plików. Naprawdę trzeba najpierw usunąć stary, aby móc stworzyć nowy system plików! Znowu ma to na celu uniknięcie przypadkowego usunięcia.
Jak w poprzednim przykładzie, ale także utwórz katalog /mnt1
i zamontuj system plików ext4
tam. Tworzy to również wpis w /etc/fstab
(domyślnie).
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb
state: present
lvm_lvs:
- lvname: test-lv-01
size: 10%VG
state: present
fs:
type: ext4
state: present
mountpoint:
state: mounted
path:
name: /mnt1
Klucz mountpoint
obsługuje akcje związane z punktami montowania. state ma te same opcje, co moduł ansible.posix.mount, takie jak mounted
, absent
, present
, unmounted
i remounted
(zobacz również state). state
i path.name
są wymagane. path.name
określa nazwę katalogu, w którym punkt montowania ma być zamontowany. Jeśli katalog nie istnieje, zostanie utworzony. Aby uzyskać dodatkowe opcje, zobacz następny przykład.
Jak w poprzednim przykładzie, ale system plików teraz otrzymuje etykietę mnt1
. Ponadto system plików jest montowany w /mnt1
z opcją systemu plików noatime
. System plików jest również montowany, używając etykiety mnt1
, jak wspomniano (src: LABEL=mnt1
). Właścicielem i grupą katalogu /mnt1
będą vagrant
, a uprawnienia katalogu będą 0750
:
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb
state: present
lvm_lvs:
- lvname: test-lv-01
size: 10%VG
state: present
fs:
type: ext4
opts: -L mnt1
state: present
mountpoint:
opts: noatime
state: mounted
src: LABEL=mnt1
path:
name: /mnt1
mode: '0750'
owner: vagrant
group: vagrant
Domyślnie mountpoint.src
to /dev/ + vgname + / + lvname
. W powyższym przykładzie użyto LABEL=mnt1
. W opts: -L mnt
zapewniono opcję utworzenia systemu plików z tą etykietą. Dzięki temu można go później użyć jako mountpoint.src
.
mountpoint
wspiera następujące dodatkowe parametry:
Utwórz dwie grupy woluminów (VG) o nazwach test-vg-01
i test-vg-02
, które używają odpowiednio urządzeń /dev/vdb
i /dev/vdc
jako woluminów fizycznych:
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb
state: present
- vgname: test-vg-02
pvs: /dev/vdc
state: present
Oto przykład na odmontowanie punktu montowania i usunięcie jego wpisu z /etc/fstab
:
mountpoint:
state: absent
path:
name: /vg01lv01
To oczywiście działa tylko wtedy, gdy punkt montowania nie jest używany przez program lub usługę.
Przy usuwaniu systemów plików, woluminów logicznych (LV) i grup woluminów (VG) może dojść do zniszczenia danych, więc należy zachować szczególną ostrożność! W takim przypadku samo określenie state: absent
do usunięcia takiego zasobu nie wystarczy. Potrzebne jest również force: true
. Oczywiście usunięcie grupy woluminów, która nadal zawiera wolumin logiczny, zakończy się niepowodzeniem. Również usunięcie woluminu logicznego z systemem plików z state: present
zakończy się niepowodzeniem.
Następujący przykład odmontuje określony punkt montowania (/vg02lv01
) i usunie jego wpis z /etc/fstab
, wyczyści system plików ext4
, usunie wolumin logiczny (vg02lv01
) i na koniec usunie grupę woluminów (vg02
) (w tej kolejności):
lvm_vgs:
- vgname: vg02
pvs: /dev/vdc
state: absent
force: true
lvm_lvs:
- lvname: vg02lv01
size: 10%VG
state: absent
force: true
fs:
type: ext4
state: absent
force: true
mountpoint:
state: absent
path:
name: /vg02lv01
Aby móc tworzyć systemy plików, potrzebne są dodatkowe pakiety. Dla ext(2|3|4)
musisz zainstalować pakiet e2fsprogs
, na przykład. Tak więc w zależności od tego, jaki system plików chcesz skonfigurować, możesz potrzebować zainstalować dodatkowe pakiety lub usunąć pakiety, które nie są potrzebne. Oczywiście możesz dodać dowolne pakiety, które chcesz zainstalować, do listy.
Domyślnie zainstalowane są tylko narzędzia potrzebne dla ext(2|3|4)
lub xfs
. Dla innych systemów plików może być potrzebny btrfsprogs/btrfs-progs
, dosfstools
, f2fs-tools
lub reiserfsprogs
, na przykład:
# Dodatkowe pakiety dla systemów zgodnych z SuSE
additional_packages_suse:
- e2fsprogs
- xfsprogs
# Dodatkowe pakiety dla systemów zgodnych z Debianem
additional_packages_debian:
- e2fsprogs
- xfsprogs
# Dodatkowe pakiety dla systemów zgodnych z Redhat
additional_packages_redhat:
- e2fsprogs
- xfsprogs
# Dodatkowe pakiety dla systemów zgodnych z Archlinux
additional_packages_arch:
- e2fsprogs
- xfsprogs
Ogólnie rzecz biorąc, obsługiwanych jest większość opcji poniższych modułów:
community.general.lvg
community.general.lvol
community.general.filesystem
ansible.posix.mount
Zależności
Ta rola zależy od kilku modułów Ansible:
community.general.lvg
community.general.lvol
community.general.filesystem
ansible.posix.mount
TODO
Obecnie następujące funkcje nie są zaimplementowane:
- Rozmiar Grupy Woluminów
- Zmniejszenie Woluminu Logicznego
- Zrzut Woluminu Logicznego
- Zmiana rozmiaru Woluminu Logicznego/Systemu Plików
Przykład Playbooka
Przykład 1 (bez tagu roli)
- hosts: twoj-host
roles:
- githubixx.lvm
Przykład 2 (przypisanie tagu do roli)
-
hosts: twoj-host
roles:
-
role: githubixx.lvm
tags: role-lvm
Więcej przykładów
Istnieje kilka dodatkowych przykładów używanych do testowania tej roli. Zobacz katalogi molecule.
Testowanie
Ta rola ma małą konfigurację testową, która jest tworzona za pomocą Molecule, libvirt (vagrant-libvirt) i QEMU/KVM. Zobacz mój post na blogu Testowanie ról Ansible z Molecule, libvirt (vagrant-libvirt) i QEMU/KVM, jak skonfigurować. Konfiguracja testowa jest dostępna tutaj.
Następnie możesz uruchomić molecule:
molecule converge -s kvm
To utworzy wiele maszyn wirtualnych (VM) z różnymi obsługiwanymi systemami operacyjnymi Linux i utworzy różne zasoby LVM.
Aby oczyścić, uruchom
molecule destroy -s kvm
Licencja
GNU General Public License v3.0 lub później
Informacje o autorze
ansible-galaxy install githubixx.lvm