Thứ sáu, 22/07/2016 | 00:00 GMT+7

Cách cài đặt và cấu hình Ansible trên Ubuntu 16.04

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.

Trong hướng dẫn này, ta sẽ thảo luận về cách cài đặt Ansible trên server Ubuntu 16.04 và đi qua một số khái niệm cơ bản về cách sử dụng phần mềm.

Ansible hoạt động như thế nào?

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ó.

Bất kỳ máy tính nào bạn có thể quản lý thông qua SSH, bạn cũng có thể quản lý thông qua Ansible.

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.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

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. Ta sẽ sử dụng server Ubuntu 16.04 cho phần này.

Cách tốt nhất để có được Ansible cho Ubuntu là thêm PPA của dự án ( repository cá nhân) vào hệ thống của bạn. Ta có thể thêm PPA Ansible bằng lệnh lệnh sau:

  • sudo apt-add-repository ppa:ansible/ansible

Nhấn ENTER để chấp nhận bổ sung PPA.

Tiếp theo, ta cần cập nhật OS của hệ thống để nó biết các gói có sẵn trong PPA. Sau đó, ta có thể cài đặt phần mềm:

  • sudo apt-get update
  • sudo apt-get install ansible

Như ta đã đề cập ở trên, Ansible chủ yếu giao tiếp với các client thông qua SSH. Mặc dù nó chắc chắn có khả năng xử lý xác thực SSH dựa trên password , nhưng SSH key giúp giữ mọi thứ đơn giản. Bạn có thể làm theo hướng dẫn được liên kết trong yêu cầu để cài đặt SSH key nếu bạn chưa làm.

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 nano /etc/ansible/hosts

Bạn sẽ thấy một file có rất nhiều cấu hình mẫu, không có cấu hình nào thực sự hoạt động với ta vì các server này đã được tạo thành. Vì vậy, để bắt đầu, ta hãy comment tất cả các dòng trong file này bằng cách thêm dấu “#” trước mỗi dòng.

Ta sẽ giữ các ví dụ này trong file để giúp ta cấu hình nếu ta muốn triển khai các tình huống phức tạp hơn trong tương lai.

Sau khi tất cả các dòng được comment , ta có thể bắt đầu thêm server thực tế của bạn .

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:

Tệp server lưu trữ mẫu
[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 đó.

Vì vậy, trong kịch bản của ta , ta đang tưởng tượng rằng ta có ba server mà ta sẽ kiểm soát bằng Ansible. Các server này 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 nếu bạn đã cài đặt đúng. Ta sẽ giả định địa chỉ IP của server của ta là 192.0.2.1 , 192.0.2.2192.0.2.3 . Ta sẽ cài đặt điều này để ta có thể gọi chúng riêng lẻ dưới dạng host1 , host2host3 hoặc dưới dạng một group là servers .

Đây là khối mà ta nên thêm vào file server của bạn để thực hiện điều này:

[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ờ.

Với cài đặt hiện tại của ta , nếu ta cố gắng kết nối với bất kỳ server nào trong số này bằng Ansible, lệnh sẽ không thành công (giả sử bạn không hoạt động với quyền user root ). Điều này là do SSH key của bạn được nhúng cho user root trên hệ thống từ xa và Ansible theo mặc định sẽ cố gắng kết nối với quyền là user hiện tại của bạn. Một nỗ lực kết nối sẽ gặp lỗi này:

Lỗi kết nối rõ ràng
host1 | UNREACHABLE! => {     "changed": false,     "msg": "Failed to connect to the host via ssh.",     "unreachable": true } 

Trên server Ansible, ta đang sử dụng một user có tên là demo . Ansible sẽ cố gắng kết nối với từng server bằng ssh demo@server . Điều này sẽ không hoạt động nếu user demo không ở trên hệ thống từ xa.

Ta có thể tạo một file thông báo cho tất cả các server trong group “ server ” kết nối bằng cách sử dụng user root .

Để làm điều này, ta sẽ tạo một folder trong cấu trúc cấu hình group_vars được gọi là 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 mkdir /etc/ansible/group_vars
  • sudo nano /etc/ansible/group_vars/servers

Ta có thể đặt cấu hình của ta ở đây. 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 đó.

/ etc / ansible / group_vars / server
--- ansible_ssh_user: root 

Lưu file này khi bạn hoàn tất.

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
Ping kết quả
host1 | 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ó.

"Tất cả" nghĩa là tất cả các server . Ta có thể dễ dàng chỉ định một group :

  • ansible -m ping servers

Ta cũng có thể chỉ định một server riêng lẻ:

  • ansible -m ping host1

Ta có thể chỉ định nhiều server bằng cách tách chúng bằng dấu hai chấm:

  • ansible -m ping host1:host2

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.

Mô-đun ping không thực sự nhận bất kỳ đối số nào, nhưng ta có thể thử một lệnh khác để xem cách hoạt động. Ta chuyển các đối số vào một tập lệnh bằng lệnh -a .

Mô-đun “shell” cho phép ta gửi 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
Đầu ra vỏ
host1 | 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. Ta đã xác minh Ansible có thể giao tiếp với từng server và ta đã 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. Ta đã cài đặt 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, nhưng vấn đề nặng nề sẽ được thực hiện trong một bài viết trong tương lai, khi ta đề cập đến cách sử dụng Playbook để tự động cấu hình máy tính từ xa của bạn.


Tags:

Các tin liên quan

Cách cài đặt và cấu hình Sphinx trên Ubuntu 16.04
2016-07-22
Cách triển khai ứng dụng Node.js và MongoDB với Rancher trên Ubuntu 14.04
2016-07-18
Cách cài đặt và sử dụng BaasBox trên Ubuntu 14.04
2016-07-13
Cách thiết lập notebook Jupyter để chạy IPython trên Ubuntu 16.04
2016-06-15
Cách cài đặt Go 1.6 trên Ubuntu 16.04
2016-05-19
Cách cài đặt và sử dụng Composer trên Ubuntu 16.04
2016-05-17
Cách tập trung log với Rsyslog, Logstash và Elasticsearch trên Ubuntu 14.04
2016-05-16
Cách cài đặt và cấu hình Elasticsearch trên Ubuntu 16.04
2016-05-04
Cách cài đặt và cấu hình VNC trên Ubuntu 16.04
2016-04-26
Cách thêm không gian swap trên Ubuntu 16.04
2016-04-25