Tôi không làm quản trị hệ thống thủ công nữa. Tôi xem cơ sở hạ tầng của mình như một thực thể có thể lập trình và xử lý nó như vậy, bằng cách định cấu hình hệ thống bằng các công cụ tự động hóa quản lý cấu hình, bảo trì nút EC2, v.v. Các công cụ trong hộp công cụ của tôi:
- Ruby (ngôn ngữ kịch bản / công cụ yêu thích của tôi)
- Git (kiểm soát phiên bản)
- Đầu bếp của Opscode (viết bằng Ruby) (1)
- Capistrano (bảo trì hàng loạt ad hoc)
- Các công cụ API EC2 của Amazon để bảo trì ví dụ và hình ảnh.
- Đá quý AWS của Rightscale (ràng buộc Ruby cho EC2)
(1) - Tiết lộ, tôi làm việc cho Opscode. Các công cụ khác lấp đầy không gian này như Con rối của phòng thí nghiệm.
Tôi thực hiện gói AMI khi tôi có một nút được xây dựng theo cách tôi cần cho một chức năng cụ thể. Ví dụ: nếu tôi đang xây dựng máy chủ ứng dụng Rails, tôi sẽ nhận được tất cả các gói điều kiện tiên quyết được cài đặt để tiết kiệm thời gian xây dựng.
Khi thất bại, tôi đăng nhập vào hệ thống bằng SSH. Tôi đã làm quản trị hệ thống thủ công trong nhiều năm, đây là chiếc mũ cũ.
Bạn đang sử dụng một số dạng hệ thống Windowing và máy tính để bàn từ xa tương đương với việc truy cập hộp, hay đó là tất cả dòng lệnh?
Tôi không cài đặt bất kỳ GUI nào trên máy chủ trừ khi gói có phụ thuộc và gói được cài đặt tự động.
Có một cái tương đương với cái này trong thế giới Linux không? (chuyển tập tin)
Tôi thường làm hai loại chuyển tập tin / bảo trì tập tin.
- Cài đặt gói
- Tập tin cấu hình
Đối với các gói có nguồn gốc từ nền tảng, tôi sử dụng công cụ quản lý gói tiêu chuẩn như APT hoặc YUM. Đối với các cài đặt nguồn (Something.tar.gz) Tôi thường tải xuống qua wget.
Các tệp cấu hình thường là các mẫu ERB được quản lý bởi Chef.
Tôi sử dụng SSH và SCP / SFTP để truyền tệp theo cách thủ công.
Bạn đang thực hiện thay đổi cấu hình / chỉnh sửa tập lệnh trực tiếp trên máy? Hoặc bạn có một cái gì đó được thiết lập trên hộp cục bộ của bạn để chỉnh sửa các tệp này từ xa? Hay bạn chỉ đơn giản là chỉnh sửa chúng từ xa sau đó chuyển chúng ở mỗi lần lưu?
Tôi giữ mọi thứ liên quan đến việc quản lý hệ thống trong kho điều khiển phần mềm. Đây là quy trình công việc điển hình của tôi khi cập nhật cấu hình trên một hoặc nhiều hệ thống. Tôi bắt đầu từ máy trạm địa phương của tôi.
- Kéo từ kho Git chính cho những thay đổi của người khác.
- Chỉnh sửa (các) tệp cục bộ (như, cập nhật tệp cấu hình).
- Cam kết thay đổi, đẩy lên làm chủ.
- Trên máy chủ Chef (đăng nhập qua SSH), lấy thay đổi mới nhất tôi vừa cam kết.
- Triển khai cấu hình đến vị trí thích hợp trên máy chủ Chef (Tôi sử dụng Rake cho việc này).
- Khách hàng đầu bếp chạy trên một khoảng thời gian, vì vậy họ sẽ nhận thay đổi cứ sau 30 phút. Nếu tôi cần một cái gì đó ngay lập tức, tôi điều hành đầu bếp-khách hàng bằng tay.
- Xác nhận thay đổi!
Làm thế nào để bạn di chuyển các tập tin qua lại giữa EC2 và môi trường địa phương của bạn? FTP? Một số loại ổ đĩa được ánh xạ thông qua VPN?
Có một vài vị trí nơi các tệp tôi sử dụng trên các nút EC2 có thể được lưu trữ.
- Máy chủ đầu bếp. Mẫu cấu hình là chủ yếu, một số gói nhỏ quá.
- GitHub. Chúng tôi lưu trữ mã của chúng tôi (các dự án nguồn mở) trên GitHub. Các nút EC2 có thể nhận được điều này một cách dễ dàng (chẳng hạn như để kiểm tra phiên bản mới nhất của một cái gì đó).
- Amazon S3 xô. Một số thứ được lưu trữ trong một cái xô.
Tôi làm rất nhiều việc trong EC2, chủ yếu là kiểm tra môi trường và thay đổi. Là kết quả của các công cụ và quy trình làm việc của tôi, tôi dành nhiều thời gian hơn để làm những việc tôi thực sự quan tâm và ít phải xử lý các tệp riêng lẻ và suy nghĩ về các cấu hình cụ thể.