Cách cài đặt và cấu hình Ansible trên CentOS 7
Hệ thống quản lý cấu hình được thiết kế để giúp administrator và group vận hành dễ dàng kiểm soát số lượng lớn server . Chúng cho phép bạn điều khiển nhiều hệ thống khác nhau theo cách tự động từ một vị trí trung tâm. Mặc dù có nhiều hệ thống quản lý cấu hình phổ biến dành cho hệ thống Linux, chẳng hạn như Chef và Puppet, nhưng những hệ thống này thường phức tạp hơn nhiều người muốn hoặc cần. Ansible là một lựa chọn thay thế tuyệt vời cho các tùy chọn này vì nó có chi phí bắt đầu nhỏ hơn nhiều.Ansible hoạt động bằng cách cấu hình client từ máy tính có cài đặt và cấu hình các thành phần Ansible. Nó giao tiếp qua các kênh SSH bình thường để lấy thông tin từ các máy từ xa, ra lệnh và sao chép file . Do đó, hệ thống Ansible không yêu cầu cài đặt thêm bất kỳ phần mềm nào trên client . Đây là một cách mà Ansible đơn giản hóa việc quản trị các server . Bất kỳ server nào có cổng SSH lộ ra đều có thể được đưa vào dưới ô cấu hình của Ansible, dù nó đang ở giai đoạn nào trong vòng đời của nó.
Ansible sử dụng phương pháp module , giúp bạn dễ dàng mở rộng sử dụng các chức năng của hệ thống chính để giải quyết các tình huống cụ thể. Mô-đun có thể được viết bằng bất kỳ ngôn ngữ nào và giao tiếp bằng JSON tiêu chuẩn. Các file cấu hình chủ yếu được viết ở định dạng tuần tự hóa dữ liệu YAML do tính chất biểu đạt và tính tương tự của nó với các ngôn ngữ đánh dấu phổ biến. Ansible có thể tương tác với khách hàng thông qua các công cụ dòng lệnh hoặc thông qua các tập lệnh cấu hình được gọi là Playbook.
Trong hướng dẫn này, bạn sẽ cài đặt Ansible trên server CentOS 7 và tìm hiểu một số kiến thức cơ bản về cách sử dụng phần mềm.
Yêu cầu
Để làm theo hướng dẫn này, bạn cần :
- Một server CentOS 7. Làm theo các bước trong Cài đặt server ban đầu với CentOS 7 để tạo user không phải root và đảm bảo bạn có thể kết nối với server mà không cần password .
Bước 1 - Cài đặt Ansible
Để bắt đầu khám phá Ansible như một phương tiện quản lý các server khác nhau của ta , ta cần cài đặt phần mềm Ansible trên ít nhất một máy.
Để có được Ansible cho CentOS 7, trước tiên hãy đảm bảo repository CentOS 7 EPEL đã được cài đặt:
- sudo yum install epel-release 
Khi repository  được cài đặt, hãy cài đặt Ansible với yum :
- sudo yum install ansible 
Bây giờ ta có tất cả các phần mềm cần thiết để quản trị các server của ta thông qua Ansible.
Bước 2 - Cấu hình Server Ansible
Ansible theo dõi tất cả các server mà nó biết thông qua file “ server ”. Trước tiên, ta cần cài đặt file này trước khi có thể bắt đầu giao tiếp với các máy tính khác của bạn .
Mở file với quyền root như sau:
- sudo vi /etc/ansible/hosts 
Bạn sẽ thấy một file có rất nhiều cấu hình ví dụ được comment . Giữ các ví dụ này trong file để giúp bạn tìm hiểu cấu hình của Ansible nếu bạn muốn triển khai các tình huống phức tạp hơn trong tương lai.
Tệp server lưu trữ khá linh hoạt và có thể được cấu hình theo một số cách khác nhau. Cú pháp mà ta sẽ sử dụng trông giống như sau:
[group_name] alias ansible_ssh_host=your_server_ip group_name là một thẻ tổ chức cho phép bạn tham chiếu đến bất kỳ  server  nào được liệt kê bên dưới nó bằng một từ. Bí danh chỉ là một cái tên để chỉ  server  đó.
Hãy tưởng tượng bạn có ba server mà bạn muốn kiểm soát với Ansible. Ansible giao tiếp với các client thông qua SSH, vì vậy mỗi server bạn muốn quản lý phải có thể truy cập được từ server Ansible bằng lệnh :
- ssh root@your_server_ip 
Bạn sẽ không được yêu cầu nhập password . Trong khi Ansible chắc chắn có khả năng xử lý xác thực SSH dựa trên password , các SSH key giúp giữ mọi thứ đơn giản. Bạn có thể làm theo hướng dẫn Cách sử dụng SSH key với DigitalOcean Server để cài đặt SSH key trên mỗi server lưu trữ nếu bạn chưa có.
  Ta  sẽ  giả định  địa chỉ IP của  server  của  ta  là 192.0.2.1 , 192.0.2.2 và 192.0.2.3 . Hãy  cài đặt  điều này để  ta  có thể gọi chúng riêng lẻ là host1 , host2 và host3 hoặc dưới dạng một  group  là servers . Để  cấu hình  điều này, bạn sẽ thêm khối này vào file   server   của bạn :
[servers] host1 ansible_ssh_host=192.0.2.1 host2 ansible_ssh_host=192.0.2.2 host3 ansible_ssh_host=192.0.2.3 Server có thể thuộc nhiều group và các group có thể cấu hình các thông số cho tất cả các thành viên của họ. Hãy thử điều này ngay bây giờ.
Theo mặc định, Ansible sẽ cố gắng kết nối với server từ xa bằng tên user hiện tại của bạn. Nếu user đó không tồn tại trên hệ thống từ xa, nỗ lực kết nối sẽ dẫn đến lỗi này:
Ansible connection errorhost1 | UNREACHABLE! => {     "changed": false,     "msg": "Failed to connect to the host via ssh.",     "unreachable": true } Hãy nói cụ thể với Ansible rằng nó sẽ kết nối với các  server  trong  group  " server " với  user  sammy . Tạo một folder  trong cấu trúc cấu hình group_vars được gọi là group_vars .
- sudo mkdir /etc/ansible/group_vars 
Trong folder này, ta có thể tạo các file có định dạng YAML cho mỗi group mà ta muốn cấu hình :
- sudo nano /etc/ansible/group_vars/servers 
Thêm mã này vào file :
--- ansible_ssh_user: sammy Các file YAML bắt đầu bằng “-”, vì vậy hãy đảm bảo bạn không quên phần đó.
  Lưu file   này khi bạn hoàn tất. Bây giờ Ansible sẽ luôn sử dụng  user  sammy cho  group  servers ,  dù   user  hiện tại là gì.
 Nếu bạn muốn chỉ định chi tiết cấu hình cho mọi  server ,  dù  liên kết  group , bạn có thể đặt những chi tiết đó trong một file  tại /etc/ansible/group_vars/all . Các  server  riêng lẻ có thể được  cấu hình  bằng cách tạo file  trong folder  tại /etc/ansible/host_vars .
Bước 3 - Sử dụng các lệnh Ansible đơn giản
Bây giờ ta đã cài đặt server và đủ chi tiết cấu hình để cho phép ta kết nối thành công với server của bạn , ta có thể thử lệnh đầu tiên của bạn .
Ping tất cả các server bạn đã cấu hình bằng lệnh :
- ansible -m ping all 
Ansible sẽ trả về kết quả như thế này:
Outputhost1 | SUCCESS => {     "changed": false,     "ping": "pong" }  host3 | SUCCESS => {     "changed": false,     "ping": "pong" }  host2 | SUCCESS => {     "changed": false,     "ping": "pong" } Đây là bài kiểm tra cơ bản đảm bảo rằng Ansible có kết nối với tất cả các server của nó.
 Phần -m ping của lệnh là một hướng dẫn để Ansible sử dụng module  "ping". Về cơ bản đây là các lệnh mà bạn có thể chạy trên các  server  từ xa  của bạn . Mô-đun ping hoạt động theo nhiều cách giống như tiện ích ping thông thường trong Linux, nhưng thay vào đó, nó kiểm tra kết nối Ansible.
 Tất all phần  nghĩa là  "tất cả các  server ". Bạn có thể dễ dàng chỉ định một  group :
- ansible -m ping servers 
Bạn cũng có thể chỉ định một server riêng lẻ:
- ansible -m ping host1 
Bạn có thể chỉ định nhiều server bằng cách phân tách chúng bằng dấu hai chấm:
- ansible -m ping host1:host2 
Mô-đun shell cho phép  ta  gửi một lệnh  terminal  đến  server  từ xa và lấy kết quả. Ví dụ, để tìm hiểu mức sử dụng bộ nhớ trên máy host1 của  ta ,  ta  có thể sử dụng:
- ansible -m shell -a 'free -m' host1 
 Như bạn thấy , bạn chuyển các đối số vào một tập lệnh bằng cách sử dụng  lựa chọn  -a . Đây là kết quả  kết quả  có thể trông như thế nào:
Outputhost1 | SUCCESS | rc=0 >>              total       used       free     shared    buffers     cached Mem:          3954        227       3726          0         14         93 -/+ buffers/cache:        119       3834 Swap:            0          0          0 Kết luận
 Bây giờ, bạn nên cấu hình  server  Ansible  của bạn  để giao tiếp với các  server  mà bạn muốn kiểm soát. Bạn có thể  xác minh  Ansible có thể giao tiếp với từng  server  mà bạn biết cách sử dụng lệnh ansible để thực hiện  các việc  đơn giản từ xa.
Mặc dù điều này rất hữu ích nhưng ta chưa đề cập đến tính năng mạnh mẽ nhất của Ansible trong bài viết này: Playbooks. Bạn đã cấu hình một nền tảng tuyệt vời để làm việc với các server của bạn thông qua Ansible, vì vậy bước tiếp theo của bạn là tìm hiểu cách sử dụng Playbook để thực hiện công việc nặng nhọc cho bạn. Bạn có thể tìm hiểu thêm trong Quản lý cấu hình 101: Viết Playbook Ansible và Cách tạo Playbook Ansible để Tự động hóa cấu hình hệ thống trên Ubuntu
Các tin liên quan
Cách thay đổi thư mục dữ liệu MariaDB thành vị trí mới trên CentOS 72016-12-19
Cách cài đặt MariaDB trên CentOS 7
2016-12-01
Cách thu thập số liệu cơ sở hạ tầng với Packetbeat và ELK trên CentOS 7
2016-11-28
Cách chia sẻ tệp bằng FileRun trên CentOS 7
2016-11-21
Cách cài đặt và cấu hình Grafana để vẽ đồ thị đẹp từ Zabbix trên CentOS 7
2016-11-13
Cách sử dụng module bản đồ của Nginx trên CentOS 7
2016-10-31
Cách cài đặt Go 1.7 trên CentOS 7
2016-10-31
Cách cài đặt và cấu hình ownCloud trên CentOS 7
2016-10-31
Cách triển khai bộ đệm trình duyệt với module tiêu đề của Nginx trên CentOS 7
2016-10-31
Cách cài đặt và cấu hình Sphinx trên CentOS 7
2016-09-20
 

