githubixx.lvm

ansible-role-lvm

このAnsibleロールは、Linuxの論理ボリュームマネージャー (LVM) のリソースをインストールします。これには ボリュームグループ (VG) や 論理ボリューム (LV) の作成、ファイルシステム の作成と マウントポイント の管理が含まれます。

更新履歴

CHANGELOG を参照してください。

ロール変数

デフォルトでは、LVMリソースは作成されません。以下の例を参照してください。lvm_vgs キーは作成するすべてのLVMリソースのエントリポイントです。

lvm_vgs: []

まず、LVMリソースの作成に関するいくつかの例を示します(削除の方法については下記参照)。

物理ボリューム /dev/vdb を使用して test-vg-01 というボリュームグループ (VG) を作成します:

lvm_vgs:
  - vgname: test-vg-01
    pvs: /dev/vdb
    state: present

3つのパラメータは必須です! vgname はボリュームグループの名前です。 pvs はこのボリュームグループに使用する物理デバイスのリストです。 state はボリュームグループが存在するかどうかを制御します。
VGを削除するには、state: absentforce: true を指定する必要があります。これに対し、community.general.lvg モジュールの force パラメータは、論理ボリュームを含むVGを削除することはありません!これは、データを誤って削除するのを防ぐためです。

物理ボリューム /dev/vdb/dev/vdc を使用して test-vg-01 というボリュームグループ (VG) を作成します:

lvm_vgs:
  - vgname: test-vg-01
    pvs: /dev/vdb,/dev/vdc
    state: present

現在、次の追加のcommunity.general.lvgパラメータがサポートされています:

前の例と同様ですが、論理ボリューム test-lv-01 を作成し、使用可能なVGスペースの 10% を割り当てます:

lvm_vgs:
  - vgname: test-vg-01
    pvs: /dev/vdb
    state: present
    lvm_lvs:
      - lvname: test-lv-01
        size: 10%VG
        state: present

ボリュームグループに含まれるすべての論理ボリュームは、lvm_lvs キーの下にリストされます。lvnamesize、および stateパラメータは必須です! lvname は論理ボリュームの名前です。 sizeは論理ボリュームのサイズを指定します。デフォルトではメガバイト単位で、オプションで [bBsSkKmMgGtTpPeE] の単位が使用できます。 state は、論理ボリュームが存在するかどうかを制御します。LVを削除するには、state: absentforce: true を指定する必要があります。

現在、以下の追加のcommunity.general.lvolパラメータもサポートされています:

前の例と同様ですが、論理ボリューム test-lv-01 をデバイスとして使用して ext4 ファイルシステムを作成します:

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

fs キーは、論理ボリュームにファイルシステムを含めるべきことを指定します。 type は使用するファイルシステムを指定します。 state: present は、ファイルシステムがすでに存在しない場合は作成されることを示します。 state: absent の場合、デバイスにファイルシステムが含まれている場合、その署名は消去されます(blkidで知られているように)。 state: absent の場合、デバイス以外のすべてのオプションは無視され、デバイスが実際に存在しなくてもモジュールは失敗しません。また、state: absentの場合、force: true が必要です。そうしないと、ファイルシステムは影響を受けません。 community.general.filesystem モジュールの force パラメータとは異なり、force: true によって既存のファイルシステムが上書きされることはありません。新しいファイルシステムを作成するには、古いものを最初に消去する必要があります!これも誤って削除するのを避けるためです。

前の例と同様ですが、 /mnt1 ディレクトリを作成し、そこで ext4 ファイルシステムをマウントします。これにより /etc/fstab にもエントリが作成されます(デフォルトで)。

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

mountpoint キーは、マウントポイントに関連するアクションを管理します。 state は、ansible.posix.mount モジュールが提供するものと同じオプション (mounted, absent, present, unmounted, remounted) を持っています。 statepath.name は必須です。 path.name はマウントポイントとしてマウントされるディレクトリの名前を指定します。ディレクトリが存在しない場合は、自動的に作成されます。今後のオプションについては次の例を参照してください。

前の例と同様ですが、ファイルシステムにラベル mnt1 が追加されます。また、ファイルシステムは noatime ファイルシステムオプションで /mnt1 にマウントされます。このファイルシステムは、ラベルを使用してマウントされます(src: LABEL=mnt1)。 /mnt1 ディレクトリの ownergroupvagrant に設定され、ディレクトリのパーミッションは 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

デフォルトでは、 mountpoint.src/dev/ + vgname + / + lvname になります。上記の例では LABEL=mnt1 が使用されました。opts: -L mnt では、そのラベルを持つファイルシステムを作成するオプションが提供されました。これにより、後で mountpoint.src に使用できます。

mountpoint は次の追加パラメータをサポートしています:

物理ボリューム /dev/vdb/dev/vdc を使用して、test-vg-01test-vg-02 という2つのボリュームグループ (VG) を作成します:

lvm_vgs:
  - vgname: test-vg-01
    pvs: /dev/vdb
    state: present
  - vgname: test-vg-02
    pvs: /dev/vdc
    state: present

マウントポイントをアンマウントし、/etc/fstab からそのエントリを削除する例を示します:

mountpoint:
  state: absent
  path:
    name: /vg01lv01

これはもちろん、マウントポイントがプログラムやサービスによって使用されていない場合のみ機能します。

ファイルシステム、論理ボリューム (LV) やボリュームグループ (VG) の削除はデータを破壊する可能性があるため、特に注意が必要です。この場合、リソースを削除するために state: absent を指定するだけでは不十分です。 force: true も必要です。当然のことながら、まだ論理ボリュームを含むボリュームグループを削除することは失敗します。また、ファイルシステムがある論理ボリュームを state: present で削除することも失敗します。

以下の例では、指定されたマウントポイント(/vg02lv01)をアンマウントし、/etc/fstab からそのエントリを削除し、ext4 ファイルシステムを消去し、論理ボリューム (vg02lv01) を削除し、最後にボリュームグループ (vg02) を削除します(この順序で):

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

ファイルシステムを作成するには、追加のパッケージが必要です。 ext(2|3|4) の場合、e2fsprogs パッケージをインストールする必要があります。したがって、設定したいファイルシステムに応じて、追加のパッケージをインストールしたり、必要ないパッケージをリストから削除したりする必要があります。もちろん、インストールするパッケージをリストに追加することもできます。

デフォルトでは、 ext(2|3|4) または xfs に必要なツールのみがインストールされます。他のファイルシステムの場合は、btrfsprogs/btrfs-progsdosfstoolsf2fs-tools または reiserfsprogs が必要になる場合があります:

# SuSE 互換のOS用の追加パッケージ
additional_packages_suse:
  - e2fsprogs
  - xfsprogs

# Debian 互換のOS用の追加パッケージ
additional_packages_debian:
  - e2fsprogs
  - xfsprogs

# Redhat 互換のOS用の追加パッケージ
additional_packages_redhat:
  - e2fsprogs
  - xfsprogs

# Archlinux 互換のOS用の追加パッケージ
additional_packages_arch:
  - e2fsprogs
  - xfsprogs

一般的に、次のモジュールのほとんどのオプションがサポートされています:

community.general.lvg
community.general.lvol
community.general.filesystem
ansible.posix.mount

依存関係

このロールは、いくつかのAnsibleモジュールに依存しています:

community.general.lvg
community.general.lvol
community.general.filesystem
ansible.posix.mount

TODO

現在、次の機能は実装されていません:

  • ボリュームグループのサイズ変更
  • 論理ボリュームの縮小
  • 論理ボリュームのスナップショット
  • 論理ボリューム/ファイルシステムのサイズ変更

例プレイブック

例1(ロールタグなし)

- hosts: your-host
  roles:
    - githubixx.lvm

例2(ロールにタグを割り当てる)

-
  hosts: your-host
  roles:
    -
      role: githubixx.lvm
      tags: role-lvm

さらなる例

このロールのテストに使用されるいくつかの例があります。 molecule ディレクトリを参照してください。

テスト

このロールには、Molecule、libvirt(vagrant-libvirt)およびQEMU/KVMを使用して作成された小さなテストセットアップがあります。設定方法については、私のブログ投稿 Testing Ansible roles with Molecule, libvirt (vagrant-libvirt) and QEMU/KVM を参照してください。テスト構成は こちら です。

その後、moleculeを実行できます:

molecule converge -s kvm

これにより、サポートされているさまざまなLinuxオペレーティングシステムとさまざまなLVMリソースを持つ仮想マシン(VM)がいくつかセットアップされます。

クリーンアップを行うには、次のコマンドを実行します:

molecule destroy -s kvm

ライセンス

GNU一般公衆ライセンス v3.0 以降

著者情報

http://www.tauceti.blog

プロジェクトについて

Manage Linux Logical Volume Manager resources

インストール
ansible-galaxy install githubixx.lvm
ライセンス
gpl-3.0
ダウンロード
1.8k
所有者
Senior System Engineer - Python, Go, Cloud, Kubernetes, Commodore, Retro, 80's ;-)