You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible Playbook中批量挂载服务器多块磁盘?

批量挂载多块磁盘的Ansible Playbook修改方案

核心思路是用变量列表统一管理所有待挂载的磁盘与对应挂载点,再通过Ansible的loop循环批量执行挂载流程,彻底告别逐个配置的重复工作。

修改后的完整Playbook示例

- name: 批量挂载多块服务器磁盘
  hosts: your_target_hosts
  become: yes
  # 统一定义所有要挂载的磁盘和挂载点,后续加磁盘直接追加条目即可
  vars:
    disk_mounts:
      - device: /dev/sdc
        mount_point: /mnt/disk1
      - device: /dev/sdd
        mount_point: /mnt/disk2
      - device: /dev/sde
        mount_point: /mnt/disk3
      # 比如要加/dev/sdf,直接在这里加一行:
      # - device: /dev/sdf
      #   mount_point: /mnt/disk4

  tasks:
    # 先检查磁盘是否存在,避免路径错误导致后续任务失败
    - name: 验证目标磁盘存在性
      stat:
        path: "{{ item.device }}"
      register: disk_check
      loop: "{{ disk_mounts }}"
      failed_when: not disk_check.stat.exists

    # 创建挂载点目录
    - name: 创建磁盘挂载点
      file:
        path: "{{ item.mount_point }}"
        state: directory
        mode: '0755'
      loop: "{{ disk_mounts }}"

    # 格式化磁盘(仅当磁盘未被格式化时执行,防止误删数据)
    - name: 格式化目标磁盘
      filesystem:
        fstype: ext4  # 可根据需求替换为xfs等其他文件系统
        dev: "{{ item.device }}"
        force: no
      loop: "{{ disk_mounts }}"

    # 挂载磁盘并写入fstab实现永久生效
    - name: 挂载磁盘并配置开机自动挂载
      mount:
        path: "{{ item.mount_point }}"
        src: "{{ item.device }}"
        fstype: ext4
        state: mounted  # mounted会同时完成挂载+写入fstab
      loop: "{{ disk_mounts }}"

关键细节说明

  1. 极简扩展:后续要新增磁盘时,只需要在disk_mounts变量列表里追加新的device和mount_point条目,完全不用修改任务代码。
  2. 安全防护:
    • 新增的磁盘存在性检查,避免因磁盘路径写错导致任务报错;
    • filesystem模块的force: no参数,会跳过已格式化的磁盘,防止误删除已有数据。
  3. 规律场景简化:如果你的磁盘和挂载点命名有严格规律(比如/dev/sdc对应/mnt/disk1,/dev/sdd对应/mnt/disk2),可以用loop结合序列生成来简化变量定义,示例如下:
- name: 批量挂载按规律命名的磁盘
  hosts: your_target_hosts
  become: yes
  tasks:
    - name: 自动匹配磁盘与挂载点
      mount:
        path: "/mnt/disk{{ item }}"
        src: "/dev/sd{{ ('c' | ord) + item | int -1 | chr }}"
        fstype: ext4
        state: mounted
      loop: "{{ range(1,4) | list }}"  # range(1,4)对应disk1-disk3,即sdc-sde

这种方式适合标准化部署的环境,但灵活性不如直接定义变量列表。

内容的提问来源于stack exchange,提问作者fanbondi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:33:25