跳转到主要内容

预置剧本

使用预置 Ansible 剧本部署或移除 Silo 对象存储集群。
使用预置 Ansible 剧本部署或移除 Silo 对象存储集群。

MINIO 模块提供两个内置剧本:


minio.yml

minio.ymlhosts: all 运行,但会在预任务阶段跳过没有定义 minio_cluster 的主机。进入角色后还会校验:

  • minio_cluster 已定义且非空
  • minio_seq 已定义且为非负整数
  • minio_type 必须等于 silo

因此,minio_cluster 是模块成员门控,而 minio_seqminio_type 的错误会让身份校验明确失败。不要在 all.vars 中定义 minio_cluster

主要任务标签如下:

  • minio-id:校验身份,并按 minio_cluster 从整个清单计算实际成员、节点名与卷参数
  • minio_install:创建 minio OS 用户,安装 Silo 与 mcli,准备数据目录
    • minio_os_user
    • minio_pkg
    • minio_dir
  • minio_config:渲染 /etc/default/silo/etc/systemd/system/silo.service、证书和 DNS
    • minio_conf
    • minio_cert
    • minio_dns
  • minio_launch:启动或重启 silo.service
  • minio_register:写入 VictoriaMetrics FileSD 目标
  • minio_provision:由集群首个成员执行一次 mcli 别名、存储桶与用户置备

重新执行 minio.yml 可能重启正在运行的对象存储服务,但不会主动重建数据。生产环境应按集群故障预算安排执行窗口。


minio-rm.yml

minio-rm.yml 使用相同的 minio_cluster 成员门控和身份校验,并执行:

  • minio_safeguard:防误删检查,默认 false
  • minio_pause:暂停 3 秒,允许 Ctrl+C 中止
  • minio_deregister:删除 VictoriaMetrics 目标与 DNS 记录
  • minio_svc:停止并禁用 Silo 服务
  • minio_data:按 minio_rm_data 删除数据与配置
  • minio_pkg:按 minio_rm_pkg 卸载 Silo 与 mcli
危险操作

minio_rm_data 默认为 true。完整执行移除剧本会删除展开后的所有 minio_data 目录;运行前必须核对 minio_clusterminio_seqminio_type: silo 与磁盘挂载路径。只想退役服务并保留数据时,请显式设置 -e minio_rm_data=false

部署与移除角色都默认 minio_type: silo,其他取值会被拒绝。下面的删除示例仍显式传入该值,作为复核软件包、服务、证书目录和数据路径的一部分;它不是额外的交互确认门。


命令速查

./minio.yml -l <group>                         # 部署该限域内具有 minio_cluster 身份的成员
./minio.yml -l minio -t minio_install         # 安装 Silo 与 mcli,准备目录
./minio.yml -l minio -t minio_config          # 重新渲染配置、证书和 DNS
./minio.yml -l minio -t minio_launch          # 重启 Silo 服务
./minio.yml -l minio -t minio_register        # 刷新监控目标
./minio.yml -l minio -t minio_provision       # 重新置备别名、存储桶和用户

./minio-rm.yml -l minio -e minio_type=silo                         # 移除 Silo 服务、配置与数据
./minio-rm.yml -l minio -e minio_type=silo -e minio_rm_data=false  # 移除服务但保留数据和配置
./minio-rm.yml -l minio -e minio_type=silo -e minio_rm_pkg=true    # 同时卸载 Silo 与 mcli

如果配置组名与 minio_cluster 不同,-l 使用的是 Ansible 分组或主机模式,而不是逻辑集群名;请用能覆盖完整目标成员的限域表达式。


保护机制

生产集群建议在集群变量中启用防误删保险:

minio_safeguard: true

确需销毁时,可在充分核对目标和备份后显式覆盖:

./minio-rm.yml -l minio -e minio_type=silo -e minio_safeguard=false

执行演示

asciicast