LinuxのカーネルパラメーターやPAM limitsの設定は、大規模なサービスで抜けが発生すると大変な事になるので、Ansibleで一気に適用してしまいたい。最近のバージョンではどちらも専用のモジュールが用意されているため、備忘録がてら記載しておく。
カーネルパラメーター
sysctlモジュールを使用する事で、/etc/sysctl.conf を編集できる。
デフォルトで設定は即時反映される。
- sysctl:
name: "{{ item.name }}"
value: "{{ item.value }}"
state: present
ignoreerrors: yes
with_items:
- name: net.core.somaxconn
value: 8192
- name: fs.file-max
value: 5242880
PAM limits
pam_limitsモジュールを使用する事で、/etc/security/limits.conf を編集できる。
なお、PAM認証を介さない制限には当然ながら使えないので、nginx等のdaemonの制限は別途行う必要がある事を忘れずにおきたい。
- pam_limits:
domain: "{{ item.domain }}"
limit_type: "{{ item.limit_type }}"
limit_item: nofile
value: 655360
with_items:
- domain: root
limit_type: soft
- domain: root
limit_type: hard
- domain: "*"
limit_type: soft
- domain: "*"
limit_type: hard