Ansible批量修改Linux内核参数的核心是统一写入/etc/sysctl.d/*.conf并执行sysctl -p生效,无需重启,支持精准控制与CVE修复;需先配置主机清单和SSH免密,再用copy模块推送配置、command模块加载,或通过playbook原子化执行。

Linux 中用 Ansible 批量修改内核参数,核心是统一写入 /etc/sysctl.conf(或 /etc/sysctl.d/*.conf),再执行 sysctl -p 生效。整个过程无需重启,可精准控制每台服务器的参数值,适合生产环境批量调优或修复 CVE 相关漏洞(如 net.ipv4.ip_forward、vm.swappiness 等)。
准备主机清单与免密登录
确保所有目标服务器已加入 Ansible 主机清单(如 /etc/ansible/hosts),并配置好 SSH 免密访问:
- 在控制节点生成密钥:
ssh-keygen -t rsa -N "" - 分发公钥到全部目标机:
for ip in 192.168.1.{10..20}; do ssh-copy-id root@$ip; done - 测试连通性:
ansible all -m ping,看到SUCCESS即可继续
用 copy 模块推送 sysctl 配置文件
推荐将内核参数单独存为 /etc/sysctl.d/99-custom.conf,避免污染主配置文件,也便于版本管理和回滚:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 创建本地配置文件
kernel-params.conf,内容示例:
net.ipv4.tcp_tw_reuse = 1
vm.swappiness = 10
fs.file-max = 2097152
- 用 Ansible 复制到所有机器:
ansible webservers -m copy -a "src=kernel-params.conf dest=/etc/sysctl.d/99-custom.conf owner=root group=root mode=0644" - 注意:若需覆盖已有同名文件,
copy模块默认会更新;加backup=yes可自动备份旧版
用 command 模块加载新参数
复制完成后,必须让内核重新读取配置才能生效:
- 执行加载命令:
ansible webservers -m command -a "sysctl -p /etc/sysctl.d/99-custom.conf" - 验证是否生效(可选):
ansible webservers -m command -a "sysctl net.core.somaxconn",返回值应与配置一致 - 若提示
Permission denied,确认执行用户为 root;可在命令前加become: yes或在 inventory 中设置ansible_become=true
用 playbook 实现原子化操作
把上述步骤整合成 Playbook,更安全、可复用:
- hosts: webserversbecome: true
tasks:
- name: Copy custom sysctl config
copy:
src: kernel-params.conf
dest: /etc/sysctl.d/99-custom.conf
owner: root
group: root
mode: '0644'
- name: Reload kernel parameters
command: sysctl -p /etc/sysctl.d/99-custom.conf
register: sysctl_result
- name: Show result
debug:
var: sysctl_result.stdout_lines
- 运行:
ansible-playbook sysctl.yml - Playbook 自动处理权限、顺序和错误反馈,比 ad-hoc 命令更适合生产变更

















