LoginSignup
5
10

More than 5 years have passed since last update.

LVM の設定を ansible から実行する

Last updated at Posted at 2017-09-30

かなり雑だが ansible から LVM 設定を行うタスクファイルを書いた。

そのまま使われることを想定した作りではないので、もし流用するなら変数化するべきところを変数化して改変する形で利用して欲しい。

一応 MySQL の準同期レプリケーション + マルチスレッドレプリケーションを ansible で組む の流れをくむ関連記事として書いた。

roles/lvm/main.yml
# ボリュームグループ (vg) 及び論理ボリューム (lvg) は vagrant
# マウント先は /mnt/vagrant
# CentOS7 前提で書いてるためファイルシステムは xfs
---

# /dev/sda 以外のブロックデバイスを取得する
# /dev/sda 以外のブロックデバイスを全て LVM に入れること前提
- name: find all disk devices
  find:
    paths: /dev
    file_type: any
    patterns: "^sd[b-z]$"
    use_regex: yes
  register: found_devices

- name: create volume group
  lvg:
    vg: vagrant
    pvs: "{{ found_devices.files|map(attribute='path')|join(',') }}"
  become: yes

- name: create logical volume
  lvol:
    vg: vagrant
    lv: vagrant
    size: +100%FREE
    shrink: no
  become: yes

- name: make filesystem
  filesystem:
    fstype: xfs
    dev: /dev/vagrant/vagrant
    resizefs: yes
  become: yes

- name: mount disk
  mount:
    path: /mnt/vagrant
    src: /dev/vagrant/vagrant
    fstype: xfs
    state: mounted
  become: yes

# ansible でのワークアラウンドをきかせるため LANG を en_US.UTF-8 で固定化
# (英語以外のロケールだと LVM のパーティション取得で失敗する)
# あと unit (単位) は "GB" ではなく "GiB" にする。でないと差分計算がずれる原因になる
- name: get each disk size
  parted:
    device: "{{ item.path }}"
    unit: GiB
    state: info
  register: total_disk_size
  with_items: "{{ found_devices.files }}"
  environment:
    LANG: en_US.UTF-8
  become: yes

# /dev/sda 以外のディスクサイズの算出。表示のみ、何かしらで差分算出する場合に。
- name: get total disk size (GiB)
  debug:
    msg: "{{ item }}"
  with_items: "{{ total_disk_size.results|map(attribute='disk')|map(attribute='size')|list|sum }}"

ちなみになぜ論理ボリュームとボリュームグループが vagrant なのかはお察しの通り vagrant でやったから。当初は Google Compute Engine 上でやるつもりだったが、複数ディスクをアタッチしてもひとつのブロックデバイスとして表示されてしまい今回の目的が達成できなかった。

5
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
10