Cách cài đặt và sử dụng Ansible trên Debian 11

theanh

Administrator
Nhân viên
Ansible là một công cụ quản lý cấu hình miễn phí, mã nguồn mở và là một trong những công cụ quản lý cấu hình phổ biến nhất. Đây là một công cụ đa nền tảng giúp đơn giản hóa điện toán đám mây, quản lý cấu hình, cài đặt gói và cấu hình dịch vụ. Công cụ này sử dụng tệp YAML chứa các bước mà người dùng muốn chạy trên một máy cụ thể. Với Ansible, bạn có thể cấu hình và quản lý nhiều máy chủ chỉ bằng một lệnh. Ansible là một giải pháp thay thế cho các công cụ quản lý cấu hình khác như Chef và Puppet.

Trong bài viết này, tôi sẽ chỉ cho bạn cách cài đặt và sử dụng công cụ quản lý cấu hình Ansible trên Debian 11.

Điều kiện tiên quyết​

  • Ba máy chủ chạy Debian 11.
  • Mật khẩu gốc được cấu hình trên mỗi máy chủ.
Với mục đích của hướng dẫn này, chúng tôi sẽ sử dụng thiết lập sau:
  • Ansible Controler - 192.168.10.9
  • Ansible Hosts - 192.168.10.10, 192.168.10.11

Cài đặt Ansible trên Debian 11​

Theo mặc định, gói Ansible không được bao gồm trong kho lưu trữ mặc định của Debian. Có hai cách để cài đặt Ansible trên Debian 11.
  1. Sử dụng lệnh APT
  2. Sử dụng lệnh PIP

Cài đặt Ansible bằng APT​

Trước tiên, bạn sẽ cần cài đặt một số phần phụ thuộc vào hệ thống của mình. Bạn có thể cài đặt các phụ thuộc cần thiết bằng lệnh sau:
Mã:
apt-get install gnupg2 curl wget -y
Sau khi cài đặt xong tất cả các phụ thuộc, hãy chỉnh sửa APT source.list và thêm kho lưu trữ Ansible:
Mã:
nano /etc/apt/sources.list
Thêm dòng sau:
Mã:
deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main
Lưu và đóng tệp khi bạn hoàn tất, sau đó thêm khóa GPG Ansible bằng lệnh sau:
Mã:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
Bạn sẽ thấy đầu ra sau:
Mã:
Cảnh báo: apt-key đã lỗi thời. Thay vào đó, hãy quản lý các tệp vòng khóa trong trusted.gpg.d (xem apt-key(8)).Đang thực thi: /tmp/apt-key-gpghome.lFEjztT9TY/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367gpg: khóa 93C4A3FD7BB9C367: khóa công khai "Launchpad PPA cho Ansible, Inc." đã nhậpgpg: Tổng số đã xử lý: 1gpg: đã nhập: 1
Bây giờ, hãy cập nhật kho lưu trữ và cài đặt Ansible bằng lệnh sau:
Mã:
apt-get update
apt-get install ansible -y
Sau khi Ansible được cài đặt, hãy xác minh phiên bản Ansible bằng lệnh sau:
Mã:
ansible --version
Bạn sẽ nhận được kết quả sau:
Mã:
ansible 2.10.8 config file = None configure module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible executable location = /usr/bin/ansible python version = 3.9.2 (mặc định, 28/02/2021, 17:03:44) [GCC 10.2.1 20210110]

Cài đặt Ansible bằng PIP​

Trước tiên, bạn sẽ cần cài đặt Python và PIP vào hệ thống của mình. Bạn có thể cài đặt bằng lệnh sau:
Mã:
apt-get install python3 python3-pip -y
Sau khi cài đặt hoàn tất, hãy sử dụng lệnh pip để cài đặt Ansible như hiển thị bên dưới:
Mã:
pip install ansible

Cài đặt sshpass​

Sshpass là một công cụ dòng lệnh cho phép bạn cung cấp mật khẩu bằng lệnh SSH. Tại đây, chúng ta sẽ sử dụng sshpass trên nút điều khiển Ansible với Ansible để xác thực máy chủ từ xa.

Bạn có thể cài đặt sshpass bằng lệnh sau:
Mã:
apt-get install sshpass -y
Tiếp theo, kết nối với máy chủ từ xa ansible đầu tiên để thêm dấu vân tay SSH vào tệp known_hosts của bạn:
Mã:
ssh [emailprotected]
Bạn sẽ được yêu cầu cung cấp mật khẩu SSH như hiển thị bên dưới:
Mã:
Không thể thiết lập tính xác thực của máy chủ '192.168.10.10 (192.168.10.10)'.Dấu vân tay khóa ECDSA là SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o.Bạn có chắc chắn muốn tiếp tục kết nối (có/không/[dấu vân tay]) không? cóCảnh báo: Đã thêm vĩnh viễn '192.168.10.10' (ECDSA) vào danh sách các máy chủ đã biết.Mật khẩu:
Cung cấp mật khẩu của bạn và nhấn Enter để thêmdấu vân tay SSH.

Tiếp theo, kết nối với máy chủ từ xa ansible thứ hai để thêm dấu vân tay SSH vào tệp known_hosts của bạn:
Mã:
ssh [emailprotected]
Bạn sẽ được yêu cầu cung cấp mật khẩu SSH như hiển thị bên dưới:
Mã:
Không thể thiết lập tính xác thực của máy chủ '192.168.10.11 (192.168.10.11)'.Dấu vân tay khóa ECDSA là SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o.Bạn có chắc chắn muốn tiếp tục kết nối không (có/không/[dấu vân tay])? cóCảnh báo: Đã thêm vĩnh viễn '192.168.10.11' (ECDSA) vào danh sách máy chủ đã biết.Mật khẩu:
Cung cấp mật khẩu của bạn và nhấn Enter.

Bây giờ bạn có thể sử dụng lệnh sshpass để xác minh kết nối SSH:
Mã:
sshpass -p yourpassword ssh [emailprotected]

Tạo tệp kiểm kê máy chủ Ansible​

Tiếp theo, bạn sẽ cần tạo tệp kiểm kê để xác định địa chỉ IP, tên người dùng, mật khẩu và cổng SSH của máy chủ từ xa:
Mã:
nano ~/.hosts
Thêm các dòng sau:
Mã:
[servers]server1 ansible_host=192.168.10.10 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22server2 ansible_host=192.168.10.11 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22
Lưu và đóng tệp.

Lưu ý: Trong tệp trên, chúng ta sẽ sử dụng IP, tên người dùng, mật khẩu và cổng SSH của máy chủ từ xa.

Làm việc với Ansible​

Ansible cung cấp rất nhiều mô-đun giúp bạn quản lý máy chủ từ xa.

Cú pháp cơ bản để chạy Ansible như được hiển thị bên dưới:
Mã:
ansible -i [inventory_file] -m [module] [host]
Hãy xác minh kết nối ping tới tất cả các máy chủ:
Mã:
ansible -i ~/.hosts -m ping all
Nếu mọi thứ ổn, bạn sẽ nhận được kết quả đầu ra sau:
Mã:
server2 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong"}server1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong"}
Nếu bạn muốn xác minh kết nối ping của máy chủ duy nhất 1, hãy chạy lệnh sau:
Mã:
ansible -i ~/.hosts -m ping server1
Bạn sẽ nhận được kết quả sau:
Mã:
server1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong"}
Bạn có thể sử dụng mô-đun shell để chạy tất cả các lệnh trên máy chủ từ xa.

Ví dụ: để chạy lệnh "free -m" trên máy chủ 2, hãy chạy lệnh sau:
Mã:
ansible -i ~/.hosts -m shell -a "free -m" server2
Bạn sẽ thấy đầu ra sau:
Mã:
server2 | CHANGED | rc=0 >> tổng số buff/cache chia sẻ miễn phí đã sử dụng có sẵnMem: 1982 128 491 2 1363 1669Hoán đổi: 0 0 0
Để chạy lệnh "df -h" trên server2, hãy chạy lệnh sau:
Mã:
ansible -i ~/.hosts -m shell -a "df -h" server2
Bạn sẽ nhận được kết quả sau:
Mã:
server2 | CHANGED | rc=0 >>Kích thước hệ thống tệp Đã sử dụng Có sẵn Sử dụng% Đã gắn kết trênudev 976M 0 976M 0% /devtmpfs 199M 404K 198M 1% /run/dev/sda1 50G 2,4G 45G 5% /tmpfs 992M 124K 992M 1% /dev/shmtmpfs 5,0M 0 5,0M 0% /run/locktmpfs 199M 0 199M 0% /run/user/0
Ansible cung cấp một mô-đun apt để cài đặt bất kỳ gói nào vào máy chủ từ xa.

Để cài đặt gói Nginx trên máy chủ1, hãy chạy lệnh sau:
Mã:
ansible -i ~/.hosts -m ansible.builtin.apt -a "name=nginx state=present" server1
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
server1 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "cache_update_time": 1631424599, "cache_updated": false, "changed": true, "stderr": "", "stderr_lines": [], "Đang nâng cấp nhị phân: nginx.", "Đang thiết lập nginx (1.18.0-6.1) ...", "Đang xử lý các kích hoạt cho man-db (2.9.4-2) ...", "Đang xử lý các kích hoạt cho libc-bin (2.31-13) ..." ]}
Để kiểm tra trạng thái của dịch vụ Nginx trên server1, hãy chạy lệnh sau:
Mã:
ansible -i ~/.hosts -m shell -a "systemctl status nginx" server1
Bạn sẽ nhận được đầu ra sau đây:
Mã:
server1 | ĐÃ THAY ĐỔI | rc=0 >>? nginx.service - Một máy chủ web hiệu suất cao và một máy chủ proxy ngược Đã tải: đã tải (/lib/systemd/system/nginx.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ CN 2021-09-12 05:55:36 UTC; 49 giây trước Tài liệu: man:nginx(8) Quy trình: 10761 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Quy trình: 10764 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) PID chính: 10871 (nginx) Nhiệm vụ: 2 (giới hạn: 2341) Bộ nhớ: 5,8M CPU: 54ms CGroup: /system.slice/nginx.service ??10871 nginx: tiến trình chính /usr/sbin/nginx -g daemon on; master_process on; ??10874 nginx: tiến trình công nhân12/09 05:55:36 ansible systemd[1]: Đang khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược...12/09 05:55:36 ansible systemd[1]: nginx.service: Không phân tích được PID từ tệp /run/nginx.pid: Đối số không hợp lệ12/09 05:55:36 ansible systemd[1]: Đang khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược.
Ansible cung cấp một mô-đun người dùng để tạo và quản lý người dùng trên các máy chủ từ xa.

Để tạo một người dùng mới có tên user1 trên server1, hãy chạy lệnh sau:
Mã:
ansible -i ~/.hosts -m ansible.builtin.user -a "name=user1 password=yourpassword" server1
Bạn sẽ thấy thông báo sau output:
Mã:
server1 | CHANGED => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": true, "comment": "", "create_home": true, "group": 1000, "home": "/home/user1", "name": "user1", "password": "NOT_LOGGING_PASSWORD", "shell": "/bin/sh", "state": "present", "system": false, "uid": 1000}

Kết luận​

Trong bài viết này, bạn đã học cách cài đặt Ansible bằng APT và PIP. Bạn cũng đã học cách sử dụng các mô-đun Ansible khác nhau để quản lý máy chủ từ xa. Tôi hy vọng bây giờ bạn đã hiểu đủ về Ansible. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên