Thứ năm, 16/04/2020 | 00:00 GMT+7

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

Hệ thống quản lý cấu hình được thiết kế để hợp lý hóa quá trình kiểm soát số lượng lớn server , dành cho administrator và group vận hành. 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 công cụ quản lý cấu hình phổ biến dành cho các hệ thống Linux, chẳng hạn như ChefPuppet , nhưng những công cụ 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ó cung cấp một kiến trúc đơn giản không yêu cầu cài đặt phần mềm đặc biệt trên các node , sử dụng SSH để thực hiện các việc tự động hóa và các file YAML để xác định chi tiết cấp phép.

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

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

Ansible hoạt động bằng cách cấu hình các client , được gọi là các node được quản lý , từ một máy tính đã cài đặt và cấu hình các thành phần Ansible, sau đó được gọi là nút điều khiển Ansible .

Nó giao tiếp qua các kênh SSH bình thường để lấy thông tin từ các hệ thống 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ó. Điều này nghĩa là 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 , cho phép bạn mở rộng các chức năng của hệ thống chính để đối phó với 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 các server thông qua các công cụ dòng lệnh hoặc các tập lệnh cấu hình của nó, được gọi là Playbook.

Yêu cầu

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

  • Một nút điều khiển Ansible : Nút điều khiển Ansible là máy ta sẽ sử dụng để kết nối và điều khiển các server Ansible qua SSH. Nút điều khiển Ansible của bạn có thể là máy local của bạn hoặc một server dành riêng để chạy Ansible, mặc dù hướng dẫn này giả định nút điều khiển của bạn là hệ thống Ubuntu 18.04. Đảm bảo rằng nút điều khiển có:

    • User không phải root có quyền sudo. Để cài đặt điều này, bạn có thể làm theo Bước 2 và 3 của Hướng dẫn cài đặt server ban đầu cho Ubuntu 18.04 của ta . Tuy nhiên, xin lưu ý nếu bạn đang sử dụng server từ xa làm nút Ansible Control của bạn , bạn nên làm theo từng bước của hướng dẫn này. Làm như vậy sẽ cấu hình firewall trên server với ufw và cho phép truy cập bên ngoài vào profile user không phải root của bạn, cả hai điều này sẽ giúp giữ an toàn cho server từ xa.
    • Cặp SSH key được liên kết với user này. Để cài đặt điều này, bạn có thể làm theo Bước 1 trong hướng dẫn của ta về Cách cài đặt SSH key trên Ubuntu 18.04 .
  • Một hoặc nhiều Server Ansible : Server Ansible là bất kỳ máy nào mà nút điều khiển Ansible của bạn được cấu hình để tự động hóa. Hướng dẫn này giả định server Ansible của bạn là server Ubuntu 18.04 từ xa. Đảm bảo mỗi server Ansible có:

    • Chìa SSH key công cộng điều khiển nút Ansible của bổ sung vào authorized_keys của một người sử dụng hệ thống. Thành viên này có thể là gốc hoặc một user bình thường với quyền sudo. Để cài đặt điều này, bạn có thể làm theo Bước 2 của Cách cài đặt SSH key trên Ubuntu 18.04 .

Bước 1 - Cài đặt Ansible

Để bắt đầu sử dụng Ansible như một phương tiện quản lý cơ sở hạ tầng server của bạn, bạn cần cài đặt phần mềm Ansible trên máy sẽ đóng role là nút điều khiển Ansible.

Từ nút điều khiển của bạn, hãy chạy lệnh sau để bao gồm PPA của dự án chính thức ( repository cá nhân) trong danh sách các nguồn của hệ thống:

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

Nhấn ENTER khi được yêu cầu chấp nhận bổ sung PPA.

Tiếp theo, cập nhật OS hệ thống của bạn để hệ thống biết các gói có sẵn trong PPA mới được bao gồm:

  • sudo apt update

Sau bản cập nhật này, bạn có thể cài đặt phần mềm Ansible với:

  • sudo apt install ansible

Nút điều khiển Ansible của bạn hiện có tất cả phần mềm cần thiết để quản lý server của bạn. Tiếp theo, ta sẽ xem xét cách thêm server của bạn vào file khoảng không quảng cáo của nút điều khiển để nút có thể kiểm soát chúng.

Bước 2 - Cài đặt file kiểm kê

Tệp khoảng không quảng cáo chứa thông tin về các server mà bạn sẽ quản lý bằng Ansible. Bạn có thể đưa vào bất kỳ đâu từ một đến vài trăm server trong file kiểm kê của bạn và các server có thể được tổ chức thành các group và group con. Tệp khoảng không quảng cáo cũng thường được sử dụng để đặt các biến sẽ chỉ hợp lệ cho các server hoặc group cụ thể, để được sử dụng trong sách phát và mẫu. Một số biến cũng có thể ảnh hưởng đến cách chạy playbook, chẳng hạn như biến ansible_python_interpreter mà ta sẽ thấy trong giây lát.

Để chỉnh sửa nội dung của khoảng không quảng cáo Ansible mặc định của bạn, hãy mở file /etc/ansible/hosts bằng editor mà bạn chọn, trên Ansible Control Node:

  • sudo nano /etc/ansible/hosts

Lưu ý : một số cài đặt Ansible sẽ không tạo file kiểm kê mặc định. Nếu file không tồn tại trong hệ thống của bạn, bạn có thể tạo file mới tại /etc/ansible/hosts hoặc cung cấp đường dẫn khoảng không quảng cáo tùy chỉnh bằng cách sử dụng tham số -i khi chạy lệnh và playbook.

Tệp khoảng không quảng cáo mặc định được cung cấp bởi cài đặt Ansible chứa một số ví dụ mà bạn có thể sử dụng làm tài liệu tham khảo để cài đặt khoảng không quảng cáo của bạn . Ví dụ sau xác định một group có tên [servers] với ba server khác nhau trong đó, mỗi server được xác định bằng alias tùy chỉnh: server1 , server2server3 . Đảm bảo thay thế các IP được đánh dấu bằng địa chỉ IP của các server Ansible của bạn.

/ etc / ansible / hosts
[servers] server1 ansible_host=203.0.113.111 server2 ansible_host=203.0.113.112 server3 ansible_host=203.0.113.113  [all:vars] ansible_python_interpreter=/usr/bin/python3 

Group con all:vars đặt thông số server ansible_python_interpreter sẽ hợp lệ cho tất cả các server có trong repository ảng không quảng cáo này. Tham số này đảm bảo server từ xa sử dụng file thực thi /usr/bin/python3 Python 3 thay vì /usr/bin/python (Python 2.7), không có trên các version Ubuntu gần đây.

Khi bạn hoàn tất, hãy lưu file bằng cách nhấn CTRL+X rồi nhấn YENTER để xác nhận các thay đổi .

Khi nào bạn muốn kiểm tra khoảng không quảng cáo của bạn , bạn có thể chạy:

  • ansible-inventory --list -y

Bạn sẽ thấy kết quả tương tự như thế này, nhưng chứa cơ sở hạ tầng server của bạn như được xác định trong file khoảng không quảng cáo của bạn:

Output
all: children: servers: hosts: server1: ansible_host: 203.0.113.111 ansible_python_interpreter: /usr/bin/python3 server2: ansible_host: 203.0.113.112 ansible_python_interpreter: /usr/bin/python3 server3: ansible_host: 203.0.113.113 ansible_python_interpreter: /usr/bin/python3 ungrouped: {}

Đến đây bạn đã cấu hình file khoảng không quảng cáo của bạn , bạn có mọi thứ bạn cần để kiểm tra kết nối với các server Ansible của bạn .

Bước 3 - Kiểm tra kết nối

Sau khi cài đặt file khoảng không quảng cáo để bao gồm các server của bạn, đã đến lúc kiểm tra xem Ansible có thể kết nối với các server này và chạy lệnh qua SSH hay không.

Đối với hướng dẫn này, ta sẽ sử dụng account gốc Ubuntu vì đó thường là account duy nhất có sẵn theo mặc định trên các server mới được tạo. Nếu server Ansible của bạn đã có user sudo thông thường được tạo, bạn nên sử dụng account đó thay thế.

Bạn có thể sử dụng đối số -u để chỉ định user hệ thống từ xa. Khi không được cung cấp, Ansible sẽ cố gắng kết nối với quyền là user hệ thống hiện tại của bạn trên nút điều khiển.

Từ máy local của bạn hoặc nút điều khiển Ansible, hãy chạy:

  • ansible all -m ping -u root

Lệnh này sẽ sử dụng mô-đun ping hợp của Ansible để chạy kiểm tra kết nối trên tất cả các node từ khoảng không quảng cáo mặc định của bạn, kết nối dưới dạng root . Mô-đun ping sẽ kiểm tra:

  • nếu server có thể truy cập được;
  • nếu bạn có thông tin đăng nhập SSH hợp lệ;
  • nếu server có thể chạy module Ansible bằng Python.

Bạn sẽ nhận được kết quả tương tự như sau:

Output
server1 | SUCCESS => { "changed": false, "ping": "pong" } server2 | SUCCESS => { "changed": false, "ping": "pong" } server3 | SUCCESS => { "changed": false, "ping": "pong" }

Nếu đây là lần đầu tiên bạn kết nối với các server này qua SSH, bạn cần xác nhận tính xác thực của các server mà bạn đang kết nối qua Ansible. Khi được yêu cầu , hãy nhập yes và sau đó nhấn ENTER để xác nhận.

Khi bạn nhận được phản hồi "pong" từ server , điều đó nghĩa là bạn đã sẵn sàng chạy các lệnh Ansible và sách phát trên server đó.

Lưu ý : Nếu bạn không thể nhận lại phản hồi thành công từ server của bạn , hãy xem Hướng dẫn Trang tính Cheat Ansible của ta để biết thêm thông tin về cách chạy các lệnh Ansible với các tùy chọn kết nối khác nhau.

Bước 4 - Chạy lệnh Ad-Hoc (Tùy chọn)

Sau khi xác nhận nút điều khiển Ansible của bạn có thể giao tiếp với server của bạn, bạn có thể bắt đầu chạy các lệnh đặc biệt và sách phát trên server của bạn .

Bất kỳ lệnh nào bạn thường thực thi trên server từ xa qua SSH đều có thể được chạy với Ansible trên các server được chỉ định trong file khoảng không quảng cáo của bạn. Ví dụ: bạn có thể kiểm tra việc sử dụng đĩa trên tất cả các server với:

  • ansible all -a "df -h" -u root
Output
server1 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 798M 624K 798M 1% /run /dev/vda1 155G 2.3G 153G 2% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 798M 0 798M 0% /run/user/0 server2 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 395M 608K 394M 1% /run /dev/vda1 78G 2.2G 76G 3% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 395M 0 395M 0% /run/user/0 ...

Lệnh df -h được tô sáng có thể được thay thế bằng bất kỳ lệnh nào bạn muốn.

Bạn cũng có thể thực thi các module Ansible thông qua các lệnh đặc biệt, tương tự như những gì ta đã thực hiện trước đây với module ping để kiểm tra kết nối. Ví dụ: đây là cách ta có thể sử dụng module apt để cài đặt version vim mới nhất trên tất cả các server trong repository của bạn:

  • ansible all -m apt -a "name=vim state=latest" -u root

Bạn cũng có thể nhắm đến các server riêng lẻ, cũng như các group và group con, khi chạy các lệnh Ansible. Ví dụ: đây là cách bạn kiểm tra uptime của mọi server trong group servers :

  • ansible servers -a "uptime" -u root

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

  • ansible server1:server2 -m ping -u root

Để biết thêm thông tin về cách sử dụng Ansible, bao gồm cách thực thi sách phát để tự động cài đặt server , bạn có thể xem Hướng dẫn Tham khảo Ansible của ta .

Kết luận

Trong hướng dẫn này, bạn đã cài đặt Ansible và cài đặt file khoảng không quảng cáo để thực hiện các lệnh đặc biệt từ Ansible Control Node.

Khi bạn đã xác nhận bạn có thể kết nối và kiểm soát cơ sở hạ tầng của bạn từ máy điều khiển Ansible trung tâm, bạn có thể thực thi bất kỳ lệnh hoặc playbook nào bạn muốn trên các server đó. Đối với các server mới, sách chơi cộng đồng Cài đặt Server Ban đầu là một điểm khởi đầu tốt. Bạn cũng có thể tìm hiểu cách viết sách phát của riêng mình với hướng dẫn của ta Quản lý cấu hình 101: Viết Playbook Ansible .

Để biết thêm thông tin về cách sử dụng Ansible, hãy xem Hướng dẫn Bảng Cheat Ansible của ta .


Tags:

Các tin liên quan

Cách cài đặt và cấu hình Ansible trên Ubuntu 18.04 [Quickstart]
2020-04-16
Cách cài đặt Nagios 4 và theo dõi server của bạn trên Ubuntu 18.04
2020-04-12
Cách cài đặt và cấu hình SimpleSAMLphp để Xác thực SAML trên Ubuntu 18.04
2020-04-02
Cách sử dụng Vuls làm máy quét lỗ hổng bảo mật trên Ubuntu 18.04
2020-04-01
Cách tạo người dùng mới hỗ trợ Sudo trên Ubuntu 18.04 [Quickstart]
2020-03-23
Cách cài đặt và cấu hình SNMP Daemon và Client trên Ubuntu 18.04
2020-03-17
Cách lưu trữ một trang web với Caddy trên Ubuntu 18.04
2020-03-13
Cách sử dụng nsh để chạy các lệnh từ xa an toàn trên Ubuntu 18.04
2020-03-04
Cách đóng gói và xuất bản ứng dụng Snap trên Ubuntu 18.04
2020-02-25
Cách thiết lập Nền tảng Eclipse Theia Cloud IDE trên Ubuntu 18.04 [Khởi động nhanh]
2020-02-10