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

プロジェクトについて

Create and configure a swap file.

インストール
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.