ansible批量管理容器宿主机的核心是实现标准化、可验证、可回滚的自动化流程,涵盖统一运行时(containerd/docker)、内核调优、网络存储配置、安全加固及可观测性基线。

用 Ansible 批量管理容器宿主机的环境配置,核心是把“标准化宿主机”这件事变成可复用、可验证、可回滚的自动化流程。不是只装几个包或改几行配置,而是统一内核参数、运行时、网络、安全策略和监控基础,让每台宿主机具备一致、稳定、适合跑容器的底座能力。
统一安装与启用容器运行时
宿主机必须可靠运行 containerd 或 Docker,且版本一致。避免混用或手动安装导致差异。
- 用 package 模块统一安装:对 CentOS/RHEL 用
yum,Ubuntu/Debian 用apt,指定精确版本(如containerd.io-1.7.20-1),禁用自动升级 - 用 systemd 模块确保服务启用并启动,并设置
restart: always;同时关闭旧版docker服务(如有) - 写入标准配置文件:
/etc/containerd/config.toml通过 template 模块部署,包含镜像仓库、cgroup 驱动、沙箱镜像等关键项;执行containerd config dump验证语法
标准化内核与系统参数
容器高密度运行依赖合理的内核调优,这些参数必须批量生效且持久化。
- 用 sysctl 模块写入
/etc/sysctl.d/99-container.conf:启用net.bridge.bridge-nf-call-iptables、调大fs.inotify.max_user_watches、优化vm.swappiness - 用 lineinfile 模块在
/etc/default/grub中追加systemd.unified_cgroup_hierarchy=1和swapaccount=1,再运行grub2-mkconfig更新引导 - 用 command 模块执行
sysctl -p并校验返回码,失败则报错中断
配置容器网络与存储基础
避免各宿主机用默认网桥或本地存储,统一桥接网络 + 独立数据盘挂载点。
- 用 file 模块创建
/var/lib/containerd目录,设属主为root:root,权限0755;若使用独立磁盘,用 mount 模块挂载到该路径 - 用 shell 或 community.general.firewalld 模块开放容器通信端口(如
8472/udpfor VXLAN)、禁用冲突的防火墙规则 - 用 community.libvirt.virt_net(如宿主机也跑 KVM 虚拟机)或 nmcli 模块定义桥接接口(如
cbr0),确保 IP 分配策略统一
加固与可观测性基线
容器宿主机是关键基础设施,需默认开启审计、日志采集和基础监控探针。
- 用 copy 模块部署
/etc/audit/rules.d/container.rules,记录execve、openat等敏感系统调用 - 用 ansible.builtin.service 启用
rsyslog或journalbeat,转发容器日志到中心收集端 - 用 get_url 下载 Prometheus
node_exporter二进制,systemd 注册为服务,暴露:9100/metrics











