"Chúng tôi không phải lập trình viên, chúng tôi là hệ thống"
Thời đại của tôi đã thay đổi như thế nào, tệ hơn: một người xám như tôi được kỳ vọng sẽ trở thành một lập trình viên giỏi hơn các lập trình viên chuyên nghiệp, nếu không sẽ không bao giờ có thể vượt qua cho một quản trị viên hệ thống .
Bây giờ, chúng tôi có "quản trị viên hệ thống", về cơ bản là người dùng máy tính để bàn Windows, những người đã chuyển đổi sang Linux và không thể lập trình, và không tìm thấy bất cứ điều gì sai với điều đó.
Con voi trong phòng là lý do tại sao quản lý chịu đựng một thái độ phá hoại như vậy. Phá hoại cho ai hay cái gì? Để kinh doanh và cơ sở hạ tầng.
Quay lại chủ đề Puppet [, CFEngine, Chef]: ngay khi người ta đặt ra một giải pháp như vậy, người ta sẽ thua. Ai cũng thua. Tại sao? Bởi vì bất cứ ai nảy ra ý tưởng đều không có khả năng thiết kế quản lý cấu hình được đóng gói dưới dạng các gói hệ điều hành đẹp, sạch, Kickstart [, JumpStart, Automated Installer, AutoYaST, Ignite-UX, NIM]. Khi bạn phải sử dụng một công cụ hack tự động như Puppet (hoặc Chef hoặc CFEngine), điều đó có nghĩa là bạn thiếu thiết kế và thực hiện một quy trình, theo thiết kế đó, sẽ thực thi hoàn toàn nguyên sơ và tắt đèn hệ thống được quản lý tự động và hoàn toàn không tương tác.
Một điểm quan trọng là, nếu bạn cần phải có Múa rối hoặc một số giải pháp như vậy để sửa một ai đó hack hệ thống hoặc cấu hình ứng dụng bằng tay, mà cũng đi trở lại không có kinh nghiệm để thiết kế một quá trình, và trong quá trình đó một khuôn khổ mà cấu hình được đóng gói thành các thành phần riêng biệt. Trong thực tế, bất cứ ai thực hiện Puppet và tương tự, không có khái niệm về chủ sở hữu thành phần, bản phát hành, quản lý cấu hình, Mô hình trưởng thành khả năng. Điều này đang nhanh chóng phát triển thành một vấn đề rất nghiêm trọng trong ngành.
Làm việc với Puppet cũng giúp tôi học được Ruby, thứ đã thay thế Bash làm ngôn ngữ công cụ hệ thống mặc định của tôi. "
Tại sao Ruby cần thiết, khi quản lý cấu hình toàn diện, toàn diện có thể được gói gọn trong các phần cài đặt sẵn, postinstall, preremove và postremove của các gói hệ điều hành, chỉ bằng cách sử dụng các chương trình shell Bourne, AWK và sed? Rằng ai đó sẽ đi vào thời gian học một ngôn ngữ bí truyền của Ruby, và một phương ngữ trong bối cảnh của Puppet, là hoàn toàn không cần thiết. Vấn đề quản lý cấu hình có thể dễ dàng giải quyết (và để dí dỏm, đã được giải quyết) với các chương trình shell và AWK, và một chút sed (1) ở đây và ở đó như một chất keo.
Thật là một cảm giác tuyệt vời khi thấy bảng kê khai rối của bạn cấu hình toàn bộ máy hoặc dịch vụ mới từ đầu.
Thật tuyệt vời khi thấy nó được thực hiện bởi Kickstart, AutoYaST hoặc JumpStart, không có một dòng mã nào và có thể truy vấn hệ điều hành bằng cách sử dụng các công cụ tích hợp, mà không cần bất kỳ phần mềm bí mật hoặc phần mềm bổ sung nào , không cần máy chủ-máy khách kiến trúc được yêu cầu (SSH là tốt hơn, tốt hơn nhiều) và thấy hệ điều hành của bạn nhận thức được từng thay đổi được thực hiện cho nó.
5. Mã số từ dữ liệu. Đây là một trong những khái niệm khó học hơn. Các giá trị mã hóa cứng như Giám sát máy chủ vào mã mô-đun của bạn là xấu. Đưa chúng vào kho lưu trữ dữ liệu (db, yaml (Hiera sử dụng mặc định này), csv, bất cứ điều gì) mà các mô-đun của bạn có thể tiêu thụ là tốt. Một ví dụ là một ứng dụng web sử dụng Mysql. Điều này cho phép là khả năng đẩy mã và dữ liệu riêng biệt. Điều này làm cho quá trình phát triển của bạn đơn giản hơn.
... Hoặc bạn chỉ có thể tạo mẫu các tệp cấu hình của mình bằng các biến shell, thậm chí backquote (ví dụ ls -1 ...
) và viết tập lệnh shell sử dụng AWK để gọi eval (1) và mở rộng tất cả các biến trong mẫu, từ đó tận dụng chính xác mạnh mẽ như vậy trình phân tích cú pháp mà shell đã tích hợp sẵn. Tại sao làm cho nó phức tạp, khi nó có thể thực sự, thực sự đơn giản? Bạn sẽ lưu trữ các giá trị cấu hình ở đâu? Tại sao, bất cứ nơi nào bạn muốn, chẳng hạn như các tệp pkginfo (4) hoặc cơ sở dữ liệu như Oracle hoặc khá nhiều ở mọi nơi . Không cần các giải pháp ultracomplex. Thư viện mà tôi đề cập ở trên có thể chỉ đơn giản là có nguồn gốc từ các phần cài đặt trước hoặc cài đặt sau trong các gói hệ điều hành, do đó loại bỏ trùng lặp và tận dụng một đoạn mã trung tâm ...
Nhưng trên hết, tôi thấy rằng trích dẫn trên là một ví dụ về thế hệ quản trị viên hệ thống tiếp theo cần dạy kèm không phải bởi quản trị viên hệ thống, mà bởi các kỹ sư hệ thống . Tìm cho mình một chú chó xám và đăng nhập như một người học việc.