【SELECK掲載記念】AnsibleでPartitionを切る!

追記

さくらのクラウドについて取材していただいた記事も公開されました!
合わせてご覧ください!!

さくらのクラウドで「尖ったインフラ環境」を構築。カスタマイズに強い、その実力とは | SELECK


本編

先日「SELECK(セレック)」様にAnsibleの活用事例をインタビューいただきました。

数百台のサーバー構成を「Ansible」で管理。大規模 DSP システムを支える技術とは | SELECK

素晴らしい記事にしていただいたのでせっかくなら何かネタになりそうな実例をご紹介したいと考えた結果(?)、バッドノウハウが詰まったパーティションの切り方をご紹介したいと思います!

Google グループでも話題になっていますが、本記事を書いている時点では Ansible に partition を切るモジュールはないようです。
しかしながら物理サーバーや場合によってはクラウドサーバーでもパーティションを切りたいケースは当然あります。

HDD/SSD にパーティションを切る

さすがに会社のプライベートリポジトリから Playbook を持ってくるわけにもいかないので、今回は近いものとして私の個人的な Playbook をご紹介します。

mazgi/ansible-gentooinstallbattle

なお、実際のギョウムでは優秀な若者が改善した Playbook が使われていることを申し添えておきます。

gdiskfdisk ではなく parted を使うと Ansible でも比較的簡単にパーティションを切ることができます。
いつ何時数十台のサーバーで同時にパーティションを切る必要が生じるとも限りませんので覚えておいて損はないと思います!!

  • GPT パーティションテーブルを作る
- name: "Create partition table"
  command: "parted --script --align optimal /dev/vda -- mklabel gpt"
  
  • 各パーティションを切る

ここでは、
第 1 パーティションは GRUB2 用に VFAT で、
第 2 パーティションは SWAP 用に、
第 3 パーティションは OS 用に切ることにします。

GRUB2 用のパーティションは FAT32 で 4MiB もあれば十分です。フォーマットしなくても使える気がします。
OS 用の第 3 パーティションは空き領域を全て割り当てるため最後の引数に -1 を渡しています。

- name: "Create BIOS boot partition"
  command: "parted --script --align optimal /dev/vda -- mkpart bios_boot fat32 1MiB 5MiB"

- name: "Set BIOS boot partition"
  command: "parted --script --align optimal /dev/vda -- set 1 bios_grub on"

- name: "Create filesystem for grub2"
  filesystem: fstype=vfat dev=/dev/vda1

- name: "Create swap partition"
  command: "parted --script --align optimal /dev/vda -- mkpart swap linux-swap 5MiB 4GiB"

- name: "Create filesystem for swap"
  command: mkswap /dev/vda2

- name: "Create root partition"
  command: "parted --script --align optimal /dev/vda -- mkpart linux btrfs 4GiB -1"

- name: "Create filesystem for /"
  filesystem: fstype=btrfs dev=/dev/vda3
  

対話式インタフェースがメインの gdiskfdisk と違って parted なら Ansible の command モジュールで扱いやすいですね!
あとはパーティションサイズの指定をもう少し楽にできると尚良しです。

なお、この方法では「冪等性?なにそれおいしいの?」になってしまいます。
filesystem モジュールはあるので、“partition module"みたいなのが提供されるとうれしいですね!
どなたか作ってください!!

さいごに

SELECK では Ansible を含めた色々なツールやサービスの事例を知ることができておすすめです!!(宣伝)

数百台のサーバー構成を「Ansible」で管理。大規模 DSP システムを支える技術とは | SELECK