温馨提示×

温馨提示×

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

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

怎样用Ansible做自动化

发布时间:2026-09-01 19:54:43 来源:亿速云 阅读:92 作者:小樊 栏目:系统运维

下面我用从入门到实践的方式,给你讲清楚 怎样用 Ansible 做自动化,包含概念、结构、示例和常见场景。


一、Ansible 是什么?

Ansible 是一个基于 SSH 的自动化运维工具,用来:

  • 批量管理服务器
  • 自动部署应用
  • 配置系统环境
  • 执行运维任务(无需写客户端 agent)

特点:

  • ✅ 无 agent(只靠 SSH)
  • ✅ 使用 YAML 描述任务
  • ✅ 易读、易维护
  • ✅ 适合 DevOPS / SRE

二、Ansible 核心概念

概念 说明
Control Node 运行 Ansible 的机器
Managed Node 被管理的服务器
Inventory 主机清单(IP / 分组)
Playbook 自动化任务脚本(YAML)
Task 一个具体操作(如安装软件)
Module Ansible 提供的功能单元

三、安装 Ansible

CentOS / Rocky

yum install -y epel-release
yum install -y ansible

Ubuntu

apt update
apt install -y ansible

验证

ansible --version

四、配置主机清单(Inventory)

示例:hosts.ini

[web]
192.168.1.10
192.168.1.11

[db]
192.168.1.20

[all:vars]
ansible_user=root
ansible_ssh_private_key_file=~/.ssh/id_rsa

测试连接:

ansible all -i hosts.ini -m ping

五、第一个 Playbook(自动化脚本)

示例:安装 Nginx

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

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

运行:

ansible-playbook -i hosts.ini deploy_nginx.yaml

六、常见自动化场景

1️⃣ 批量执行命令

ansible web -i hosts.ini -m shell -a "uptime"

2️⃣ 文件分发

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

3️⃣ 用户管理

- name: Create user
  user:
    name: deploy
    groups: wheel
    state: present

4️⃣ 条件判断

- name: Install on CentOS
  yum:
    name: httpd
  when: ansible_os_family == "RedHat"

5️⃣ 循环

- name: Install packages
  yum:
    name: "{{ item }}"
    state: present
  loop:
    - vim
    - wget
    - git

七、变量与安全(推荐做法)

group_vars/web.yaml

nginx_port: 80

使用变量

- name: Set port
  lineinfile:
    path: /etc/nginx/nginx.conf
    regexp: 'listen'
    line: "listen {{ nginx_port }};"

敏感信息

ansible-vault create secret.yaml

八、目录结构(推荐)

ansible/
├── hosts.ini
├── playbooks/
│   └── deploy_web.yaml
├── group_vars/
│   └── web.yaml
└── roles/

九、Roles(进阶必学)

ansible-galaxy init nginx

结构:

roles/nginx/
├── tasks/main.yaml
├── handlers/main.yaml
├── templates/
├── vars/main.yaml

调用:

- hosts: web
  roles:
    - nginx

十、典型自动化流程

✅ 初始化服务器
✅ 安装基础软件
✅ 配置防火墙
✅ 部署应用
✅ 启动服务
✅ 健康检查


十一、适合用 Ansible 做的事

  • 服务器初始化
  • 应用部署
  • 配置管理
  • 批量运维
  • CI/CD 辅助

❌ 不适合:

  • 高并发实时任务
  • 复杂编排(可用 Kubernetes)

十二、学习路线建议

  1. 会用 ansible 命令
  2. 写简单 Playbook
  3. 学变量 / 条件 / 循环
  4. 用 Roles
  5. 结合 Git + CI

如果你愿意,我可以:

  • ✅ 给你一个 完整实战示例
  • ✅ 帮你写 某个系统的 Ansible 脚本
  • ✅ 对比 Ansible / Shell / Terraform

你主要想用 Ansible 做什么?

向AI问一下细节

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

AI