Ansible批量安装软件

半兽人 发表于: 2025-10-14   最后更新时间: 2025-10-14 15:39:00  
{{totalSubscript}} 订阅, 90 游览

1. 批量安装软件

场景:我要在所有 Web 服务器上装 nginx

Playbook:

- hosts: webservers       # 作用的主机组(定义在 inventory 里)
  become: yes             # 需要 sudo 提权
  tasks:
    - name: 安装 nginx
      apt:                # apt 是 Ubuntu/Debian 的包管理模块
        name: nginx       # 软件名字
        state: present    # 确保 nginx 已安装(不存在就装,存在就不动)

执行:

ansible-playbook install_nginx.yml

结果:
Ansible 登录 webservers 里的每台机器 → 检查 nginx → 如果没装就安装,有就跳过 → 保证所有机器状态一致。

2. 批量修改配置文件

场景:我要在所有服务器的 /etc/motd 文件里写一句“禁止随意登录”。

Playbook:

- hosts: all
  become: yes
  tasks:
    - name: 设置登录提示信息
      copy:                     # 复制文件/写入内容的模块
        content: "禁止随意登录!\n"
        dest: /etc/motd

执行:

ansible-playbook set_motd.yml

结果:
所有服务器的 /etc/motd 文件内容被替换为“禁止随意登录!”。以后你 SSH 登录时,会看到这句话。

3. 批量执行命令

场景:我要查看所有服务器的磁盘空间。

命令行方式(不用写 playbook):

ansible all -m shell -a "df -h"

结果:
所有服务器都会执行 df -h,Ansible 会把结果汇总打印出来,你不用一台台登录去看。

4. 部署应用(有顺序)

场景:我要部署一个网站,步骤是:

  1. 安装 nginx
  2. 上传配置文件
  3. 启动 nginx

Playbook:

- hosts: webservers
  become: yes
  tasks:
    - name: 安装 nginx
      apt:
        name: nginx
        state: present

    - name: 上传 nginx 配置文件
      copy:
        src: ./nginx.conf
        dest: /etc/nginx/nginx.conf

    - name: 重启 nginx
      service:
        name: nginx
        state: restarted

执行:

ansible-playbook deploy_website.yml

结果:
Ansible 会自动按顺序跑完三步 → 部署完成。

5. 用户管理

场景:我要在所有服务器上创建一个叫 devuser 的账号。

Playbook:

- hosts: all
  become: yes
  tasks:
    - name: 创建用户 devuser
      user:
        name: devuser
        shell: /bin/bash
        state: present

执行:

ansible-playbook add_user.yml

结果:
所有服务器都会多一个 devuser 用户。

总结

Ansible 的核心思路是:

  • 你写 Playbook(YAML 文件) → 描述“最终想要的状态”;
  • Ansible 会 自动执行任务 → 把所有机器调到这个状态;
  • 不需要你一台台手工操作。
更新于 2025-10-14

查看Ansible更多相关的文章或提一个关于Ansible的问题,也可以与我们一起分享文章