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-commonbản Squid 19.x (Ceph chỉ build gói el9 cho Squid), nên không có sẵn lệnhcephđú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ệnhceph— đả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.confnế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 monitoringceph_orch.pyqua 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 psthấy container tên*-crash-<hostname>). - [ ] Trên host tồn tại
/etc/ceph/ceph.confvà/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)
- File copy vào container KHÔNG bền vững.
podman cpghi 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áoceph_orch_errorvào alerting để phát hiện sớm. - 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.
- 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ùngceph -n client.readonly -k <keyring>trong wrapper. Giảm đáng kể rủi ro nếu container/host bị xâm nhập. - Giải pháp gốc rễ: nâng OS lên AlmaLinux 9 để cài được
ceph-common19.x native trên host — runbook này chỉ là giải pháp tình thế cho các node còn EL8. - 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.