Trước khi bắt đầu, nếu bạn là người mới chưa có khái niệm về Ansible hoặc chưa cài đặt nó thì quay lại hai bài viết trước của mình nhé
Link mình để đây nhé Bài 1, Bài 2
Trong bài này chúng ta sẽ
- Tiến hành xác thực SSH giữa các server để cho Ansible có thể “điều khiển” các server đó
- Tạo một inventory mới
- Tạo một playbook
Xác thực SSH ở các máy chủ
Khái quát:
- Mình sẽ sử dụng 2 máy chủ: 10.121.46.85 (pe-dcb-01) và 10.121.46.91 (pe-dcb-02)
- Centos 7
Step 1: Tạo SSH key
Ở pe-dcb-01 (10.121.46.85), mình tạo gặp keygen như sau:
ssh-keygen -t rsa

Step 2: Copy key sang pe-dcb-02(10.121.46.91) để xác thực, lúc này từ con 01 có thể ssh thẳng sang 02
ssh-copy-id -i id_rsa.pub monitor@10.121.46.91

Tiếp tục kiểm thử, cặp key đã sử dụng được chưa, từ con 01 gõ ssh sang 02, lưu ý ở đây mình đã thực hiện 2 steps trên bằng user monitor lẫn root
ssh 10.121.46.91

File inventory để Ansible điều khiển các servers
Cách 1: Sử dụng mật khẩu
(name)_(ansbile_user)_(ansible_password)
[manager]
10.121.46.85 ansible_user=user ansible_password=password
[worker]
10.121.46.91 ansible_user=user ansible_password=password
Ngoài ra, để config cho nhiều user trong một server ta có thể tham khảo như sau:
[manager]
manager1_u1 ansible_host=10.121.46.85 ansible_user=user1 ansible_password=password
manager1_u2 ansible_host=10.121.46.85 ansible_user=user2 ansible_password=password
[worker]
worker1_u1 ansible_host=10.121.46.91 ansible_user=user1 ansible_password=password
worker1_u2 ansible_host=10.121.46.91 ansible_user=user2 ansible_password=password
Cách 2: Sử dụng SSH key
Phần chia sẻ SSH giữa các server mình đã hướng dẫn ở trên, giờ chỉnh sửa inventory
[manager_53]
local_server ansible_host=127.0.0.1 ansible_connection=local
[worker]
worker_54 ansible_host=10.121.13.54 ansible_user=root
worker_55 ansible_host=10.121.13.55 ansible_user=root
worker_56 ansible_host=10.121.13.56 ansible_user=root
Kiểm thử
Cũng giống như bài trước giờ hãy thử
ansible -m ping all
để test thử ansible đã ping được tới các máy chưa

Ngoài ra, bạn cũng có thể sử dụng các command độc lập, ví dụ mình muốn xem danh sách containers docker ps ở nhiều các servers đã cấu hình trong file inventory trên thì làm như sau:
ansible -m command -a "docker ps" all

Như hình các bạn thấy nó đã list ra được các container trong mỗi server cấu hình, thay vì bạn phải vào từng server để thực thi lệnh. Tương tự dựa trên mindset này, mình sẽ ứng dụng Ansible để triển khai deployment trong nhiều node trong bài sau.
Chúc các bạn thành công!!