Ansible 自动化运维介绍

Ansible自动化介绍

Ansible是一种开源的自动化运维工具,用于配置管理、应用部署和任务自动化。其核心基于YAML语言编写的Playbook,通过SSH协议与目标节点通信,无需在被控端安装额外代理。关键组件包括:

  • Inventory:定义目标主机和分组;
  • Playbook:描述自动化任务的YAML文件;
  • Module:执行特定任务的代码单元 (如文件操作、包管理);

环境准备与安装

在Linux控制节点或主节点上安装Ansible:

bash 复制代码
# Ubuntu/Debian  
sudo apt update && sudo apt install ansible  

# CentOS/RHEL  
sudo yum install ansible  

# macOS  
brew install ansible  

验证安装:

bash 复制代码
ansible --version  

配置Inventory文件

默认Inventory文件路径为/etc/ansible/hosts,也可自定义。示例:

ini 复制代码
[web_servers]  
192.168.1.10 ansible_user=ubuntu  
192.168.1.11 ansible_user=ubuntu  

[db_servers]  
db.example.com ansible_ssh_private_key_file=/path/to/key.pem  

编写第一个Playbook

创建deploy_nginx.yml文件,部署Nginx:

yaml 复制代码
---  
- name: Install and start Nginx  
  hosts: web_servers  
  become: yes  
  tasks:  
    - name: Install Nginx  
      apt:  
        name: nginx  
        state: present  
      when: ansible_os_family == "Debian"  

    - name: Start Nginx service  
      service:  
        name: nginx  
        state: started  
        enabled: yes  

执行Playbook与常用命令

运行Playbook:

bash 复制代码
ansible-playbook -i inventory_file deploy_nginx.yml  

常用命令:

  • 测试主机连通性:ansible all -m ping
  • 临时执行命令:ansible web_servers -a "uptime"

进阶功能与最佳实践

变量管理

  • 在Playbook中定义变量:

    yaml 复制代码
    vars:  
      http_port: 80  
  • 使用外部变量文件(如group_vars/web_servers.yml)。

角色(Roles)

通过模块化组织Playbook:

bash 复制代码
ansible-galaxy init roles/nginx  

目录结构示例:

复制代码
roles/nginx/  
├── tasks/  
├── handlers/  
├── templates/  

错误处理

  • 使用ignore_errors: yes忽略任务失败。
  • 通过blockrescue实现异常捕获。

性能优化技巧

  • 启用SSH长连接:在ansible.cfg中设置:

    ini 复制代码
    [ssh_connection]  
    ssh_args = -o ControlMaster=auto -o ControlPersist=60s  
  • 使用strategy: free允许异步任务执行。

通过上述方法,Ansible可实现从简单配置到复杂部署的自动化流程,显著提升运维效率。

相关推荐
聆风吟º3 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~3 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化
极客小云3 小时前
【ComfyUI API 自动化利器:comfyui_xy Python 库使用详解】
网络·python·自动化·comfyui
神梦流3 小时前
GE 引擎的内存优化终局:静态生命周期分析指导下的内存分配与复用策略
linux·运维·服务器
Lsir10110_4 小时前
【Linux】进程信号(下半)
linux·运维·服务器
skywalk81634 小时前
unbound dns解析出现问题,寻求解决之道
运维·服务器·dns·unbound
酉鬼女又兒4 小时前
零基础入门Linux指南:每天一个Linux命令_pwd
linux·运维·服务器
云飞云共享云桌面4 小时前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
skywalk81634 小时前
走近科学:unbound dns域名服务器自己本地解析出现问题,寻求解决之道
运维·服务器·dns·unbound
袁煦丞 cpolar内网穿透实验室4 小时前
远程调试内网 Kafka 不再求运维!cpolar 内网穿透实验室第 791 个成功挑战
运维·分布式·kafka·远程工作·内网穿透·cpolar