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.
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:
Thêm dòng sau:
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:
Bạn sẽ thấy đầu ra sau:
Bây giờ, hãy cập nhật kho lưu trữ và cài đặt Ansible bằng lệnh sau:
Sau khi Ansible được cài đặt, hãy xác minh phiên bản Ansible bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
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:
Bạn có thể cài đặt sshpass bằng lệnh sau:
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:
Bạn sẽ được yêu cầu cung cấp mật khẩu SSH như hiển thị bên dưới:
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:
Bạn sẽ được yêu cầu cung cấp mật khẩu SSH như hiển thị bên dưới:
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:
Thêm các dòng sau:
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.
Cú pháp cơ bản để chạy Ansible như được hiển thị bên dưới:
Hãy xác minh kết nối ping tới tất cả các máy chủ:
Nếu mọi thứ ổn, bạn sẽ nhận được kết quả đầu ra sau:
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:
Bạn sẽ nhận được kết quả sau:
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:
Bạn sẽ thấy đầu ra sau:
Để chạy lệnh "df -h" trên server2, hãy chạy lệnh sau:
Bạn sẽ nhận được kết quả sau:
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:
Bạn sẽ nhận được kết quả đầu ra sau:
Để kiểm tra trạng thái của dịch vụ Nginx trên server1, hãy chạy lệnh sau:
Bạn sẽ nhận được đầu ra sau đây:
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:
Bạn sẽ thấy thông báo sau output:
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ủ.
- 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.- Sử dụng lệnh APT
- 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
Mã:
nano /etc/apt/sources.list
Mã:
deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main
Mã:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
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
Mã:
apt-get update
apt-get install ansible -y
Mã:
ansible --version
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
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
Mã:
ssh [emailprotected]
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:
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]
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:
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
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 ý: 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]
Mã:
ansible -i ~/.hosts -m ping all
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"}
Mã:
ansible -i ~/.hosts -m ping server1
Mã:
server1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong"}
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
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
Mã:
ansible -i ~/.hosts -m shell -a "df -h" server2
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
Để 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
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) ..." ]}
Mã:
ansible -i ~/.hosts -m shell -a "systemctl status nginx" server1
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.
Để 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
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}