Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

RUNBOOK — Copy admin keyring vào crash container để chạy lệnh ceph đúng version trên host EL8

Thông tin Nội dung
Mã runbook CEPH-OPS-001
Phạm vi áp dụng Các node Ceph (mon/mgr) chạy AlmaLinux 8, cluster Ceph Squid 19.2.3 deploy bằng cephadm
Đối tượng thực hiện Kỹ sư vận hành hệ thống lưu trữ (quyền root trên node)
Thời gian thực hiện dự kiến 5–10 phút / node
Mức độ rủi ro Trung bình (thao tác với admin keyring, không tác động dịch vụ)
Ảnh hưởng dịch vụ Không — chỉ đọc và copy file, không restart daemon nào

1. Mục đích

  • Host chạy AlmaLinux 8 (EL8) không cài được gói ceph-common bản Squid 19.x (Ceph chỉ build gói el9 cho Squid), nên không có sẵn lệnh ceph đúng version trên host.
  • Tận dụng crash container (image quay.io/ceph/ceph:v19.2.3) đang chạy sẵn trên node để thực thi lệnh ceph — đảm bảo client và cluster cùng version 19.2.3, không phải cài thêm gói nào lên host.
  • Copy ceph.client.admin.keyring (và ceph.conf nếu thiếu) từ host vào container để các lệnh cần quyền (ceph orch ps, ceph -s, ...) chạy được, phục vụ script monitoring ceph_orch.py qua wrapper /usr/local/bin/ceph-in-container.

2. Điều kiện tiên quyết

  • [ ] Có quyền root trên node cần thao tác.
  • [ ] Crash container đang chạy (podman ps thấy container tên *-crash-<hostname>).
  • [ ] Trên host tồn tại /etc/ceph/ceph.conf/etc/ceph/ceph.client.admin.keyring.
  • [ ] Đã thông báo/ghi ticket theo quy trình thay đổi (nếu môi trường production yêu cầu).

3. Các bước thực hiện

Thực hiện tuần tự. Nếu bất kỳ bước kiểm tra nào cho kết quả khác kỳ vọng, dừng lại và xem mục Xử lý sự cố (mục 5).

Bước 0 — Xác định crash container

CT=$(podman ps --format '{{.Names}}' | grep -m1 -- '-crash-')
echo $CT

Kỳ vọng: in ra tên dạng ceph-<fsid>-crash-<HOSTNAME>. Nếu rỗng → crash container không chạy, dừng lại.

Bước 1 — Kiểm tra lệnh ceph trong container

podman exec $CT ceph --version

Kỳ vọng: ceph version 19.2.3 (...) squid (stable).

podman exec $CT ceph -s
  • Nếu chạy được và quyền hiện tại đã đủ nhu cầu → có thể kết thúc runbook tại đây.
  • Nếu báo lỗi auth/permission → tiếp tục Bước 2.

Bước 2 — Kiểm tra key đã tồn tại trong container chưa

podman exec $CT ls -l /etc/ceph/
podman exec $CT test -f /etc/ceph/ceph.client.admin.keyring && echo "The key already exists" || echo "The key does not exist"
  • The key already exists → không copy nữa, nhảy sang Bước 6 verify.
  • The key does not exist → tiếp tục Bước 3.

Bước 3 — Kiểm tra key trên host

ls -l /etc/ceph/ceph.client.admin.keyring
grep -q "\[client.admin\]" /etc/ceph/ceph.client.admin.keyring && echo "Valid key" || echo "Invalid key"

Kỳ vọng: file tồn tại và in Valid key. Không hợp lệ → lấy lại key từ node admin trước khi tiếp tục.

Bước 4 — Copy key và ceph.conf nếu thiếu vào container

podman cp /etc/ceph/ceph.client.admin.keyring $CT:/etc/ceph/ceph.client.admin.keyring

Nếu Bước 2 cho thấy container chưa có ceph.conf:

podman cp /etc/ceph/ceph.conf $CT:/etc/ceph/ceph.conf

Bước 5 — Siết quyền file trong container

podman exec $CT chmod 600 /etc/ceph/ceph.client.admin.keyring
podman exec $CT chown root:root /etc/ceph/ceph.client.admin.keyring

Bước 6 — Verify

podman exec $CT ceph -s
podman exec $CT ceph orch ps --format json | head -5

Kỳ vọng: ceph -s in trạng thái cluster, orch ps trả JSON. Kiểm tra thêm wrapper monitoring:

/usr/local/bin/ceph-in-container -s

Chạy được → hoàn tất. Ghi nhận vào ticket/nhật ký vận hành.

4. Rollback

Thao tác không tác động dịch vụ. Nếu cần gỡ key khỏi container:

podman exec $CT rm -f /etc/ceph/ceph.client.admin.keyring

5. Xử lý sự cố nhanh

Hiện tượng Nguyên nhân khả dĩ Hướng xử lý
Bước 0 không tìm thấy container Crash daemon chưa deploy hoặc đã stop systemctl list-units 'ceph*' kiểm tra; deploy lại crash daemon qua ceph orch từ node admin
ceph -s treo lâu rồi timeout Container không kết nối được mon (thiếu ceph.conf hoặc network) Kiểm tra ceph.conf trong container, copy lại ở Bước 4
Permission denied sau khi copy key Key host bị sai/cũ, hoặc copy nhầm đường dẫn Verify lại Bước 3; so key với node admin
the input device is not a TTY Dùng -it trong script/cron Bỏ cờ -it khi exec từ script
Sau upgrade/redeploy monitoring lỗi quyền trở lại Container bị recreate, mất file đã copy Chạy lại Bước 4–5 (xem Lưu ý 1)

6. Lưu ý vận hành (quan trọng)

  1. File copy vào container KHÔNG bền vững. podman cp ghi vào layer của container, không phải volume mount. Container bị recreate (redeploy daemon, ceph orch upgrade, host reboot có recreate) sẽ mất key → monitoring sẽ lỗi quyền. Khi đó chỉ cần chạy lại Bước 4–5. Nên đưa cảnh báo ceph_orch_error vào alerting để phát hiện sớm.
  2. Rủi ro bảo mật: đây là admin keyring — ai exec được vào crash container là có toàn quyền cluster. Đảm bảo chỉ root trên host dùng được podman; không cấp sudo podman cho user thường trên các node này.
  3. Khuyến nghị dài hạn: thay admin key bằng key quyền tối thiểu, ví dụ: bash ceph auth get-or-create client.readonly mon 'allow r' mgr 'allow r' osd 'allow r' mds 'allow r' rồi dùng ceph -n client.readonly -k <keyring> trong wrapper. Giảm đáng kể rủi ro nếu container/host bị xâm nhập.
  4. Giải pháp gốc rễ: nâng OS lên AlmaLinux 9 để cài được ceph-common 19.x native trên host — runbook này chỉ là giải pháp tình thế cho các node còn EL8.
  5. Khi chạy nhiều node, có thể tự động hóa toàn bộ quy trình bằng Ansible (task tạo wrapper + copy key idempotent) thay vì làm tay từng node.

Cập nhật lần cuối: 2026-07-23. Người soạn: Team Storage Ops.