Cơ sở hạ tầng dưới dạng mã cho chúng tôi sử dụng các công cụ tự động hóa các bản dựng của bạn. Tuyệt quá. Các công cụ như ansible , đầu bếp , con rối , ngăn xếp muối và những thứ khác thúc đẩy chúng ta hướng tới việc viết cơ sở hạ tầng trông như thế nào, trong khi giải quyết sự khác biệt.
Trong Salt Stack các bit đó được gọi là trạng thái . Nếu trạng thái không phù hợp với thực tế, công cụ sẽ giải quyết nó cho chúng tôi. Nói cách khác - chúng tôi đang viết một bài kiểm tra cho cơ sở hạ tầng của chúng tôi và nếu thử nghiệm thất bại, công cụ sẽ tự sửa nó. Ít nhất đó là ý tưởng.
XP dạy chúng ta sử dụng TDD và câu hỏi là nó có áp dụng được với cơ sở hạ tầng không? Các dụng cụ cho thấy nó là.
Tôi có thể tưởng tượng vài loại bài kiểm tra có thể rất hữu ích.
Chúng tôi viết các bài kiểm tra khói đi kèm với dịch vụ đã triển khai để đảm bảo rằng dịch vụ được triển khai từ đầu đến cuối hoạt động và chạy như mong đợi. Đây sẽ là một lệnh gọi API hoặc / và kiểm tra systemctl để đảm bảo những gì chúng ta vừa triển khai hoạt động. Rất nhiều chức năng này có thể được đề cập trong cùng một trạng thái vì các công cụ như ansible có các trạng thái để đảm bảo dịch vụ đang chạy.
Có phân tử dự án cho phép chạy các vai trò riêng lẻ (như gọi là trạng thái của nó) chống lại docker hoặc một công cụ ảo hóa tạm thời khác. Điều này buộc phải tách rời các vai trò và cho phép thực hiện chúng một cách tách biệt khỏi vở kịch trong khi làm việc với chúng. Các thử nghiệm chủ yếu cho phép chế nhạo các biến mà vai trò được cho là hoạt động. Các ví dụ khác có vẻ như là một bản sao của công cụ ansible (khẳng định một tệp thuộc về người dùng ...).
Radar công nghệ Th thinkWorks ngay bây giờ ca ngợi các công cụ như Inspec , serverpec hoặc goss để xác nhận rằng máy chủ đáp ứng thông số kỹ thuật. Nhưng chúng tôi đang viết một thông số, phải không?
Vì vậy, có một điểm trong thử nghiệm cơ sở hạ tầng nếu chúng ta đang mô tả cơ sở hạ tầng ở các trạng thái / vai trò? Tôi có thể nghi ngờ điều này trở nên bắt buộc hơn trong các tổ chức lớn hơn, nơi một nhóm cung cấp thông số kỹ thuật và các nhóm khác theo sau, hoặc nếu có một nhóm vai trò lớn có thể bạn muốn chạy một tập hợp con trong số đó và nhận được lợi ích tốc độ từ các bài kiểm tra? Tôi đang đấu tranh để xem tại sao bạn sẽ viết một bài kiểm tra nếu bạn có thể có một vai trò / trạng thái cho cùng một câu hỏi trong đầu.
goss
. Vì vậy, ví dụ, RPM được cài đặt (ansible) và sau đó được kiểm tra nếu tệp mặc định dự kiến được đặt đúng chỗ, hoặc dịch vụ đang chạy và lắng nghe một cổng cụ thể. Tôi không muốn tự động khắc phục sự cố đó, nhưng được thông báo và dừng tiến trình. Chắc chắn Ansible cũng có thể kiểm tra hệ thống cho bạn, bạn chỉ cần nói rõ về nó, nhưng trong trường hợp của chúng tôi, chúng tôi sử dụnggoss
để kiểm tra hành vi của dịch vụ trong một container