nickjj.swapfile
ansible-swapfileとは? 
ansible-swapfileは、次のことを行うためのAnsibleロールです:
- スワップファイルの作成
- スワップファイルの削除
なぜこのロールを使用したいのですか?
スワップファイルは便利です。これは、OOMキラーが暴走してサービスを停止するのを防ぎ、Linuxカーネルがあまりアクセスされないメモリページを格納する場所を提供し、頻繁にアクセスされるメモリページにより多くのメモリを提供できるようにします。基本的にシステム全体のパフォーマンスを向上させることができます。
対応プラットフォーム
- Ubuntu 16.04 LTS (Xenial)
- Debian 8 (Jessie)
- Debian 9 (Stretch)
ロールの変数
# 2GB以下のRAM容量の場合は、デフォルトでRAMの2倍に設定します。
swapfile_size: "{{ ((ansible_memtotal_mb | int * 2)
if (ansible_memtotal_mb | int <= 2048)
else '512') }}"
# fallocateを使う方がddよりもかなり速いので、デフォルトでこれを使用します。
# ファイルシステムがfallocateをサポートしていない場合は、これをFalseに設定してください。
#
# サポートされているプラットフォームを使用している場合は、問題ありません。
swapfile_fallocate: True
# スワップファイルはどこに作成しますか?
swapfile_path: "/swapfile-{{ swapfile_size }}"
# スワップファイルを設定するための設定。詳細はGoogleで調べてください。
swapfile_swappiness: 60
swapfile_vfs_cache_pressure: 100
# スワップファイルを設定するためのデフォルト設定です。これを
# 直接編集するべきではありません。代わりに上の変数を使用してください。
# これにより、辞書全体を持ってこなくても1つだけカスタマイズできます。
swapfile_sysctl:
"vm.swappiness": "{{ swapfile_swappiness }}"
"vm.vfs_cache_pressure": "{{ swapfile_vfs_cache_pressure }}"
# Trueに設定した場合、スワップファイルは無効化され、削除されます。
swapfile_delete: False
使用例
例として、appというグループがあり、一般的なsite.ymlファイルがあると仮定します。
このロールを使用するには、site.ymlファイルを次のように編集します:
---
- name: "アプリサーバーの設定"
hosts: "app"
become: True
roles:
- { role: "nickjj.swapfile", tags: "swapfile" }
4GBのスワップファイルを設定し、swappinessをカスタマイズしたい場合は、inventoryディレクトリに相対的にあるgroup_vars/app.ymlを開くか作成し、次のようにします:
---
swapfile_size: 4096
swapfile_swappiness: 20
これで、ansible-playbook -i inventory/hosts site.yml -t swapfileを実行できます。
インストール
$ ansible-galaxy install nickjj.swapfile
Ansible Galaxy
公式のAnsible Galaxyで見つけることができ、評価も可能です。
ライセンス
MIT
インストール
ansible-galaxy install nickjj.swapfileライセンス
mit
ダウンロード
37.9k
所有者
Currently a self employed freelance developer & teacher. I mainly work with Flask, Rails, Bash, Docker, Kubernetes, Ansible & Terraform. Also a @docker captain.
