8. Problems
Time to deploy
High human error rate Misconfig
Hard to manage
9. Config management tool
We have
Centralized configurations, settings
Declarative language
Excute parallel
Speed
10. Config management tool
We have
Centralized configurations, settings
Declarative language
Excute parallel
Speed
We have
CFEngine
Chef
Puppet
SaltStack
- Simple: Puppet là một “công cụ” tuyệt vời dùng để quản lý cấu hình hệ thống server chạy trên nền tảng Unix hoặc WindowsĐối tượng: System Engineer, Administrator hoir: bao nhiêu bạn trong đây là system admin trong các bạn ai đã dùng puppet xem câu chuyện của bạn có giống mình không :DLý do tại sao nghe bài thuyết trình, nó giúp gì cho bạn, bạn sẽ được gì:Đối với các bạn chưa biết đến hoặc chưa dùng cụ thể: mình muốn chia sẻ một công cụ giúp việc quản lý hệ thống server của bạn dễ thở hơn và cuộc sống một người quản lý hệ thống thú vị hơn (ngoài việc cắm đầu vào cấu hình, nay chúng ta code nhiều hơn)Đối với các bạn đã biết và sử dụng puppet cũng như các configuration management tool khác: mình muốn chia sẻ trải nghiệm về việc triển hệ thống puppet trên hệ thống của mình, có sự trao đổi với các bạn.Tự do, mềm dẻo cho thao tác của bạn.Trích dẫn review từ người bên ngoài
Đầu tiên mình muốn kể câu chuyện về quá trình làm system của mình.Đầu tiên nói qua về công việc của 1 system, ngoài việc tìm hiểu và nghiên cứu, cơ bán system thì công việc là cài đặt, triển khai, quản lí, duy trì, nâng cấp, tối ưu dịch vụ của mình quá trình đó gắn liền với việc thực hiện thao tác: Cấu hình begin:Khi bắt đầu từ việc học tập đến quản lí một số server với các service chạy trên đó cấu hình, dùng thử, test kiểm trực tiếp trên file cấu hình. (Webserver là điển hình): lúc này, với mỗi dịch vụ trong hệ thống lúc này, chúng là duy nhất, phục vụ tất cả các yêu cầu của hệ thống. Trong topology của bạn thì service này chỉ có 1.Quy mô nhỏViệc lúc này là làm tốt việc quản lí các dịch vụ của mình, optimize nó.Qua thời gian, số lượng server chúng ta phải quản lí sẽ tăng lên. Cấp độ phức tạp của công việc sẽ tăng lên gấp bội, kể cả về topology và thao tác cấu hình.Không phải chỉ quản lí 1 server với các dịch vụ duy nhất trên đó, lúc này hệ thống lớn lên, chúng ta có nhiều server hơn, mỗi dịch vụ sẽ có nhiều phần và được nằm trên nhiều server khác nhau.Cứ mỗi khi server lớn lên thêm là công việc của chúng ta nhiều và phức tạp hơn theo cấp số.
Công việc phải thực hiện trên nhiều server, thực hiện hàng loạt.Khi công việc nhiều hơn, số lượng server cùng với service dần tăng lên để thao tác chúng ta phải login vào từng server, lặp đi lặp lại các công việc: đổi cấu hình, reload dịch vụ. 2-3 server, mọi chuyện ok 7-8 server: công việc phức tạp hơn rất nhiều.Từ viết bash script, record lại các động tác của chúng ta, đưa vào script, đẩy lên từng server và chạy các script này.Kể cả việc đó, các bạn vẫn phải thực hiện công việc copy từng file script lên tất cả các server và kích hoạt chúng chúng ta phải nghĩ ra các khác, thứ tiếp theo em muốn nói đến là Terminator, 1 bảo bối mà em được các đại huynh truyền lại với bí kíp gọi là broadcast – broadcast groupKhông chịu thua, phải đẩy nhanh tốc độ, chúng ta: viết bash script: không phải việc gì cũng phải viết bash script (restart, change cấu hình) nhiều thao tác khó thực hiện (change cấu hình) khó control outputSử dụng các shell, termial hỗ trợ: Terminator broadcast group, parallel ssh tỉ lệ sai sót rất cao, nguy hiểm thao tác sai 1 lỗi là ảnh hưởng đến toàn bộ.Hơn nữa, chúng ta sẽ sử dụng fabric pythonFabric python không phải vào từng server lập đi lập lại 1 công đoạn, các thao tác của chúng ta cũng được record lại, quá trình chạy trên nhiều server sẽ đơn giản hơn rất nhiềuHạn chế: Với lượng lớn server, quản lí là rất cần thiết: cụm server này có gì, cấu hình ra sao cần thiết một central.
Fabric is a Python library (i.e. a tool to build on) used for interacting with SSH and computer systems [easily] to automate a wide range of tasks, varying from application deployment to general system administration.
Fabric is a Python library (i.e. a tool to build on) used for interacting with SSH and computer systems [easily] to automate a wide range of tasks, varying from application deployment to general system administration.
Fabric is a Python library (i.e. a tool to build on) used for interacting with SSH and computer systems [easily] to automate a wide range of tasks, varying from application deployment to general system administration.
- Chậm, chắc chắn rất là chậm khi chúng ta phải ssh vào từng server, thực hiện một quá trình. Đặc biệt là quá trình chậm này sẽ lặp lại trong tương lai, không giảm bớt nhiều.High error rate, misconfig: thao tác trên nhiều server, mặc dù lặp đi lặp lại quá trình nhưng không thể tránh khỏi những sai sót, lỗi. Từ đây dẫn đến những misconfig rất khó có thể debug. Nếu có vấn đề, chúng ta phải vào từng server kiểm tra, so sánh cấu hình.Bạn sẽ gặp khó khăn trong việc quản lí các server với cấu hình các service của chúng:Không thể nhận biết các server đang chạy service gì, các service đó phục vụ cho mục đích nào (quy mô lớn, góc nhìn tổng quát) dù các bạn có lưu lại danh sách, nhưng khi có số lượng lớn server thì đó là một núi bùi nhùi.Kiểm soát các server của chúng ta, số lượng, chất lượng, “khản năng”Tính riêng biệt của các server: cấu hình khác nhau tuy nhiên chúng ta lại chạy trên cùng 1 cấu hình.
+ Centralized:Default set of configClient specified configPackage managermentMaintain consistent configuration+ Declarative language: - Used to write config - Support OOPs - Reuseable code - Platform independent----- Meeting Notes (3/20/14 16:09) -----framework: bộ công cụ, tập công cụ quản lí resource. Có tính mở rộng
+ Centralized:Default set of configClient specified configPackage managermentMaintain consistent configuration+ Declarative language: - Used to write config - Support OOPs - Reuseable code - Platform independent----- Meeting Notes (3/20/14 16:09) -----framework: bộ công cụ, tập công cụ quản lí resource. Có tính mở rộng
- http://puppetlabs.com/puppet/what-is-puppet- Môi trường chạy: Unix: Redhat, Ubuntu-Debian , FreeBSD, Mac OSWindowsDeveloper(s) Puppet LabsInitial release 2005; 9 years agoStable release 3.4.0 (December 19, 2013; 2 months ago) [±]Preview release 3.2.1-rc1 (May 17, 2013; 9 months ago) [±]Written in RubyOperating system GNU/Linux, Unix-like, WindowsType Configuration managementLicense Apache for >2.7.0; GPL for prior versions.Website http://www.puppetlabs.com/----- Meeting Notes (3/20/14 16:38) ------ Nói thêm chi tiết về puppet trước khi demo:type: công cụ đưa ra sẵn, manifest: kịch bản định nghĩ modules: --> cái làm nên framework: cái có khả năng mở rộng
Puppet clients pull configuration information from the puppet masterClient first collects local host configuration information using factorClient then requests a master recipe to configure the clientThis master recipe then pulls in additional recipes based on the client's configurationThe puppet client then translates this information into host specific commands to run
Puppet clients pull configuration information from the puppet masterClient first collects local host configuration information using factorClient then requests a master recipe to configure the clientThis master recipe then pulls in additional recipes based on the client's configurationThe puppet client then translates this information into host specific commands to run
Puppet clients pull configuration information from the puppet masterClient first collects local host configuration information using factorClient then requests a master recipe to configure the clientThis master recipe then pulls in additional recipes based on the client's configurationThe puppet client then translates this information into host specific commands to run
-Puppet thay đổi hoạt động của chúng ta như thế nào từ đó thay đổi cuộc sống của chúng ta ra sao?Thêm 1 serverThêm vào nhiều server:Lâu sau mới thêm, nhớ ????Muốn xem 1 server đã chạy những gì, phải vào từng server để xem
Deloy new server:Cài đặt các service cần thiết: yum install, build source, copy from other placeSetup cấu hìnhTạo folder cần thiếtDeloy source codeMaintaintThêm, sửa 1 cấu hình:Vào từng server để đổi cấu hìnhSử dụng fabric: tạo 1 file cấu hình mới thay thế, viết 1 lệnh phức tạp để thay đổi cấu hình phức tạp----- Meeting Notes (3/20/14 16:38) -----Show trước change, những thay đổi trong slide
Each server have a rule
Chính việc quản lí và triển khai hệ thống thông qua framework này, chúng ta có 1 document chi tiết về trạng thái, tài nguyên của server. Theo thời gian hệ thống sẽ cso sự thay đổi, và sự thay đổi đó nằm trên chính những modules, config mà chúng ta đang viết ra. Bằng cách sử dụng subversion chúng ta sẽ có thông tin chi tiết về sự thay đổi của hệ thống, vô hình nó tạo cho tao 1 document. Viết document là một việc không phải SE nào thích và update thường xuyên, đặc biệt khi nhìn vào những file word chi chít chữ.----- Meeting Notes (3/20/14 16:26) ------ Eclipse- Document lại hệ thống có những gì, - Theo thời gian thay đổi phải update --> - Mỗi h----- Meeting Notes (3/20/14 16:38) -----Thay đổi document hệ thống như thế nào --> file .pp là document thay vì mở file wordIntegrity: puppet dashboard image
Chính việc quản lí và triển khai hệ thống thông qua framework này, chúng ta có 1 document chi tiết về trạng thái, tài nguyên của server. Theo thời gian hệ thống sẽ cso sự thay đổi, và sự thay đổi đó nằm trên chính những modules, config mà chúng ta đang viết ra. Bằng cách sử dụng subversion chúng ta sẽ có thông tin chi tiết về sự thay đổi của hệ thống, vô hình nó tạo cho tao 1 document. Viết document là một việc không phải SE nào thích và update thường xuyên, đặc biệt khi nhìn vào những file word chi chít chữ.----- Meeting Notes (3/20/14 16:26) ------ Eclipse- Document lại hệ thống có những gì, - Theo thời gian thay đổi phải update --> - Mỗi h----- Meeting Notes (3/20/14 16:38) -----Thay đổi document hệ thống như thế nào --> file .pp là document thay vì mở file wordIntegrity: puppet dashboard image
Chính việc quản lí và triển khai hệ thống thông qua framework này, chúng ta có 1 document chi tiết về trạng thái, tài nguyên của server. Theo thời gian hệ thống sẽ cso sự thay đổi, và sự thay đổi đó nằm trên chính những modules, config mà chúng ta đang viết ra. Bằng cách sử dụng subversion chúng ta sẽ có thông tin chi tiết về sự thay đổi của hệ thống, vô hình nó tạo cho tao 1 document. Viết document là một việc không phải SE nào thích và update thường xuyên, đặc biệt khi nhìn vào những file word chi chít chữ.----- Meeting Notes (3/20/14 16:26) ------ Eclipse- Document lại hệ thống có những gì, - Theo thời gian thay đổi phải update --> - Mỗi h----- Meeting Notes (3/20/14 16:38) -----Thay đổi document hệ thống như thế nào --> file .pp là document thay vì mở file wordIntegrity: puppet dashboard image
Chính việc quản lí và triển khai hệ thống thông qua framework này, chúng ta có 1 document chi tiết về trạng thái, tài nguyên của server. Theo thời gian hệ thống sẽ cso sự thay đổi, và sự thay đổi đó nằm trên chính những modules, config mà chúng ta đang viết ra. Bằng cách sử dụng subversion chúng ta sẽ có thông tin chi tiết về sự thay đổi của hệ thống, vô hình nó tạo cho tao 1 document. Viết document là một việc không phải SE nào thích và update thường xuyên, đặc biệt khi nhìn vào những file word chi chít chữ.----- Meeting Notes (3/20/14 16:26) ------ Eclipse- Document lại hệ thống có những gì, - Theo thời gian thay đổi phải update --> - Mỗi h----- Meeting Notes (3/20/14 16:38) -----Thay đổi document hệ thống như thế nào --> file .pp là document thay vì mở file wordIntegrity: puppet dashboard image
Giảm thiểu chi phí vận hành hệ thống, thời gian triển khai ngắn hơn, lỗi thuộc về phần con người sẽ giảm đi.Mở ra nhiều chức năng mới mà lúc trước chúng ta không có được.Thay vì ngồi mò,fix lỗi triển khai hệ thống thì chúng ta sẽ có thời gian chơi game, hẹn hò …..----- Meeting Notes (3/20/14 16:38) -----1 người làm được nhiều việc