Sunday, 21 June 2015

[SaltStack] Chào Muối, em là ai?

Title phụ: How to fall in love with SaltStack?

Update: tham gia hội người dùng Salt tại Việt Nam https://www.meetup.com/VietNam-SaltStack-Meetup/

Muối, một cô gái 25 tuổi, sống nội tâm, một mình ở nơi toàn sắp thép, luôn được bao quanh bởi những anh chàng IT khô cằn mà mỗi thằng đều dấu dưới chân mình một cái giếng ngập tràn chất lỏng (nước?).
Muối không hoàn hảo, như tất cả mọi thứ trên hành tinh này.
Muối không dễ được yêu, bởi Muối chỉ dành cho những ai cần đến cô.
Nhưng Muối đơn giản (YAML), muối nhẹ nhàng (lightweight ~ 50MB RAM), dù nhiều khi hơi phũ phàng trước thay đổi (upgrade PITA).
Muối chẳng cần phải so sánh mình với ai, bởi đấy không phải cách một kẻ yêu bản thân mình sẽ sống.

Muối là tên gọi hư cấu mà tác giả dành cho SaltStack, một điều đặc biệt đã thay đổi cuộc đời anh, mãi mãi.

1. SaltStack là gì?
SaltStack (từ đây gọi tắt là Salt) là một phần mềm mã nguồn mở, một hệ thống thuộc nhóm Configuration management, viết bằng Python, sử dụng YAML làm ngôn ngữ giao tiếp với người dùng.

2. SaltStack làm gì?
- tính năng của Salt chia làm 2 phần chính: remote executionconfiguration management dựa trên nền tảng remote execution.
- Remote execution: chạy lệnh từ xa. Tức sau khi cài đặt xong salt-master (daemon đóng vai trò server) và các salt-minion (các daemon đóng vai tròn client), từ salt-master có thể chạy bất kì câu lệnh nào trên máy cài salt-minion.
Tưởng tượng bạn cần xoá 1 key SSH trên 10 hay 100 máy, chỉ cần gõ 1 câu lệnh và tất cả các minion sẽ chạy câu lệnh ấy. Sức mạnh là vô cùng khủng khiếp, giống như nắm một mạng botnet trong tay vậy. Muốn ping 1 server từ 100 máy? gõ lệnh ``ping -c N victim``, và 100 máy sẽ cùng lúc ping đến máy đích.
Configuration management: đảm bảo trạng thái các thành phần của hệ thống. Cần đảm bảo 1 service NGINX chạy với file cấu hình nhất định, forward request đến uWSGI hay unicorn app server trên máy ấy, đã cấu hình để chạy một web application viết bằng Python với phiên bản mới nhất lấy từ 1 git repository? Salt làm được tất cả điều đó, và nó có thể đảm bảo rằng mọi thay đổi bằng tay thực hiện trên những thành phần nói trên sẽ bị thay thế bằng những gì đã định trước.

3. SaltStack dành cho ai?
Đối tượng chính là các *NIX Sysadmin (Windows cũng dùng được) hay các devops, ngoài ra những ai yêu thích việc tự động hoá cũng có thể sử dụng Salt, không ít người dùng Salt để quản lý chính chiếc máy làm việc của mình.

- Remote execution: cho những người cần chạy 1 câu lệnh trên nhiều máy cùng một lúc (VD: quản lý cluster)
- Configuration management: document hệ thống, đảm bảo thống nhất cấu hình, tự động việc deploy.
Khi một hệ thống được quản lý hoàn toàn bằng một bộ "Formula", mọi bước cài đặt, cấu hình đều được ghi lại thành các state ở dạng YAML, không có bước nào có thể bị giấu đi làm bí mật riêng, toàn bộ hệ thống đều được document. Khi cần triển khai một hệ thống tương tự, chỉ cần nhập các tham số cần thiết và chạy bộ formula, một hệ thống mới tinh sẽ được thiết lập trong giây lát (vài phút :)) ).

Công việc của mỗi sysadmin hàng ngày là cài đặt phần mềm, cấu hình cho phù hợp với mục đích, vận hành, troubleshooting khi có lỗi, monitor xem có chạy ổn định không, backup ...
SaltStack là công cụ để tự động bước cài đặt, cấu hình và backup, là công cụ hỗ trợ vận hành và troubleshooting, cũng có thể dùng để monitor.

4. Yêu cầu kiến thức
- biết đọc tài liệu Tiếng Anh
- có khả năng học sử dụng YAML - thuộc loại dễ hơn cả HTML (sẽ dần dần được hướng dẫn theo tutorial của Salt)
- biết mình muốn làm gì với Salt (nấu ăn?)
- KHÔNG CẦN biết lập trình Python.

5. Cài đặt
- Salt có thể chạy một mình, không cần phải có 2 máy mới chạy được.
Mỗi salt-minion có thể tự vận hành, không cần đến salt-master. Nên để cho đơn giản, cho đến khi đã cảm thấy thoải mái với các tính năng của Salt thì không cần thiết biết đến salt-master.
- Trên Ubuntu, cài bản mới nhất (hiện tại là 2015.5) từ PPA:
sudo add-apt-repository ppa:saltstack/salt
xem hướng dẫn chi tiết ở đây (http://docs.saltstack.com/en/latest/topics/installation/ubuntu.html)
Các OS khác xem ở http://docs.saltstack.com/en/latest/topics/installation/index.html

6. Bắt đầu
Làm theo hướng dẫn của phần master-less http://docs.saltstack.com/en/latest/topics/tutorials/quickstart.html
Học viết salt states/formulas theo hướng dẫn http://docs.saltstack.com/en/latest/topics/tutorials/index.html#states
Trong quá trình này sẽ được sử dụng 2 thành phần quan trọng để làm Salt trở nên linh hoạt là salt grains và salt pillar.

Tham khảo các formula có sẵn: https://github.com/saltstack-formulas

7. Gì nữa?
- Nếu gặp khó khăn, có thể vác đi hỏi: http://docs.saltstack.com/en/latest/topics/index.html#salt-community
- Xem đầy đủ các tính năng của Salt ở : http://docs.saltstack.com/en/latest/

(còn tiếp...)
hvn@familug.org