Ansible模块——管理100台Linux的最佳实践

使用 Ansible 管理 100 台 Linux 服务器时,推荐遵循以下 最佳实践,以提升可维护性、可扩展性和安全性。以下内容结合实战经验进行总结,适用于中大型环境(如 100 台服务器):

一、基础架构设计

  1. 分组与分层

使用 inventory 文件分组管理主机(建议使用 YAML 格式的 inventory,更清晰):

复制代码
[webservers]web01 ansible_host=192.168.1.10web02 ansible_host=192.168.1.11
[dbservers]db01 ansible_host=192.168.1.20
[prod:children]webserversdbservers

或 inventory.yaml:

复制代码
all:  children:    webservers:      hosts:        web01:          ansible_host: 192.168.1.10        web02:          ansible_host: 192.168.1.11    dbservers:      hosts:        db01:          ansible_host: 192.168.1.20

建议: 按"业务线"、"环境(prod/dev/test)"、"服务类型"进行分组。

二、目录结构规范

(遵循官方推荐)​​​​​​​

复制代码
ansible-project/├── inventories/│   └── prod/│       ├── hosts.yaml│       └── group_vars/│           └── all.yaml├── roles/│   └── nginx/│       ├── tasks/│       ├── templates/│       └── vars/├── playbooks/│   └── deploy_nginx.yaml├── files/├── ansible.cfg└── requirements.yml

使用 roles 实现模块化、重用性强的 Playbook 管理方式。

三 连接优化和性能提升

  1. 配置连接参数(ansible.cfg)​​​​​​​

    [defaults]forks = 50timeout = 30inventory = ./inventories/prod/hosts.yamlremote_user = ansiblehost_key_checking = Falseretry_files_enabled = Falselog_path = ./ansible.log
    [ssh_connection]pipelining = Truessh_args = -o ControlMaster=auto -o ControlPersist=60s

forks:并发数设置为 20~50,视服务器负载能力。

pipelining:提升执行效率。

ControlPersist:复用 SSH 连接,减少频繁握手。

四、变量管理规范

使用 group_vars/ 和 host_vars/ 管理配置变量。

all.yaml 中放通用配置,按需覆盖。​​​​​​​

复制代码
# group_vars/webservers.yamlnginx_port: 80nginx_user: www-data

使用 Roles 实现可复用

模块化部署

建议使用 ansible-galaxy init 创建角色目录结构。例如:

复制代码
ansible-galaxy init roles/nginx

每个角色专注于一个功能,例如:

nginx

mysql

firewalld

user_manage

、使用 Tags 精准执行任务​​​​​​​

复制代码
- name: install nginx  apt:    name: nginx    state: present  tags: install

使用时:

复制代码
ansible-playbook site.yaml --tags "install"

七、使用 Vault 加密敏感信息

复制代码
ansible-vault encrypt group_vars/prod/db.yaml

然后通过 --ask-vault-pass 或 --vault-password-file 解密。

八、自动化与审计

  1. 启用日志记录

ansible.cfg:

复制代码
log_path = ./logs/ansible.log
  1. 定期巡检脚本(自动执行)

利用 crontab 或 CI/CD(如 GitLab CI)定期运行:

复制代码
ansible-playbook check_system_status.yaml

九、版本控制与协作

使用 Git 管理 Playbook 和 Inventory

使用分支区分测试/生产环境

合并请求流程控制配置变更

十、安全与合规

使用最小权限原则配置 SSH 用户

使用 become 进行权限提升,不直接用 root

定期清理旧的 SSH 密钥和权限

相关推荐
胡斌附体38 分钟前
linux测试端口是否可被外部访问
linux·运维·服务器·python·测试·端口测试·临时服务器
愚润求学1 小时前
【Linux】自旋锁和读写锁
linux·运维
大锦终1 小时前
【Linux】常用基本指令
linux·运维·服务器·centos
IT项目管理1 小时前
达梦数据库DMHS介绍及安装部署
linux·数据库
知北游天1 小时前
Linux:多线程---深入互斥&&浅谈同步
linux·运维·服务器
Gappsong8741 小时前
【Linux学习】Linux安装并配置Redis
java·linux·运维·网络安全
try2find2 小时前
移动conda虚拟环境的安装目录
linux·运维·conda
码农101号2 小时前
Linux中容器文件操作和数据卷使用以及目录挂载
linux·运维·服务器
PanZonghui2 小时前
Centos项目部署之Nginx 的安装与卸载
linux·nginx
PanZonghui3 小时前
Centos项目部署之安装数据库MySQL8
linux·后端·mysql