Thứ hai, 05/10/2015 | 00:00 GMT+7

Giới thiệu về các khái niệm và thuật ngữ SaltStack

Salt, hoặc SaltStack, là một công cụ thực thi từ xa và hệ thống quản lý cấu hình. Khả năng thực thi từ xa cho phép administrator chạy các lệnh trên nhiều máy khác nhau song song với một hệ thống nhắm đến linh hoạt. Chức năng quản lý cấu hình cài đặt mô hình client - server để đưa các thành phần cơ sở hạ tầng nhanh chóng, dễ dàng và an toàn phù hợp với một policy nhất định.

Trong hướng dẫn này, ta sẽ thảo luận về một số khái niệm và thuật ngữ cơ bản cần thiết để bắt đầu học cách sử dụng Muối một cách hiệu quả.

Role máy muối

Cấu trúc điều khiển của Salt khá đơn giản như các hệ thống quản lý cấu hình. Trong một cài đặt điển hình, chỉ có hai loại máy khác nhau.

Bậc thầy

Salt master là máy kiểm soát cơ sở hạ tầng và ra lệnh cho các server mà nó quản lý. Nó hoạt động như một repository dữ liệu cấu hình và là trung tâm điều khiển khởi tạo các lệnh từ xa và đảm bảo trạng thái của các máy khác của bạn. Một daemon có tên là salt-master được cài đặt trên master để cung cấp chức năng này.

Mặc dù có thể kiểm soát cơ sở hạ tầng bằng cách sử dụng cấu hình không cần chính chủ, nhưng hầu hết các cài đặt đều được hưởng lợi từ các tính năng nâng cao có sẵn trong chính Salt. Trên thực tế, để quản lý cơ sở hạ tầng lớn hơn, Salt có khả năng ủy quyền một số thành phần và nhiệm vụ thường được liên kết với server cho các server chuyên dụng. Nó cũng có thể hoạt động trong một cấu hình chính theo cấp, nơi các lệnh có thể được chuyển tiếp qua các server thấp hơn.

Tay sai

Các server mà Salt quản lý được gọi là tay sai . Một daemon có tên là salt-minion được cài đặt trên mỗi máy được quản lý và được cấu hình để giao tiếp với server . Minion chịu trách nhiệm thực hiện các hướng dẫn được gửi bởi master, báo cáo về sự thành công của các công việc và cung cấp dữ liệu về server bên dưới.

Cách các thành phần muối giao tiếp

Theo mặc định, Salt Master và minion giao tiếp bằng thư viện nhắn tin ZeroMQ. Điều này cung cấp giao tiếp mạng hiệu suất cực cao giữa các bên, cho phép Salt gửi tin nhắn và dữ liệu với tốc độ nhanh chóng. Vì ZeroMQ là một thư viện chứ không phải là một dịch vụ độc lập, nên chức năng này có sẵn trong các daemon salt-mastersalt-minion .

Khi sử dụng ZeroMQ, Salt duy trì một hệ thống public key để xác thực chủ và tay sai. Khi khởi động lần đầu, một minion tạo một cặp khóa và gửi thông tin đăng nhập của nó đến server chính mà nó được cấu hình để liên hệ. Master có thể chấp nhận khóa này sau khi xác minh danh tính của minion. Sau đó, hai bên có thể giao tiếp nhanh chóng và an toàn bằng cách sử dụng ZeroMQ được mã hóa bằng các khóa.

Nếu vì lý do nào đó không thể cài đặt daemon salt-minion trên một nút, Salt cũng có thể đưa ra các lệnh qua SSH. Tùy chọn vận chuyển này được cung cấp để thuận tiện, nhưng nó làm giảm hiệu suất khá đáng kể và có thể dẫn đến các biến chứng với các lệnh Salt khác trong một số trường hợp. Ta khuyên bạn nên sử dụng daemon salt-minion nếu có thể để đạt hiệu suất, bảo mật và sự đơn giản.

Thuật ngữ muối

Trước khi tìm hiểu về Salt, bạn nên làm quen với một số thuật ngữ sẽ được sử dụng.Salt có nhiều tính năng mạnh mẽ, nhưng có thể khó ghép tên với chức năng của chúng lúc đầu. Ta hãy xem xét một số thuật ngữ chung hơn mà bạn có thể thấy.

Thực thi từ xa: Các module và chức năng thực thi

Salt cố gắng cung cấp sự khác biệt giữa các chức năng quản lý cấu hình và thực thi từ xa của nó. Khả năng thực thi từ xa được cung cấp bởi các module thực thi . Mô-đun thực thi là tập hợp các chức năng liên quan thực hiện công việc trên tay sai.

Mặc dù Salt bao gồm các chức năng cho phép bạn chạy các lệnh shell tùy ý trên các minion, ý tưởng đằng sau các module thực thi là cung cấp một cơ chế ngắn gọn để thực hiện các lệnh mà không cần phải “shell out” và cung cấp hướng dẫn chi tiết về cách hoàn thành quá trình. Việc sử dụng các module cho phép Salt tóm tắt sự khác biệt cơ bản giữa các hệ thống. Bạn có thể nhận được thông tin tương tự từ các tay sai chạy Linux hoặc BSD, mặc dù cơ chế thực tế để thu thập dữ liệu đó sẽ khác.

Salt đi kèm với một lựa chọn phù hợp các mô-đun thực thi nội trang để cung cấp chức năng sẵn có. Administrator cũng có thể viết các module của riêng họ hoặc bao gồm các module do cộng đồng viết để mở rộng thư viện các lệnh có thể được thực thi trên các máy minion.

Quản lý cấu hình: Trạng thái, Công thức và Mẫu

Chức năng quản lý cấu hình của Salt có thể được truy cập bằng cách tạo repository các file cấu hình. Các file chứa trong các kho này có thể thuộc một số loại khác nhau.

Trạng thái và Công thức

Phần quản lý cấu hình của Salt chủ yếu được thực hiện bằng hệ thống trạng thái .

Hệ thống trạng thái sử dụng các module trạng thái , khác với các module thực thi được mô tả ở trên. May mắn là các module trạng thái và thực thi có xu hướng phản chiếu lẫn nhau khá chặt chẽ. Hệ thống trạng thái được đặt tên phù hợp, vì nó cho phép người quản trị mô tả trạng thái mà hệ thống nên được đặt vào. Cũng như các module thực thi, hầu hết các module trạng thái đại diện cho các phím tắt chức năng và cung cấp cú pháp dễ dàng cho nhiều hành động phổ biến. Điều này giúp duy trì khả năng đọc và loại bỏ sự cần thiết của việc bao gồm logic phức tạp trong chính các file quản lý cấu hình.

Công thức muối là tập hợp các lệnh gọi module trạng thái, được sắp xếp với mục đích tạo ra một kết quả nhất định. Đây là các file quản lý cấu hình mô tả hệ thống sẽ trông như thế nào khi công thức đã được áp dụng. Theo mặc định, chúng được viết ở định dạng tuần tự hóa dữ liệu YAML, cung cấp nền tảng trung gian rất tốt giữa khả năng đọc cao và tính thân thiện với máy.

Administrator Salt có thể áp dụng các công thức bằng cách ánh xạ các minion vào các bộ công thức cụ thể. Các công thức cũng có thể được áp dụng theo cách đặc biệt khi cần thiết. Minions sẽ thực thi các module trạng thái được tìm thấy bên trong để đưa hệ thống của nó phù hợp với policy được cung cấp.

Bạn có thể tìm thấy một bộ sưu tập hay về các công thức Salt do tổ chức và cộng đồng SaltStack tạo ra trong tài khoản GitHub này .

Mẫu

Templating cho phép viết các công thức Salt và các file khác theo cách linh hoạt hơn. Các mẫu có thể sử dụng thông tin có sẵn về các tay sai để tạo các version tùy chỉnh của file công thức hoặc file cấu hình.Theo mặc định, Salt sử dụng định dạng mẫu Jinja, cung cấp chức năng thay thế và cấu trúc logic đơn giản để ra quyết định.

Trình kết xuất là các thành phần chạy mẫu để tạo ra các file cấu hình hoặc trạng thái hợp lệ. Trình kết xuất được xác định bằng định dạng tạo khuôn mẫu cấu thành đầu vào và định dạng tuần tự hóa dữ liệu sẽ được tạo ra dưới dạng kết quả . Xem xét các giá trị mặc định được mô tả ở trên, trình kết xuất mặc định xử lý các mẫu Jinja để tạo ra các file YAML.

Truy vấn về và chỉ định thông tin cho tay sai

Để quản lý số lượng lớn các hệ thống, Salt yêu cầu một số thông tin về từng hệ thống chủ. Các mẫu được mô tả ở trên có thể sử dụng dữ liệu được liên kết với từng hệ thống để điều chỉnh hành vi của từng tay sai. Có một số hệ thống khác nhau để truy vấn hoặc gán thông tin này cho các server .

Hạt

Hạt muối là những mẩu thông tin, được thu thập và duy trì bởi một minion, chủ yếu liên quan đến hệ thống server cơ bản của nó. Chúng thường được thu thập bởi daemon salt-minion và chuyển lại cho chủ nhân theo yêu cầu. Chức năng này có thể được tận dụng cho nhiều mục đích khác nhau.

Ví dụ: dữ liệu hạt được dùng để nhắm đến một tập hợp con cụ thể của các node từ group các tay sai để thực thi từ xa hoặc quản lý cấu hình. Nếu bạn muốn xem thời gian hoạt động của các server Ubuntu của bạn , các hạt chỉ cho phép bạn nhắm đến các máy này.

Ngũ cốc cũng được dùng làm đối số cho các thay đổi cấu hình hoặc lệnh. Ví dụ: bạn có thể sử dụng hạt để lấy địa chỉ IPv4 được liên kết với giao diện eth0 để thay đổi file cấu hình hoặc làm đối số cho lệnh.

Administrator cũng có thể gán ngũ cốc cho tay sai. Ví dụ, khá phổ biến khi sử dụng các hạt để gán “ role ” cho một server . Điều này sau đó được dùng để nhắm đến một tập hợp con các node tương tự như ví dụ về hệ điều hành ở trên.

Trụ cột

Mặc dù có thể gán ngũ cốc cho lính, nhưng phần lớn các biến cấu hình sẽ được gán thông qua hệ thống trụ . Trong Salt, một trụ đại diện cho một kho key-value mà một minion có thể sử dụng để truy xuất dữ liệu được gán tùy ý. Chức năng này hoạt động như một cấu trúc dữ liệu từ điển có thể được lồng vào nhau hoặc phân cấp cho các mục đích tổ chức.

Pillars cung cấp một số lợi thế quan trọng so với hệ thống hạt để ấn định giá trị. Quan trọng nhất, dữ liệu trụ cột chỉ có sẵn cho các tay sai được chỉ định cho nó. Các tay sai khác sẽ không có quyền truy cập vào các giá trị được lưu trữ bên trong. Điều này làm cho nó lý tưởng để lưu trữ dữ liệu nhạy cảm cụ thể cho một nút hoặc một tập hợp con các node . Ví dụ: khóa bí mật hoặc chuỗi kết nối database thường được cung cấp trong cấu hình trụ cột.

Dữ liệu cột thường được tận dụng trong bối cảnh quản lý cấu hình như một cách để đưa dữ liệu biến đổi vào mẫu cấu hình. Salt cung cấp lựa chọn các định dạng mẫu để thay thế các phần biến đổi của file cấu hình bằng các mục cụ thể cho nút sẽ áp dụng nó. Ngũ cốc cũng thường được sử dụng theo cách này để tham khảo dữ liệu server .

Của tôi

Mỏ muối là một khu vực trên server chính, nơi có thể lưu trữ kết quả từ các lệnh được thực thi thường xuyên trên các tay sai. Mục đích của hệ thống này là thu thập kết quả của các lệnh tùy ý chạy trên các máy minion. Cửa hàng global này sau đó có thể được truy vấn bởi các thành phần và tay sai khác trong toàn bộ cơ sở hạ tầng của bạn.

Mỏ muối chỉ lưu trữ kết quả mới nhất cho mỗi lần chạy lệnh, nghĩa là nó sẽ không giúp bạn nếu bạn cần truy cập vào dữ liệu lịch sử. Mục đích chính của mỏ là cung cấp thông tin cập nhật từ các máy minion như một phần bổ sung linh hoạt cho dữ liệu ngũ cốc đã có sẵn. Minions có thể truy vấn dữ liệu về đối tác của chúng bằng hệ thống mỏ. Khoảng thời gian mà minion làm mới dữ liệu trong mỏ có thể được cấu hình trên cơ sở từng minion.

Chức năng bổ sung

Muối cung cấp một số hệ thống khác không phù hợp với các loại trên.

Lò phản ứng

Hệ thống lò phản ứng Salt cung cấp cơ chế kích hoạt các hành động để phản ứng với các sự kiện được tạo ra. Trong Salt, những thay đổi xảy ra trong toàn bộ cơ sở hạ tầng của bạn sẽ khiến cho các daemon salt-minion hoặc salt-master tạo ra các sự kiện trên một bus thông báo ZeroMQ. Hệ thống lò phản ứng theo dõi bus này và so sánh các sự kiện với các lò phản ứng được cấu hình của nó để phản ứng một cách thích hợp.

Mục tiêu chính của hệ thống lò phản ứng là cung cấp một hệ thống linh hoạt để tạo ra các phản ứng tình huống tự động. Ví dụ: nếu bạn đã phát triển chiến lược tự động mở rộng quy mô, hệ thống của bạn sẽ tự động tạo các node để đáp ứng động nhu cầu tài nguyên của bạn. Mỗi nút mới sẽ kích hoạt một sự kiện. Một lò phản ứng có thể được cài đặt để lắng nghe những sự kiện này và cấu hình nút mới, kết hợp nó vào cơ sở hạ tầng hiện có.

Người chạy

Salt runners là module thực thi trên server chính thay vì tay sai. Một số trình chạy là tiện ích mục đích chung được sử dụng để kiểm tra trạng thái của các bộ phận khác nhau của hệ thống hoặc để bảo trì. Một số ứng dụng mạnh mẽ cung cấp khả năng điều phối cơ sở hạ tầng của bạn trên quy mô rộng hơn.

Người trả hàng

Người trả lại muối được sử dụng để chỉ định các vị trí thay thế nơi kết quả của một hành động chạy trên một tay sai sẽ được gửi đến. Theo mặc định, các tay sai trả lại dữ liệu của chúng cho chủ. Người trả lại cho phép administrator định tuyến lại dữ liệu trả lại đến một điểm đến khác. Thông thường, điều này nghĩa là kết quả được trả về đích do người trả về chỉ định cho quá trình bắt đầu lệnh minion.

Thông thường, những người quay lại sẽ chuyển kết quả cho hệ thống database hoặc hệ thống đo lường hoặc dịch vụ ghi log . Điều này cung cấp một phương pháp linh hoạt để lấy dữ liệu tùy ý vào các hệ thống này. Người trả lại cũng được dùng để thu thập dữ liệu cụ thể của Salt như bộ nhớ cache công việc và dữ liệu sự kiện.

Lệnh muối

Salt cung cấp một số lệnh để tận dụng các thành phần được nêu ở trên. Có một số điểm giao nhau đáng kể về mặt chức năng giữa các công cụ này, nhưng ta đã cố gắng làm nổi bật các chức năng chính của chúng bên dưới.

  • salt-master : Đây là quá trình daemon chính.Bạn có thể bắt đầu dịch vụ chính bằng lệnh này trực tiếp hoặc thông thường hơn, thông qua tập lệnh init hoặc file dịch vụ.
  • salt-minion : Tương tự như vậy, đây là quy trình daemon của minion, được sử dụng để giao tiếp với master và thực hiện các lệnh. Hầu hết user cũng sẽ bắt đầu điều này từ tập lệnh init hoặc file dịch vụ.
  • salt-key : Công cụ này được sử dụng để quản lý các public key của minion. Công cụ này được sử dụng để xem các khóa hiện tại và đưa ra quyết định về các public key được gửi bởi các tay sai tiềm năng. Nó cũng có thể tạo ra các khóa để đặt trên các tay sai ngoài băng.
  • salt : Lệnh này được sử dụng để nhắm đến các tay sai để chạy các module thực thi đặc biệt. Đây là công cụ chính được sử dụng để thực thi từ xa.
  • salt-ssh : Lệnh này cho phép bạn sử dụng SSH thay thế cho ZeroMQ cho cơ chế truyền tải.
  • salt-run : Lệnh này được sử dụng để chạy các module chạy trên server chính.
  • salt-call : Lệnh này được sử dụng để chạy các module thực thi trực tiếp trên một minion mà bạn đã đăng nhập. Điều này thường được sử dụng để gỡ lỗi các lệnh có vấn đề bằng cách bỏ qua cái chính.
  • salt-cloud : Lệnh này được sử dụng để kiểm soát và cung cấp tài nguyên cloud từ nhiều nhà cung cấp khác nhau. Các minion mới có thể dễ dàng được tạo ra và khởi động.

Cũng có một số lệnh khác, chẳng hạn như salt-api , salt-cpsalt-syndic , không được sử dụng thường xuyên.

Kết luận

Đến đây bạn đã quen thuộc với thuật ngữ SaltStack cơ bản và hiểu biết ở mức độ cao về những công cụ mà bạn sẽ gặp phải chịu trách nhiệm, bạn có thể bắt đầu cài đặt Salt để kiểm soát cơ sở hạ tầng của bạn . Trong hướng dẫn tiếp theo , ta sẽ trình bày cách cài đặt và cấu hình server chính Salt trên server Ubuntu 14.04. Ta cũng sẽ trình bày cách cấu hình các server minion mới để đặt chúng dưới sự quản lý của chủ nhân của bạn.


Tags:

Các tin liên quan