Rà soát Terraform và Ansible bằng AI trước khi chạy thay đổi hạ tầng
Dùng AI nội bộ làm lớp đọc đầu tiên cho Terraform plan và Ansible check/diff: tóm tắt thay đổi, nêu điểm cần xác minh và chuẩn hóa câu hỏi review. Quyền quyết định và thực thi vẫn thuộc về người duyệt.
Một thay đổi nhỏ trong Terraform hoặc Ansible có thể tạo ra tác động khó đọc hết trong một khối output dài. Vì vậy, trước khi chạy thay đổi thật, đội hạ tầng cần một bước biến plan hoặc diff thành các câu hỏi review rõ ràng.
AI chạy trong mạng nội bộ có thể hỗ trợ bước này: đọc đầu vào đã được kiểm soát, tóm tắt thay đổi và chỉ ra phần cần người vận hành xác minh. AI không thay thế cơ chế review, không tự phê duyệt và không được tự chạy thay đổi.
Đặt AI đúng chỗ trong luồng thay đổi
terraform plan tạo một execution plan để xem trước các thay đổi Terraform đề xuất cho hạ tầng. Theo mặc định, Terraform sẽ:
Đọc trạng thái hiện tại của các đối tượng từ xa để cập nhật state.
So sánh cấu hình hiện tại với state trước đó.
Đề xuất các hành động để đưa đối tượng từ xa về đúng cấu hình.
Lệnh terraform plan không tự thực hiện những thay đổi được đề xuất.
Với Ansible, --check chạy playbook theo chế độ kiểm tra mà không sửa hệ thống từ xa đối với các module hỗ trợ chế độ này. --diff hiển thị thông tin trước/sau đối với các module có hỗ trợ diff. Có thể kết hợp cả hai để xem chi tiết hơn.
Một luồng review có thể tổ chức như sau:
text
Terraform plan / Ansible check + diff
↓
Kiểm soát và lọc đầu vào theo quy định nội bộ
↓
AI nội bộ phân tích theo mẫu review
↓
Reviewer hạ tầng xác minh kết quả
↓
Mới quyết định có chạy thay đổi thật hay không
Mục tiêu của AI không phải là kết luận “an toàn để chạy”, mà là chuẩn bị danh sách các điểm cần người chịu trách nhiệm xác nhận.
Bước 1: Tạo đầu vào từ Terraform
Tại thư mục chứa root module Terraform, chạy:
bash
terraform plan
Nếu không dùng -out=FILE, Terraform tạo một speculative plan: mô tả tác động dự kiến nhưng không nhằm để thực thi trực tiếp. Cách này phù hợp cho vòng review trước khi gửi thay đổi sang code review hoặc ticket thay đổi.
Trong tự động hóa, có thể lưu plan ra tệp:
bash
terraform plan -out=FILE
Plan đã lưu có thể được thực thi sau đó bằng cách truyền tệp plan cho terraform apply.
Tuy nhiên, một speculative plan cũ có thể không còn phản ánh chính xác tác động cuối cùng nếu hệ thống đích đã thay đổi trong thời gian chờ. Trước khi áp dụng, cần kiểm tra lại plan cuối cùng để xác nhận nó vẫn khớp với ý định thay đổi.
Bước 2: Tạo đầu vào từ Ansible
Chạy kiểm tra playbook:
bash
ansible-playbook foo.yml --check
Để xem phần chênh lệch trước/sau ở các module hỗ trợ diff, dùng:
bash
ansible-playbook foo.yml --check --diff --limit foo.example.com
Tài liệu Ansible lưu ý diff có thể tạo output lớn, nên việc giới hạn kiểm tra vào một host là cách phù hợp khi cần xem kỹ thay đổi.
Cũng cần hiểu rõ giới hạn của --check:
Module không hỗ trợ check mode có thể không báo gì và không làm gì.
Các task có điều kiện dựa trên biến register từ task trước có thể không có output như khi chạy thật.
Một task đặt checkmode: false có thể chạy ở chế độ bình thường ngay cả khi playbook được gọi với --check.
Vì vậy, kết quả “không thấy thay đổi” trong check mode không tự động đồng nghĩa rằng thay đổi thật sẽ không có tác động.
Bước 3: Dùng mẫu prompt có cấu trúc
Thay vì yêu cầu AI “kiểm tra giúp plan này có an toàn không”, hãy yêu cầu nó lập biên bản review theo một mẫu cố định.
text
Bạn là trợ lý rà soát thay đổi hạ tầng nội bộ.
Chỉ phân tích dữ liệu được cung cấp. Không suy đoán tài nguyên,
quyền truy cập, môi trường hoặc quy trình không xuất hiện trong đầu vào.
Nhiệm vụ:
Tóm tắt các thay đổi được thể hiện trong đầu vào.
Liệt kê tài nguyên, host hoặc thành phần được nêu trong đầu vào.
Chỉ ra phần thiếu thông tin hoặc cần người duyệt xác minh.
Đánh dấu nội dung có thể là dữ liệu nhạy cảm; không lặp lại giá trị đó.
Ghi rõ có hay không thông tin rollback trong đầu vào.
Kết thúc bằng các câu hỏi bắt buộc cho người duyệt.
Định dạng:
Tóm tắt thay đổi
Phạm vi cần xác minh
Điểm cần làm rõ
Dữ liệu nhạy cảm cần xử lý
Rollback trong đầu vào
Câu hỏi cho người duyệt
Đầu vào:
<terraformplanhoặcansiblecheckdiffđãđượckiểmsoát>
Có thể bổ sung ngữ cảnh vận hành tối thiểu để reviewer dễ đối chiếu:
text
Bối cảnh thay đổi:
Môi trường: <environment>
Mục đích ticket: <changepurpose>
Cửa sổ thực hiện: <maintenancewindow>
Người phụ trách rollback: <owner>
Điều kiện dừng: <stopcondition>
AI chỉ nên coi các trường này là dữ liệu mô tả do người dùng cung cấp, không tự suy ra thông tin còn thiếu.
Bước 4: Đọc kết quả AI như một biên bản nháp
Với Terraform, bắt đầu từ:
bash
terraform plan
Sau khi kiểm soát đầu vào theo quy định nội bộ, đưa output vào mẫu review. Một kết quả hữu ích nên giúp người duyệt trả lời các câu hỏi như:
Plan đang đề xuất thay đổi nào?
Những tài nguyên nào xuất hiện trong plan?
Có phần nào không đủ thông tin để xác nhận ý định thay đổi?
Có mô tả rollback trong đầu vào hay chưa?
Trước khi apply, cần xác nhận lại điều gì?
Với Ansible, dùng:
bash
ansible-playbook foo.yml --check --diff --limit foo.example.com
Nếu playbook có điều kiện phụ thuộc vào biến register, hãy đánh dấu rõ đây là giới hạn của check mode. Reviewer cần quyết định cách kiểm tra bổ sung phù hợp với playbook và môi trường của mình.
Bảo vệ dữ liệu khi dùng diff
Tài liệu Ansible cảnh báo --diff có thể làm lộ thông tin nhạy cảm. Với task không nên hiển thị chênh lệch nội dung, có thể tắt diff riêng cho task đó:
yaml
tasks:
name: Không hiển thị diff khi file thay đổi
ansible.builtin.template:
src: secret.conf.j2
dest: /etc/secret.conf
owner: root
group: root
mode: '0600'
diff: false
Đây là một điểm cần đưa vào quy ước vận hành: xác định trước task nào không nên xuất diff, rồi kiểm soát đầu vào trước khi chuyển cho bất kỳ hệ thống phân tích nào.
Checklist trước khi phê duyệt
[ ] Terraform plan cuối cùng đã được kiểm tra lại sát thời điểm áp dụng.
[ ] Với Ansible, đã chạy --check; khi phù hợp đã dùng thêm --diff.
[ ] Khi cần đọc kỹ diff, phạm vi đã được giới hạn theo host hoặc phạm vi phù hợp.
[ ] Đầu vào cho AI đã được kiểm soát theo quy định xử lý dữ liệu của tổ chức.
[ ] Reviewer đã đối chiếu thay đổi với ticket và phạm vi được phép.
[ ] Các giới hạn của Ansible check mode đã được xem xét.
[ ] Có người chịu trách nhiệm quyết định chạy thay đổi và phương án xử lý khi cần.
[ ] AI không có quyền tự chạy terraform apply hoặc playbook thật.
AI có ích nhất khi biến mỗi plan và diff thành một vòng review nhất quán. Nhưng quyết định cuối cùng vẫn phải do người hiểu topology mạng, workload, trạng thái thực tế của hệ thống và phạm vi thay đổi đưa ra.