[ubuntu] ansibleでswapfileを作成する

GCPのf1-microインスタンスがメモリ不足になっていたのでSwapファイルを設定しています。パフォーマンス的には別のディスクに書き出したほうが良いと思います。このあたりは IBM Cloud の場合にはどのサイズのインスタンスを作ってもSwapは別に用意されていて親切さを感じます。

gistに貼ったのでちょっと不親切な状態になっていますが実際には以下のようなディレクトリ構成だと思っていてください。

~/ansible/roles/swap$ du -a
4       ./vars/main.yml
8       ./vars
4       ./handlers/main.yml
8       ./handlers
4       ./templates/swapfile.swap.j2
8       ./templates
4       ./tasks/main.yml
8       ./tasks
36      .

Ansibleのソースは次のようなものを用意しています。

完全に自分用のメモですが以下のコマンドで導入されます。以下は cloud shell上に ansibleを導入している環境を前提にしています。またSwapを作りたいGCEのインスタンスには、ネットワークタグに swap を追加しています。こうすることで tag_swap と dynamic_inventory で認識されたインスタンスのみに上記の Playbook が導入されていきます。

ansible-playbook -i inventory/gce.py -l tag_swap --private-key=~/.ssh/google_compute_engine main.yml

色々やり方があるとは思いますが systemd 的には今回のようにするのが推奨されているのかなと思います。ただしmount系は /etc/fstab でも動くとは思いますので任意の方法で試してください。パフォーマンスの低下が気にならない範囲であればメモリだけの問題であれば swap は1つの手として昔ながらの方法として普通に使えます。