温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用Ansible做服务器运维

发布时间:2026-10-11 21:22:11 来源:亿速云 阅读:109 作者:小樊 栏目:系统运维

下面从概念 → 安装 → 核心组件 → 常见运维场景 → 最佳实践给你一个完整、可落地的 Ansible 服务器运维指南。


一、Ansible 是什么(为什么适合运维)

Ansible 是无 Agent的自动化运维工具:

  • 通过 SSH 管理服务器
  • 用 YAML 写“剧本”(Playbook)
  • 幂等(重复执行结果一致)
  • 适合:批量部署、配置管理、补丁、巡检、回滚

二、环境准备

1. 控制端(你的电脑 / 跳板机)

# CentOS / Rocky
yum install -y ansible

# Ubuntu
apt install -y ansible

# 验证
ansible --version

2. 被管理端

  • 开启 SSH
  • 控制端能免密登录(推荐)
ssh-keygen
ssh-copy-id user@server_ip

三、Ansible 核心概念

概念 说明
Inventory 主机清单
Module 执行单元(命令、包、文件等)
Playbook 自动化剧本(YAML)
Role 可复用的运维模块
Task Playbook 中的一步操作

四、主机清单(Inventory)

示例:inventory.ini

[web]
192.168.1.10
192.168.1.11

[db]
192.168.1.20

[all:vars]
ansible_user=root
ansible_python_interpreter=/usr/bin/python3

测试连通性:

ansible all -i inventory.ini -m ping

五、常用运维模块(实战)

1. 执行命令

ansible web -m shell -a "uptime"

2. 安装软件

ansible web -m yum -a "name=nginx state=present"

3. 文件分发

ansible web -m copy -a "src=nginx.conf dest=/etc/nginx/nginx.conf"

4. 启动服务

ansible web -m service -a "name=nginx state=started enabled=yes"

六、Playbook(自动化核心)

示例:部署 Nginx

# deploy_nginx.yml
- hosts: web
  become: yes
  tasks:
    - name: Install nginx
      yum:
        name: nginx
        state: present

    - name: Copy config
      copy:
        src: files/nginx.conf
        dest: /etc/nginx/nginx.conf

    - name: Start nginx
      service:
        name: nginx
        state: started
        enabled: true

执行:

ansible-playbook -i inventory.ini deploy_nginx.yml

七、常见运维场景

1. 批量安全补丁

- hosts: all
  become: yes
  tasks:
    - yum:
        name: '*'
        state: latest

2. 系统巡检

ansible all -m shell -a "df -h; free -m; uptime"

3. 用户管理

- user:
    name: deploy
    groups: wheel
    append: yes

4. 日志清理

- find:
    path: /var/log
    age: 30d
    recurse: yes
  register: logs

- file:
    path: "{{ item.path }}"
    state: absent
  loop: "{{ logs.files }}"

八、Role(生产推荐结构)

ansible-galaxy init nginx

结构:

roles/nginx/
├── tasks/main.yml
├── handlers/main.yml
├── templates/nginx.conf.j2
├── vars/main.yml

Playbook 使用:

- hosts: web
  roles:
    - nginx

九、变量与分组管理

[web:vars]
env=prod
- debug:
    msg: "Environment is {{ env }}"

十、生产最佳实践

✅ 使用 SSH Key + sudo
✅ Playbook 幂等
✅ 重要操作前 --check
✅ 用 Git 管理 Ansible 代码
✅ 敏感信息用 Ansible Vault

ansible-vault encrypt vars/secret.yml

十一、学习路径建议

  1. 先写 Ad-Hoc 命令
  2. 再写简单 Playbook
  3. 拆成 Role
  4. 接入 CI / 定时任务(cron / Jenkins)

如果你愿意,我可以:

  • 给你一套真实服务器初始化 Playbook
  • 按 Web / DB / 微服务 场景定制
  • 或帮你把现有 shell 脚本转成 Ansible

你目前是个人服务器还是企业多台机器?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手