Linux系统运维自动化项目教程_Ansible批量管理实战

21次阅读

ansible 是轻量级无代理的 linux 自动化工具,依赖 sshpython,通过 Inventory、Module、Playbook、Role 等组件实现幂等性批量运维。

Linux系统运维自动化项目教程_Ansible批量管理实战

Ansible 是 Linux 系统运维自动化中最轻量、最易上手的批量管理工具之一,无需在被控端安装代理(agentless),仅依赖 SSH 和 Python 即可完成配置部署、服务管理、应用发布等任务。

Ansible 核心组件与运行逻辑

理解 Ansible 的工作方式是实战的前提。它由控制节点(Control node)发起操作,通过 SSH 连接目标主机(Managed Nodes),执行模块(Module)或 Playbook 中定义的任务。所有操作基于 YAML 语法编写,强调可读性与幂等性——即多次执行结果一致,不会重复创建或覆盖已存在的配置。

关键组件包括:

  • Inventory(主机清单):定义要管理的服务器列表,支持分组、变量嵌套、动态发现;
  • Module(模块):如 copyyumsystemduser 等,是 Ansible 执行具体操作的最小单元;
  • Playbook(剧本):YAML 文件,将多个任务按顺序组织,支持条件判断、循环、错误处理;
  • Role(角色):标准化的目录结构,用于复用和共享功能模块,如 nginx 部署、mysql 初始化等。

快速搭建 Ansible 控制环境

centos/RHEL 或 ubuntu 上安装 Ansible 很简单:

  • CentOS 8+:运行 dnf install ansible-core -y
  • Ubuntu:执行 apt update && apt install ansible -y
  • 建议配置免密 SSH 登录到所有目标主机,使用 ssh-copy-id user@host 分发公钥;
  • 编辑 /etc/ansible/hosts 或自定义 inventory 文件,例如:

[web]
192.168.1.10
192.168.1.11
[db]
192.168.1.20

从命令行到 Playbook 的进阶实践

先用 ad-hoc 命令验证连通性和基础操作:

  • ansible all -m ping 检查所有主机是否可达;
  • ansible web -m copy -a “src=./nginx.conf dest=/etc/nginx/nginx.conf” 批量推送配置文件
  • ansible db -m yum -a “name=mariadb-server state=present” 统一安装软件包。

当任务变多时,改用 Playbook 提升可维护性。例如一个简单的 Web 服务部署剧本 deploy_nginx.yml


– hosts: web
  become: true
  tasks:
    – name: Install nginx
      yum:
        name: nginx
        state: present
    – name: Copy config file
      copy:
        src: files/nginx.conf
        dest: /etc/nginx/nginx.conf
    – name: Start and enable nginx
      systemd:
        name: nginx
        state: started
        enabled: true

执行命令:ansible-playbook deploy_nginx.yml

提升效率的实用技巧

真实运维中常需处理差异配置、敏感信息和执行安全:

  • vars_filesgroup_vars/ 目录分离变量,实现不同环境(dev/staging/prod)差异化部署;
  • 敏感数据如密码、密钥用 ansible-vault 加密,避免明文暴露;
  • 加入 ignore_errors: yesfailed_when 控制任务失败逻辑;
  • 结合 –limit 参数临时限制执行范围,比如只更新某几台机器做灰度发布。

不复杂但容易忽略。

text=ZqhQzanResources