Ansible là một công cụ quản lý cấu hình được sử dụng rộng rãi được viết bằng ngôn ngữ Python giúp cấu hình một hoặc nhiều máy cùng một lúc. Ansible có thể được sử dụng để thực hiện các tác vụ sau
Bất kỳ máy nào có thể kết nối với máy từ xa trên cổng 22 đều có thể trở thành nút điều khiển. Nút điều khiển là nơi bạn có thể cài đặt Ansible và nút được quản lý sẽ được quản lý bởi các nút điều khiển.
Chúng ta hãy cùng xem cách cài đặt Ansible trên nút điều khiển.
Để cài đặt Ansible trên CentOS 7, trước tiên hãy đảm bảo rằng kho lưu trữ CentOS 7 EPEL đã được cài đặt. Thực hiện lệnh bên dưới để cài đặt kho lưu trữ epel.
Cập nhật chỉ mục gói hệ thống bằng cách thực hiện lệnh cập nhật bên dưới.
Sau khi kho lưu trữ được cài đặt, hãy cài đặt Ansible bằng trình quản lý gói yum. Thực hiện lệnh được đề cập bên dưới để cài đặt Ansible.
Kiểm tra xem Ansible đã được cài đặt đúng cách chưa và phiên bản của nó là gì.
Sau khi python được cài đặt, hãy cài đặt kho lưu trữ EPEL bằng cách thực hiện lệnh bên dưới.
Cập nhật chỉ mục gói hệ thống bằng cách thực hiện lệnh cập nhật bên dưới.
Bây giờ chúng ta đã sẵn sàng cài đặt Ansible. Thực hiện lệnh bên dưới để cài đặt Ansible.
Kiểm tra xem Ansible đã được cài đặt đúng cách chưa và phiên bản của nó là gì.
Để cài đặt Ansible trong Ubuntu, trước tiên hãy cài đặt kho lưu trữ bằng cách thực hiện lệnh bên dưới.
Cập nhật chỉ mục gói hệ thống bằng cách thực hiện lệnh cập nhật bên dưới.
Bây giờ, hãy cài đặt Ansible.
Kiểm tra xem Ansible đã được cài đặt đúng cách chưa và phiên bản của nó là bao nhiêu.
Đối với CentOS 7 trở xuống:
Đối với CentOS 8:
Đối với Ubuntu và Debian:
Vì chúng ta đã cài đặt python và pip, hãy thực hiện lệnh bên dưới trên bất kỳ hệ điều hành nào để cài đặt Ansible.
Kiểm tra xem Ansible đã được cài đặt đúng cách chưa và phiên bản của nó là gì.
Lưu ý: Không phải lúc nào cũng cần sử dụng tệp hosts để kết nối với các nút được quản lý. Nhưng sau đó, chúng ta cần sử dụng IP máy chủ hoặc tên máy chủ của nút được quản lý trong khi thực hiện mọi lệnh.
Tạo tệp (nếu tệp chưa có) với quyền root bằng cách thực hiện lệnh bên dưới:
Trước khi ghi vào tệp, hãy cùng xem và hiểu tệp samplehosts:
Một tệp hosts phải tuân theo cú pháp trên. Hãy cùng xem từng tham số.
[group_name]: Tham số này sẽ tạo một nhóm. Tất cả các địa chỉ IP hoặc tên máy chủ của nút được quản lý trong tham số group_name sẽ nằm trong cùng một nhóm. Ví dụ: nếu chúng ta có nhiều máy chủ web trong cơ sở hạ tầng của mình, chúng ta có thể thêm tất cả các địa chỉ IP hoặc tên máy chủ của nút được quản lý tại đây.
alias: Tham số này được sử dụng để cung cấp cho máy chủ nút được quản lý một bí danh để xác định máy chủ nút được quản lý. Ví dụ, nếu chúng ta có nhiều máy chủ web trong cơ sở hạ tầng của mình, chúng ta có thể cung cấp host1, host2, host3 làm bí danh. Ưu điểm chính của việc cung cấp bí danh là khi chúng ta thực thi lệnh Ansible để thay đổi cấu hình của một máy chủ duy nhất, chúng ta có thể sử dụng bí danh để xác định và thực hiện tác vụ cần thiết trên máy chủ.
ansible_ssh_host=your_node_server_ip: Tham số này sẽ trỏ bí danh đến địa chỉ IP hoặc tên máy chủ của một nút được quản lý.
Chúng ta sẽ sử dụng CentOS 8 làm nút được kiểm soát với Ansible. Như đã đề cập ở trên, Ansible sử dụng cổng 22 của máy chủ từ xa để kết nối.
Chúng tôi sẽ giả sử rằng địa chỉ IP của máy chủ nút được quản lý CentOS của chúng tôi là 192.168.0.2, 192.168.0.3 và 192.168.0.4.
Để cho phép nút điều khiển Ansible giao tiếp với các nút được quản lý, chúng tôi phải xác nhận rằng các nút được quản lý có thể truy cập được trên cổng 22, đây là cổng SSH. Thực hiện lệnh bên dưới để xác nhận kết nối từng cái một trên cả ba nút được quản lý từ bộ điều khiển.
Bạn sẽ được nhắc nhập mật khẩu của người dùng root của tất cả các nút. Ansible hoạt động rất trơn tru nếu bạn đã cấu hình xác thực không cần mật khẩu giữa Ansiblecontroller và các nút được quản lý. Với các tham số khác nhau trong lệnh Ansible, xác thực bằng mật khẩu cũng có thể hoạt động.
Vì chúng ta đã cấu hình kết nối ssh giữa Ansiblecontroller và các nút được quản lý, hãy cấu hình tệp hosts để kết nối với tất cả các nút được quản lý. Như đã đề cập trước đó, chúng ta có thể thêm nhiều bí danh máy chủ nút trong một nhóm duy nhất. Trong trường hợp này, hãy thêm cả ba nút và gán một bí danh tương ứng là host1, host2 và host3. Tệp hosts của chúng ta sẽ trông như bên dưới sau khi thêm tất cả các chi tiết nút được quản lý. Thực hiện lệnh bên dưới để chỉnh sửa tệp hosts mà chúng ta đã tạo trước đó.
Mở tệp với quyền root bằng cách thực hiện lệnh bên dưới:
Hãy thêm cấu hình được đề cập bên dưới vào tệp hosts.
Tại đây, chúng ta đã thêm tất cả các IP và bí danh của nút được quản lý vào một nhóm có tên là node_servers.
Bây giờ, hãy thử kết nối với các nút được quản lý từ Ansiblecontroller.
Lệnh trên đang sử dụng lệnh ping mô-đun để kết nối với nhóm "node_servers" mà chúng tôi đã định nghĩa trong tệp hosts ở trên.
Bạn có thể gặp lỗi vì nhiều lý do khác nhau.
Chúng ta hãy nói cụ thể với Ansible rằng nó phải kết nối tới các nút được quản lý trong nhóm "node_servers" với người dùng james. Tạo thư mục group_vars như được đề cập bên dưới.
Các tệp trong thư mục này được sử dụng cụ thể để cấu hình các biến mà chúng ta có thể sử dụng trong sổ tay hướng dẫn Ansible của mình.
Chúng ta hãy tạo một tệp biến cho thiết lập của mình bằng cách thực thi lệnh bên dưới:
Thêm mã bên dưới vào tệp:
Tệp YML luôn bắt đầu bằng "---" ở dòng đầu tiên. Chúng ta hãy lưu và đóng tệp này khi bạn hoàn tất. Bây giờ Ansible sẽ luôn sử dụng người dùng james[/b] cho nhóm node_servers, bất kể người dùng hiện tại mà bạn đang sử dụng để chạy lệnh là ai.
Ansible sẽ trả về kết quả như sau:
host3 | THÀNH CÔNG => {
Đây là bài kiểm tra cơ bản để đảm bảo rằng Ansible có kết nối đến các nút được quản lý của nó.
- Cấu hình từ đầu một hoặc nhiều nút
- Triển khai
- Thay đổi cấu hình
- Vá lỗi
- Quản lý dịch vụ
- và nhiều tác vụ khác
Bất kỳ máy nào có thể kết nối với máy từ xa trên cổng 22 đều có thể trở thành nút điều khiển. Nút điều khiển là nơi bạn có thể cài đặt Ansible và nút được quản lý sẽ được quản lý bởi các nút điều khiển.
Chúng ta hãy cùng xem cách cài đặt Ansible trên nút điều khiển.
Cài đặt Ansible trên CentOS 7:
Vì Python là điều kiện tiên quyết duy nhất để cài đặt Ansible, hãy cài đặt Python bằng cách thực thi lệnh bên dưới.
Mã:
$sudo yum install python3 -y
Mã:
$sudo yum install epel-release
Mã:
$sudo yum update -y
Mã:
$sudo yum install ansible -y
Mã:
$ansible -v
Cài đặt Ansible trên CentOS 8:
Chúng ta hãy xem các bước cài đặt cho CentOS 8. Hãy cài đặt python trên CentOS 8.
Mã:
$sudo dnf install python3
Mã:
$sudo dnf installepel-release -y
Mã:
$sudo dnf update -y
Mã:
$sudo dnf install ansible -y
Mã:
$ansible -v[B][/b]
Cài đặt Ansible trên Ubuntu:
Python là gói mặc định hiện nay trong hầu hết các bản phân phối Linux. Nếu bạn chưa cài python, hãy thực hiện lệnh bên dưới để cài đặt gói python.
Mã:
$sudo apt-get install python3
Mã:
$sudo apt-add-repository ppa:ansible/ansible
Mã:
$sudo apt-get update -y
Mã:
$sudo apt-get install -y ansible
Mã:
$ansible -v[B][/b]
Cài đặt Ansible với Python PIP trên CentOS, Debian và Ubuntu:
Bất kể bạn đang sử dụng hệ điều hành nào, bạn đều có thể cài đặt Ansible bằng trình cài đặt gói python. Hãy thực hiện lệnh bên dưới để cài đặt python3-pip.Đối với CentOS 7 trở xuống:
Mã:
$sudo yum install python3 python3-pip -y
Mã:
$sudo dnf install python3 python3-pip -y
Mã:
$sudo apt-get install python3 python3-pip
Mã:
$sudo pip3 install ansible
Mã:
$ansible -v[B][/b]
Cấu hình Bộ điều khiển Ansible Máy chủ:
Chúng ta cần thiết lập tệp "hosts" trước khi có thể bắt đầu giao tiếp với các nút khác. Tệp này sẽ có tất cả IP hoặc tên máy chủ của các nút được quản lý.Lưu ý: Không phải lúc nào cũng cần sử dụng tệp hosts để kết nối với các nút được quản lý. Nhưng sau đó, chúng ta cần sử dụng IP máy chủ hoặc tên máy chủ của nút được quản lý trong khi thực hiện mọi lệnh.
Tạo tệp (nếu tệp chưa có) với quyền root bằng cách thực hiện lệnh bên dưới:
Mã:
$sudotouch /etc/ansible/hosts
Mã:
[group_name][B]alias ansible_ssh_host=your_node_server_ip
[group_name]: Tham số này sẽ tạo một nhóm. Tất cả các địa chỉ IP hoặc tên máy chủ của nút được quản lý trong tham số group_name sẽ nằm trong cùng một nhóm. Ví dụ: nếu chúng ta có nhiều máy chủ web trong cơ sở hạ tầng của mình, chúng ta có thể thêm tất cả các địa chỉ IP hoặc tên máy chủ của nút được quản lý tại đây.
alias: Tham số này được sử dụng để cung cấp cho máy chủ nút được quản lý một bí danh để xác định máy chủ nút được quản lý. Ví dụ, nếu chúng ta có nhiều máy chủ web trong cơ sở hạ tầng của mình, chúng ta có thể cung cấp host1, host2, host3 làm bí danh. Ưu điểm chính của việc cung cấp bí danh là khi chúng ta thực thi lệnh Ansible để thay đổi cấu hình của một máy chủ duy nhất, chúng ta có thể sử dụng bí danh để xác định và thực hiện tác vụ cần thiết trên máy chủ.
ansible_ssh_host=your_node_server_ip: Tham số này sẽ trỏ bí danh đến địa chỉ IP hoặc tên máy chủ của một nút được quản lý.
Chúng ta sẽ sử dụng CentOS 8 làm nút được kiểm soát với Ansible. Như đã đề cập ở trên, Ansible sử dụng cổng 22 của máy chủ từ xa để kết nối.
Chúng tôi sẽ giả sử rằng địa chỉ IP của máy chủ nút được quản lý CentOS của chúng tôi là 192.168.0.2, 192.168.0.3 và 192.168.0.4.
Để cho phép nút điều khiển Ansible giao tiếp với các nút được quản lý, chúng tôi phải xác nhận rằng các nút được quản lý có thể truy cập được trên cổng 22, đây là cổng SSH. Thực hiện lệnh bên dưới để xác nhận kết nối từng cái một trên cả ba nút được quản lý từ bộ điều khiển.
Mã:
$ssh [email protected]
Mã:
$ssh [email protected]
Mã:
$ssh [email protected]
Vì chúng ta đã cấu hình kết nối ssh giữa Ansiblecontroller và các nút được quản lý, hãy cấu hình tệp hosts để kết nối với tất cả các nút được quản lý. Như đã đề cập trước đó, chúng ta có thể thêm nhiều bí danh máy chủ nút trong một nhóm duy nhất. Trong trường hợp này, hãy thêm cả ba nút và gán một bí danh tương ứng là host1, host2 và host3. Tệp hosts của chúng ta sẽ trông như bên dưới sau khi thêm tất cả các chi tiết nút được quản lý. Thực hiện lệnh bên dưới để chỉnh sửa tệp hosts mà chúng ta đã tạo trước đó.
Mở tệp với quyền root bằng cách thực hiện lệnh bên dưới:
Mã:
$sudo vi /etc/ansible/hosts
Mã:
[node_servers]
host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4
Bây giờ, hãy thử kết nối với các nút được quản lý từ Ansiblecontroller.
Mã:
$ansible -m ping node_servers
Bạn có thể gặp lỗi vì nhiều lý do khác nhau.
- Theo mặc định, Ansible sẽ cố gắng kết nối với managednode bằng tên người dùng hiện tại của bạn nếu bạn không cung cấp tên người dùng. Nếu người dùng đó không tồn tại trên máy chủ node, bạn sẽ nhận được lỗi bên dưới.
- Nếu cổng ssh 22 không mở để kết nối trên các nút được quản lý. (Như đã đề cập trước đó, Ansible kết nối trên cổng ssh)
- Nếu IP trong tệp hosts không chính xác.
Mã:
host1 | UNREACHABLE! => {
"changed": false,
"msg": "Không thể kết nối tới máy chủ qua ssh.",
"unreachable": true
}
Mã:
host2 | UNREACHABLE! => {
"changed": false,
"msg": "Không thể kết nối tới máy chủ qua ssh.",
"unreachable": true
}
Mã:
host3 | UNREACHABLE! => {
"changed": false,
"msg": "Không thể kết nối tới máy chủ qua ssh.",
"unreachable": true
}
Chúng ta hãy nói cụ thể với Ansible rằng nó phải kết nối tới các nút được quản lý trong nhóm "node_servers" với người dùng james. Tạo thư mục group_vars như được đề cập bên dưới.
Mã:
$sudo mkdir /etc/ansible/group_vars
Chúng ta hãy tạo một tệp biến cho thiết lập của mình bằng cách thực thi lệnh bên dưới:
Mã:
$sudovim /etc/ansible/group_vars/node_servers.yml
Thêm mã bên dưới vào tệp:
Mã:
---
ansible_ssh_user: james
Kiểm tra kết nối của nút được quản lý:
Bây giờ chúng ta đã thiết lập máy chủ và có đủ thông tin cấu hình để kết nối thành công với các nút được quản lý, chúng ta có thể thử lệnh đã chạy trước đó.
Mã:
[B]$ansible -m ping servers[/b]
Mã:
host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Mã:
host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}