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

8 comments:

  1. The market review segment of the report grandstands the market's elements and patterns, for example, the drivers, limitations, and openings that impact the ebb and flow nature and future status of this market. ai courses

    ReplyDelete
    Replies
    1. The effectiveness of IEEE Project Domains depends very much on the situation in which they are applied. In order to further improve IEEE Final Year Project Domains practices we need to explicitly describe and utilise our knowledge about software domains of software engineering Final Year Project Domains for CSE technologies. This paper suggests a modelling formalism for supporting systematic reuse of software engineering technologies during planning of software projects and improvement programmes in Final Year Projects for CSE.

      Software management seeks for decision support to identify technologies like JavaScript that meet best the goals and characteristics of a software project or improvement programme. JavaScript Training in Chennai Accessible experiences and repositories that effectively guide that technology selection are still lacking.

      Aim of technology domain analysis is to describe the class of context situations (e.g., kinds of JavaScript software projects) in which a software engineering technology JavaScript Training in Chennai can be applied successfully

      The Angular Training covers a wide range of topics including Components, Angular Directives, Angular Services, Pipes, security fundamentals, Routing, and Angular programmability. The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training

      Delete
  2. I am really enjoying reading your well written articles. It looks like you spend a lot of effort and time on your blog. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work.
    Data Science Certification in Bangalore

    ReplyDelete
  3. This article we hope, has been able to provide some clarity on data science and its training. artificial intelligence certification

    ReplyDelete
  4. Very interesting blog. Many blogs I see these days do not really provide anything that attracts others, but believe me the way you interact is literally awesome.You can also check my articles as well.

    Rowe Rowe
    Rowe Rowe
    Rowe Rowe
    Rowe Rowe
    Rowe Rowe

    Thank you..

    ReplyDelete
  5. Mindblowing blog appreciating your endless efforts in developing a truly transparent content. Which probably the best one to come across disclosing the content which people might not aware of it. Thanks for bringing out the amazing content and keep sharing more further.

    360DigiTMG PMP Certification Course

    ReplyDelete