Vậy là mình đã cài đặt thành công. Từ kết quả này, bạn có thể đọc được các thông tin liên quan đến môi trường, đường dẫn đến các file cấu hình của công cụ tự động hoá này.
Ansible Config
Các cấu hình của Ansible sẽ được lưu tại file /etc/ansible/ansible.cfg. Một số cài đặt mặc định quan trọng gồm:
– forks: xác định số kết nối Ansible thực hiện đồng loạt đến remote server, mặc định là 5. Giả sử nếu bạn có 10 remote server, Ansible sẽ gọi 5 kết nối đến 5 server. Sau khi hoàn tất sẽ tiếp tục gọi 5 kết nối khác đến 5 server còn lại. Bạn có thể tăng thông số này lên để tiết kiệm thời gian thực thi. Tuy nhiên việc mở quá nhiều kết nối cùng lúc sẽ ảnh hưởng đến tài nguyên trên control server. Vì vậy cần tuỳ thuộc vào tài nguyên mà thiết lập thông số này sao cho phù hợp.
– host_key_checking: Mặc định được bật (True). Điều này có nghĩa khi Ansible kết nối đến remote server qua SSH, nó sẽ kiểm tra khoá máy chủ đó (thường được lưu trong file ~/.ssh/known_hosts). Nếu khóa của remote server không khớp với thông tin đã có trong file, Ansible sẽ dừng lại và cảnh báo người dùng.
Việc bật tính năng này giúp bảo mật cao hơn, hạn chế giả mạo remote server hay tấn công Man in the middle.
Đối với hệ thống thường xuyên cập nhật khoá SSH hay trong môi trường development, bạn có thể thiết lập thành False để tắt tính năng này.
Ngoài ra còn các thông số khác liên quan đến nơi khai báo inventory, module,… mặc định của Ansible kèm với những tuỳ chọn màu sắc khi thực hiện lệnh Ansible Adhoc hay Ansible Playbook.
Mô hình triển khai
Mô hình
Hostname
OS
IP
Control Server – Ansilbe
Ubuntu
192.168.33.10
Remote Server – Server A
Ubuntu
192.168.33.20
Remote Server – Server B
Ubuntu
192.168.33.30
Khai báo inventory
Bạn cần khai báo thông tin về các remote server tại file mặc định /etc/ansible/hosts. Tuy nhiên mình sẽ tạo 1 file riêng để dễ quản lý.
Tạo file inventory-lab với cú pháp bên dưới nhằm cung cấp thông tin SSH để Ansible kết nối được đến remote server.
Trong bài viết này, mình sẽ chỉ đề cập đến SSH password, còn về SSH Key mình sẽ thực hành rõ hơn ở bài sau.
name_server: Đặt tên cho remote server để phân biệt với các servers khác
ansible_ssh_host: IP của remote server
ansible_ssh_user: User để thực hiện SSH, thông thường là user root hoặc user được cấp quyền sudo
ansible_ssh_port: Nếu sử dụng port SSH mặc định – port 22 thì không cần khai báo thông số này
ansible_ssh_pass: Password SSH
Làm quen với Ansible Ad-hoc
Ad-hoc command trong Ansible là những lệnh nhanh được sử dụng để thực hiện một tác vụ đơn lẻ mà không cần viết Playbook. Nó rất hữu ích khi bạn chỉ cần chạy một lệnh tạm thời hoặc kiểm tra nhanh trên các máy từ xa, chẳng hạn như kiểm tra kết nối, khởi động dịch vụ, hoặc sao chép file.
Cú pháp tổng quát của một lệnh ad-hoc:
ansible [group] -m [module] -a "[arguments]" -i [inventory]
[group]: Nhóm máy chủ hoặc máy đích mà bạn muốn thực thi lệnh.
-m [module]: Tên module Ansible bạn muốn sử dụng.
-a “[arguments]”: Các tham số truyền vào module.
-i [inventory]: Chỉ định file danh sách máy chủ.
Để kiểm tra kết nối đến remote hosts, bạn có thể sử dụng module Ping trong Ansible để ping đến remote servers (giống với lệnh ping IP/domain Linux)
ansible all -i inventory-lab -m ping
all: dùng để khai báo với Ansible rằng bạn sẽ thực hiện trên toàn bộ các remote servers được khai báo trong file invetory, cụ thể ở đây là file inventory-lab vừa tạo
-m ping: module ping Ansible
Có thể thấy sau khi thực hiện “ping” đến các remote servers, các remote servers này phản hồi lại control server với kết quả “pong” nhằm thông báo rằng ansible đã kết nối thành công. Đây cũng là bước đầu tiên để kiểm tra việc kết nối và khai báo từ Ansible trên control server đến remote servers. Từ đó quản trị viên sẽ thực hiện các task khác để phục vụ nhu cầu công việc.
Giờ mình sẽ thay đổi password SSH của server-B, lúc này kết quả không trả về “pong” như trước đó mà sẽ hiển thị lỗi không thể kết nối SSH đến server-B.
Như vậy đến đây bạn đã cài đặt thành công Ansible và hiểu tổng quan về công cụ này. Ở những bài viết sau, mình sẽ tập trung làm rõ hơn về các thành phần quan trọng của Ansible như inventory, module,… kết hợp với Ansible Adhoc và Ansible Playbook.