Configuration Management

Configuration Management (CM) là gì? Tại sao phải dùng tới CM? Hạn chế của nó cũng như ứng dụng trong Cloud Computing. Chúng ta sẽ cùng trả lời các câu hỏi trên trong bài viết về Configuration Management trước khi đi vào loạt bài chi tiết về công cụ quản lý cấu hình Ansible.

Configuration Management là gì?

Configuration management (CM) là công cụ thực hiện việc thay đổi trạng thái hiện tại của hệ thống sang trạng thái được xác định trước. Hay nói cách khác, là công cụ hỗ trợ, cấu hình, cài đặt hệ thống một cách tự động.

Configuration management tools

Có rất nhiều công cụ như Ansible, Chef, Puppet, Saltstack ... Loạt bài viết này sẽ không tập trung vào việc so sánh các công cụ CM mà chỉ hướng dẫn bạn cách cài đặt và sử dụng Ansible.
Configuration-tool

Tại sao lại cần Configuration management?

Ví dụ một ngày sếp bạn vào và bảo bạn triển khai 1 hệ thống LAMP stack gồm 2 server, 1 web và 1 database. OK không vấn đề gì, chỉ cần yum/apt, sửa config apache, php, mysql,.. bạn hoàn thành công việc.
ansible-1

Rồi một ngày khác sếp bạn yêu cầu bạn mở rộng triển khai sang n webserver, m database với cấu hình keepalive, HA, replication database loằng ngoằng... "Anh đùa em?". Không !! Nhưng bạn vẫn hoàn thành công việc.
ansible-2

Lại một ngày khác, sếp bạn vào và nói: "Chú dựng cho anh 1 hệ thống tương tự như vậy nữa nhé. Số lượng server tăng gấp đôi". Và bạn đã khóc
ansible-3

Giờ thì bạn đã hiểu tại sao lại có Ansible, Saltstack rồi chứ ... :D

Lợi ích của configuration management

  • Giúp thực hiện công việc triển khai hệ thống đơn giản và thuận tiện.
  • Hạn chế những công đoạn lặp lại, tiết kiệm thời gian
  • Có thể sử dụng lại cho những hệ thống tương tự.
  • Linh hoạt, mềm dẻo trong quản lý.

So sánh với shell script (Linux)

Thế shell script thì sao ? Tôi vẫn dùng shell script để triển khai hệ thống. Có vấn đề gì đâu ?

Đúng, shell script vẫn tốt. Nhưng hãy tưởng tượng bạn có 10 server, bạn phải download script trên từng server rồi thực thi script. Tiếp tục, ví dụ 10 server đó của bạn có Ubuntu, CentOS, thì chí ít bạn lại phải có 2 version shell script, như apt >< yum, gói Apache trên Ubuntu là apache2, trên CentOS là httpd... Rồi thì version hệ điều hành khác nhau, như Ubuntu 12.04, 14.04, CentOS thì 5, 6, 7. Bạn cần chục version khác nhau của shell script? (hoặc bạn phải if/else mệt nghỉ). Việc maintaince code rất khó khăn.

Với những công cụ như Ansible, Chef... hỗ trợ sẵn việc xác định distro, phiên bản cũng như sử dụng những cấu trúc linh hoạt, dễ đọc như yaml, jinja2 giúp đỡ rất nhiều cho người quản trị để xây dựng kịch bản hệ thống, maintaince code cũng như tái sử dụng.

Có hạn chế gì không ?

Mặc dù rất tốt nhưng CM không phải là vạn năng. Nếu không phải triển khai 1 hệ thống đủ lớn, hoặc chỉ phải thực hiện trên 1, 2 server thì thực sự không cần thiết dùng đến CM. Viết ra kịch bản có khi tiêu tốn nhiều thời gian hơn việc bạn thực hiện nó bằng lệnh.

Trong những tình huống như hệ thống gặp sự cố hay troubleshooting thì CM không có nhiều tác dụng. Đó là những tình huống cần sự cẩn thận, tránh những sai sót không đáng có.

CM với Cloud Computing

Cloud computing mang đến cho bạn khả năng tạo các server ảo hóa một cách nhanh chóng. Chỉ 1 nút bấm, bạn đã có 10 đến hàng trăm cloud server sẵn sàng phục vụ. Với tốc độ phát triển chóng mặt cùng với cạnh tranh quyết liệt trong việc cung cấp dịch vụ trên Internet, những yêu cầu của sếp như ví dụ trên sẽ xảy ra thường xuyên với những deadline ngắn hạn. Là nhà cung cấp dịch vụ trên nền điện toán đám mây, VCCloud hiểu rằng việc tự động hóa các thao tác cài đặt, cấu hình, triển khai và mở rộng với CM sẽ giúp tiết kiệm rất nhiều thời gian và tiền bạc.

Trong các bài tới, tôi và bạn sẽ cùng nhau tìm hiểu về một công cụ quản lý cấu hình khá phổ biến hiện nay: Ansible - các đặc điểm, cài đặt cũng như cấu trúc sử dụng.