Files
Deploy-Laboratory/ansible/playbooks/k3s-prepare-storage.yml
jack 8c43761962 feat: 按 doc_id 重组 ansible/files 与验证框架
- ansible/files 改为与文档 XX-YY 对齐的目录结构,更新相关 playbook 路径
- 新增 scripts/verify.sh 与 ansible/playbooks/verify/*.yml,移除单体 verify-matrix.yml
- 补充 docs/00-02 矩阵状态、00-05 验证框架与流程、00-04 环境与 ylc65 工作机说明
- 增加 k3s 存储准备、Longhorn、local-path 等 playbook 与辅助脚本

Made-with: Cursor
2026-03-26 07:01:14 +08:00

107 lines
4.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
# 可选在空白数据盘上创建单分区、ext4、fstab 并挂载到 k3s_data_dir默认 /storage
# 启用前在 group_vars/all.yml 设置 k3s_prepare_storage: true 与 k3s_data_disk_device如 /dev/vdb
# 会清空该磁盘上的数据。若 /storage 已是挂载点则跳过。
- name: Prepare data disk and mount to k3s_data_dir
hosts: k3s_nodes
become: true
tasks:
- name: Skip notice when storage prep disabled
ansible.builtin.debug:
msg: "k3s_prepare_storage is false — skipping (see group_vars/all.yml)"
when: not (k3s_prepare_storage | default(false) | bool)
- name: Prepare block storage for k3s_data_dir
when: k3s_prepare_storage | default(false) | bool
block:
- name: Require k3s_data_disk_device when k3s_prepare_storage is true
ansible.builtin.assert:
that:
- k3s_data_disk_device is defined
- (k3s_data_disk_device | string | length) > 0
fail_msg: "Set k3s_data_disk_device (e.g. /dev/vdb) in group_vars or host_vars"
- name: Verify k3s_data_disk_device is a block device
ansible.builtin.command: test -b {{ k3s_data_disk_device }}
changed_when: false
- name: Check whether k3s_data_dir is already a mountpoint
ansible.builtin.command: mountpoint -q {{ k3s_data_dir }}
register: mp_k3s
changed_when: false
failed_when: false
- name: Skip when k3s_data_dir already mounted
ansible.builtin.debug:
msg: "{{ k3s_data_dir }} already mounted — skipping partitioning on {{ inventory_hostname }}"
when: mp_k3s.rc == 0
- name: Install partitioning and filesystem tools
ansible.builtin.package:
name:
- parted
- e2fsprogs
state: present
when: mp_k3s.rc != 0
- name: Compute first partition path (nvme*n* -> p1, else 1)
ansible.builtin.set_fact:
k3s_data_partition: >-
{{ k3s_data_disk_device }}{{ 'p1' if (k3s_data_disk_device | regex_search('nvme[0-9]+n[0-9]+$')) else '1' }}
when: mp_k3s.rc != 0
- name: Create GPT and single ext4 partition
ansible.builtin.command: >-
parted -s {{ k3s_data_disk_device }} mklabel gpt mkpart primary ext4 0% 100%
args:
creates: "{{ k3s_data_partition }}"
when: mp_k3s.rc != 0
- name: Wait for partition node in /dev
ansible.builtin.wait_for:
path: "{{ k3s_data_partition }}"
state: present
timeout: 60
when: mp_k3s.rc != 0
- name: Detect existing filesystem on partition
ansible.builtin.command: blkid -s TYPE -o value {{ k3s_data_partition }}
register: fs_type
changed_when: false
failed_when: false
when: mp_k3s.rc != 0
- name: Create ext4 on partition
ansible.builtin.command: mkfs.ext4 -F {{ k3s_data_partition }}
when:
- mp_k3s.rc != 0
- (fs_type.stdout | default('') | trim | length) == 0
- name: Read UUID of partition
ansible.builtin.command: blkid -s UUID -o value {{ k3s_data_partition }}
register: blk_uuid
changed_when: false
when: mp_k3s.rc != 0
- name: Ensure mount directory exists
ansible.builtin.file:
path: "{{ k3s_data_dir }}"
state: directory
mode: "0755"
when: mp_k3s.rc != 0
- name: Add fstab entry for k3s_data_dir
ansible.builtin.lineinfile:
path: /etc/fstab
regexp: "^UUID={{ blk_uuid.stdout | trim }}\\s"
line: "UUID={{ blk_uuid.stdout | trim }} {{ k3s_data_dir }} ext4 defaults,nofail 0 2"
create: true
mode: "0644"
when: mp_k3s.rc != 0
- name: Mount all from fstab
ansible.builtin.command: mount -a
changed_when: true
when: mp_k3s.rc != 0