Cơ sở hạ tầng của SaltStack: Cài đặt Salt Master
SaltStack, hay Salt, là một hệ thống quản lý cấu hình và thực thi từ xa mạnh mẽ được dùng để dễ dàng quản lý cơ sở hạ tầng theo cách có cấu trúc, có thể lặp lại. Trong loạt bài này, ta sẽ trình bày một phương pháp quản lý môi trường phát triển, dàn dựng và production của bạn từ việc triển khai Salt. Ta sẽ sử dụng hệ thống trạng thái Salt để viết và áp dụng các hành động có thể lặp lại. Điều này sẽ cho phép ta phá hủy bất kỳ môi trường nào của ta , an toàn khi biết rằng ta có thể dễ dàng đưa chúng trở lại trực tuyến ở trạng thái giống hệt nhau sau này.Trong bài viết này, ta sẽ giới thiệu các môi trường khác nhau mà ta sẽ xây dựng và ta sẽ cài đặt trình Salt master vào server chính của ta để bắt đầu. Đây là hệ thống cốt lõi sẽ chứa các hướng dẫn cấu hình, kiểm soát các node cơ sở hạ tầng và quản lý các yêu cầu của ta .
Yêu cầu
Để hoàn thành hướng dẫn này, bạn cần một server Ubuntu 14.04 sạch. Server này cần phải bật mạng riêng.
 Trên  server  này, bạn phải có một account  không phải root được  cấu hình  với các  quyền  sudo . Bạn có thể tìm hiểu cách  cài đặt  account  loại này trong hướng dẫn  cài đặt   server  ban đầu Ubuntu 14.04 của  ta .
 Bài viết sau của loạt bài này sẽ sử dụng lệnh salt-cloud để khởi động các  server  cơ sở hạ tầng bằng cách sử dụng  cloud  DigitalOcean. Bạn có thể sử dụng các nhà cung cấp dịch vụ  cloud  khác nếu bạn muốn, hoặc thậm chí các version  ảo sử dụng phần mềm như vagrant. Tuy nhiên, điều này nằm ngoài phạm vi của hướng dẫn này và bạn sẽ phải tự nghiên cứu trong các lĩnh vực này.
Tổng quan về cơ sở hạ tầng mà ta sẽ xây dựng
 Các  server  mà  ta  tạo ra với salt-cloud sẽ đại diện cho ba môi trường mà  ta  muốn duy trì để phát triển ứng dụng. Vì  server  chính của  ta  Salt sẽ duy trì cấu hình cho từng  server  mà  ta  cần, nên  ta  có thể chuyển các  server  này xuống khi  ta  không sử dụng chúng. Ví dụ: nếu  group  phát triển của bạn đã tạm dừng công việc trong kỳ nghỉ lễ, bạn có thể thu hẹp môi trường phi production   của bạn . Khi trở lại sau kỳ nghỉ, bạn có thể dễ dàng xây dựng lại chúng và triển khai lại ứng dụng  của bạn  trên cơ sở hạ tầng mới này.
Ta sẽ chia cơ sở hạ tầng ví dụ của bạn thành phát triển, dàn dựng và production .
Cơ sở hạ tầng phát triển của ta sẽ khiêm tốn nhất. Nó sẽ chỉ chứa một web server duy nhất và một server database được liên kết. Việc tách database và web server sẽ đủ đảm bảo rằng ứng dụng của ta được xây dựng với dữ liệu từ xa.
Môi trường dàn dựng sẽ mạnh mẽ hơn. Hầu hết các lời khuyên mà bạn sẽ tìm thấy đều khuyên bạn nên cấu hình môi trường dàn dựng của bạn càng giống với môi trường production dự kiến của bạn càng tốt. Với ý nghĩ này, môi trường dàn dựng của ta sẽ bao gồm hai web server để phân tán tải lưu lượng. Ta sẽ phân phối lưu lượng giữa hai server này bằng cách sử dụng bộ cân bằng tải. Về phía database , ta sẽ tạo ra hai server database . Ta sẽ cài đặt bản sao master-master giữa hai server này để cả hai đều có thể chấp nhận yêu cầu ghi.Nhân bản tổng thể có một số nhược điểm, nhưng nó cho phép ta hơi lười biếng trong thiết kế ứng dụng của bạn (bất kỳ server database nào cũng có thể nhận ghi) và nó cho phép ta chứng minh một kịch bản quản lý cấu hình khá phức tạp.
Như ta đã nói trước đây, môi trường production sẽ rất giống với môi trường dàn dựng. Sự khác biệt duy nhất trong thiết kế của ta sẽ là một bộ cân bằng tải bổ sung ở phía trước để cung cấp tính khả dụng cao và không bị hỏng hóc. Nếu muốn, bạn cũng có thể sử dụng các server công suất cao hơn cho tải production của bạn . Điều này thường cần thiết để xử lý đầy đủ các yêu cầu về lưu lượng, mặc dù nó làm cho việc đánh giá tải trong môi trường phân đoạn khó khăn hơn.
Lưu ý trong khi ta đang tạo cấu hình cho các môi trường được liệt kê ở trên, không phải tất cả chúng đều phải chạy cùng một lúc. Điều này đặc biệt đúng trong quá trình thử nghiệm. Trong suốt loạt bài này, bạn có thể sẽ chỉ có một vài server hoạt động cùng một lúc. Điều này là mong muốn từ góc độ chi phí, nhưng việc phá hủy và nâng cấp môi trường của ta khi cần thiết cũng đảm bảo việc khởi động môi trường của ta là mạnh mẽ và có thể lặp lại.
Đến đây bạn đã biết bố cục chung của các môi trường mà ta sẽ cấu hình , ta có thể cài đặt và chạy Salt master của bạn .
Cài đặt Salt Master
 Bắt đầu bằng cách đăng nhập vào  server  mà bạn định  cài đặt  làm Salt master  với quyền  là  user  không phải root với các  quyền  sudo .
Có khá nhiều cách khác nhau để cài đặt Salt master daemon trên server . Có sẵn các PPA cho Ubuntu, nhưng những PPA này thường có thể lỗi thời. Cách tiếp cận tốt nhất để lập kế hoạch và quản lý phần mềm quản lý cấu hình là nhắm đến một version cụ thể. Điều này sẽ cho phép bạn cập nhật hệ thống của bạn (sau khi kiểm tra kỹ ) theo cách có kế hoạch và có cấu trúc thay vì dựa vào bất kỳ thứ gì có sẵn từ repository tại thời điểm cài đặt.
Đối với hướng dẫn này, ta sẽ nhắm đến version Salt v2015.8.0 , version ổn định mới nhất tại thời điểm viết bài này. Nếu bạn chọn một version hoặc phương pháp cài đặt khác, hãy lưu ý các quy trình trong hướng dẫn này có thể không hoạt động như đã viết.
Cách dễ nhất để cài đặt một version cụ thể là sử dụng tập lệnh bootstrap của SaltStack. Download tập lệnh bootstrap mới nhất vào folder chính của bạn bằng lệnh :
- cd ~ 
- curl -L https://bootstrap.saltstack.com -o install_salt.sh 
Vui lòng xem qua nội dung của tập lệnh đã download cho đến khi bạn thấy phù hợp với các thao tác mà tập lệnh sẽ thực hiện.
  Khi đã sẵn sàng  cài đặt Salt master, bạn có thể chạy script với sh shell.  Ta  sẽ chuyển nó cờ -P để  cho biết   ta  đồng ý với việc cho phép cài đặt phụ thuộc với pip , trình quản lý gói Python.  Ta  cũng  cần  bao gồm cờ -M để  cho biết   ta  muốn cài đặt  trình  chính. Kết thúc lệnh bằng cách bao gồm git v2015.8.0 , git v2015.8.0 này yêu cầu tập lệnh tìm nạp thẻ phát hành được chỉ định từ repo SaltStack GitHub và sử dụng nó để cài đặt:
- sudo sh install_salt.sh -P -M git v2015.8.0 
Tập lệnh sẽ cài đặt tất cả các phụ thuộc cần thiết, kéo version  được chỉ định từ git repo, và cài đặt các daemon chính và minion của Salt, cũng như một số tiện ích Salt liên quan.
Quá trình cài đặt sẽ diễn ra thẳng thắn. Tiếp theo, ta có thể bắt đầu cấu hình Salt master của bạn .
Cấu hình Salt Master
 Điều đầu tiên  ta  cần là chỉnh sửa file  cấu hình chính của Salt master. Mở nó ngay bây giờ với các  quyền  của sudo :
- sudo nano /etc/salt/master 
Tệp cấu hình khá dài và được comment tốt. Bạn chỉ cần bỏ ghi chú và đặt các tùy chọn khi bạn muốn lệch khỏi các giá trị mặc định. Ta chỉ cần thực hiện một vài chỉnh sửa để bắt đầu.
 Đầu tiên, hãy tìm tùy chọn file_recv trong file . Bật tính năng này cho phép các tay sai của Salt gửi các file  đến Salt master. Điều này cực kỳ hữu ích khi tạo trạng thái để nhận các file  cấu hình mà bạn muốn sửa đổi, tuy nhiên, nó đi kèm với một số rủi ro.  Ta  sẽ kích hoạt nó trong suốt thời gian của hướng dẫn này. Bạn có thể tắt nó sau đó nếu bạn muốn:
file_recv: True Tiếp theo,  ta   cần   cài đặt  từ điển file_roots . Salt master bao gồm một  server  file  mà nó sử dụng để lưu trữ và phân phát file  cho toàn bộ cơ sở hạ tầng. Điều này bao gồm bản thân các file  trạng thái quản lý cấu hình, cũng như  các file   minion nào được hệ thống của  ta  quản lý. Từ điển YAML này xác định root  của  server  file ,  server  này sẽ được đặt tại /srv/salt .  Ta  cần chỉ rõ rằng điều này nằm trong môi trường “cơ sở”, môi trường mặc định bắt buộc cho tất cả các triển khai Salt:
file_roots:   base:     - /srv/salt  Mục cuối cùng mà  ta  cần cho bây giờ là từ điển pillar_roots . Hệ thống trụ cột được sử dụng để lưu trữ dữ liệu cấu hình có thể được giới hạn cho  các node  nhất định. Điều này cho phép  ta  tùy chỉnh hành vi và ngăn dữ liệu nhạy cảm bị các thành phần cơ sở hạ tầng không liên kết với dữ liệu nhìn thấy. Định dạng này phản ánh chính xác file_roots . Vị trí của dữ liệu trụ cột của  ta  sẽ ở /srv/pillar :
pillar_roots:   base:     - /srv/pillar Lưu file khi bạn hoàn tất.
Ta có thể tiếp tục và tạo các folder mà ta đã tham chiếu trong file cấu hình bằng lệnh :
- sudo mkdir -p /srv/{salt,pillar} 
Cấu hình Minion Daemon trên Salt Master
Ta cũng muốn cấu hình server chính Salt của bạn để chấp nhận các lệnh Salt. Ta có thể làm điều này bằng cách cấu hình daemon minion trên server của ta . Mở file để bắt đầu:
- sudo nano /etc/salt/minion 
Mục duy nhất ta cần thay đổi ở đây là vị trí của server chính. Vì cả hai daemon đang hoạt động trên cùng một server , ta có thể đặt địa chỉ cho giao diện loopback local :
master: 127.0.0.1 Lưu file khi bạn hoàn tất.
Khởi động lại Dịch vụ và Chấp nhận Key Muối
Bây giờ ta đã có cấu hình Salt master và minion, hãy khởi động lại các dịch vụ để nhận các thay đổi của ta :
- sudo restart salt-master 
- sudo restart salt-minion 
Trước khi Salt master có thể giao tiếp an toàn với minion (ngay cả trên cùng một server ), nó phải chấp nhận khóa của minion. Đây là một tính năng bảo mật. Bạn có thể xem tất cả các khóa được chấp nhận và đang chờ xử lý bằng lệnh :
- sudo salt-key --list all 
Nếu daemon của bạn đã được cấu hình chính xác và đã được khởi động lại, bạn sẽ thấy một khóa cho server chính Salt của bạn trong phần “Khóa không được chấp nhận”. Trong trường hợp của ta , bậc thầy Salt của ta đang được lưu trữ trên một máy có tên “sm”:
OutputAccepted Keys: Denied Keys: Unaccepted Keys: sm Rejected Keys: Bạn có thể chấp nhận khóa này bằng cách chuyển ID minion của  server  (trong trường hợp này là sm ) to the command with the khóa muối command with the cờ -a`:
- sudo salt-key -a sm 
Nếu bạn kiểm tra lại, khóa của bạn sẽ được chuyển đến phần "Khóa được chấp nhận":
- sudo salt-key --list all 
OutputAccepted Keys: sm Denied Keys: Unaccepted Keys: Rejected Keys: Bạn có thể xác minh server chính Salt của bạn hiện phản hồi các lệnh Salt bằng lệnh :
- sudo salt '*' test.ping 
Bạn sẽ nhận được phản hồi giống như sau:
Outputsm:     True Server chính Salt của bạn hiện đã hoạt động.
Kết luận
Trong hướng dẫn này, ta đã bắt đầu quản lý cơ sở hạ tầng của bạn bằng cách chạy qua cấu hình ban đầu của server chính Salt của ta . Đây là server trung tâm trong thiết kế quản lý của ta , server này sẽ được sử dụng làm trung tâm điều khiển và lưu trữ dữ liệu cấu hình.
 Trong hướng dẫn tiếp theo của loạt bài này,  ta  sẽ  cấu hình   server  chính Salt của  ta  bằng thông tin đăng nhập API DigitalOcean của  ta .  Ta  sẽ tạo cấu hình nhà cung cấp cho phép  ta  kết nối với account  DigitalOcean  của bạn  bằng cách sử dụng lệnh salt-cloud và tạo và quản lý tài nguyên  cloud .  Ta  sẽ tạo cấu hình cho các máy cơ sở hạ tầng  của bạn  để  ta  có thể xác định các thuộc tính cho từng  server   của bạn .
Các tin liên quan
 

