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