Cách cài đặt và cấu hình Ansible trên CentOS 7
Hệ thống quản lý cấu hình được thiết kế để giúp administrator và group vận hành dễ dàng kiểm soát số lượng lớn server . Chúng cho phép bạn điều khiển nhiều hệ thống khác nhau theo cách tự động từ một vị trí trung tâm. Mặc dù có nhiều hệ thống quản lý cấu hình phổ biến dành cho hệ thống Linux, chẳng hạn như Chef và Puppet, nhưng những hệ thống này thường phức tạp hơn nhiều người muốn hoặc cần. Ansible là một lựa chọn thay thế tuyệt vời cho các tùy chọn này vì nó có chi phí bắt đầu nhỏ hơn nhiều.Ansible hoạt động bằng cách cấu hình client từ máy tính có cài đặt và cấu hình các thành phần Ansible. Nó giao tiếp qua các kênh SSH bình thường để lấy thông tin từ các máy từ xa, ra lệnh và sao chép file . Do đó, hệ thống Ansible không yêu cầu cài đặt thêm bất kỳ phần mềm nào trên client . Đây là một cách mà Ansible đơn giản hóa việc quản trị các server . Bất kỳ server nào có cổng SSH lộ ra đều có thể được đưa vào dưới ô cấu hình của Ansible, dù nó đang ở giai đoạn nào trong vòng đời của nó.
Ansible sử dụng phương pháp module , giúp bạn dễ dàng mở rộng sử dụng các chức năng của hệ thống chính để giải quyết các tình huống cụ thể. Mô-đun có thể được viết bằng bất kỳ ngôn ngữ nào và giao tiếp bằng JSON tiêu chuẩn. Các file cấu hình chủ yếu được viết ở định dạng tuần tự hóa dữ liệu YAML do tính chất biểu đạt và tính tương tự của nó với các ngôn ngữ đánh dấu phổ biến. Ansible có thể tương tác với khách hàng thông qua các công cụ dòng lệnh hoặc thông qua các tập lệnh cấu hình được gọi là Playbook.
Trong hướng dẫn này, bạn sẽ cài đặt Ansible trên server CentOS 7 và tìm hiểu một số kiến thức cơ bản về cách sử dụng phần mềm.
Yêu cầu
Để làm theo hướng dẫn này, bạn cần :
- Một server CentOS 7. Làm theo các bước trong Cài đặt server ban đầu với CentOS 7 để tạo user không phải root và đảm bảo bạn có thể kết nối với server mà không cần password .
Bước 1 - Cài đặt Ansible
Để bắt đầu khám phá Ansible như một phương tiện quản lý các server khác nhau của ta , ta cần cài đặt phần mềm Ansible trên ít nhất một máy.
Để có được Ansible cho CentOS 7, trước tiên hãy đảm bảo repository CentOS 7 EPEL đã được cài đặt:
- sudo yum install epel-release
Khi repository được cài đặt, hãy cài đặt Ansible với yum
:
- sudo yum install ansible
Bây giờ ta có tất cả các phần mềm cần thiết để quản trị các server của ta thông qua Ansible.
Bước 2 - Cấu hình Server Ansible
Ansible theo dõi tất cả các server mà nó biết thông qua file “ server ”. Trước tiên, ta cần cài đặt file này trước khi có thể bắt đầu giao tiếp với các máy tính khác của bạn .
Mở file với quyền root như sau:
- sudo vi /etc/ansible/hosts
Bạn sẽ thấy một file có rất nhiều cấu hình ví dụ được comment . Giữ các ví dụ này trong file để giúp bạn tìm hiểu cấu hình của Ansible nếu bạn muốn triển khai các tình huống phức tạp hơn trong tương lai.
Tệp server lưu trữ khá linh hoạt và có thể được cấu hình theo một số cách khác nhau. Cú pháp mà ta sẽ sử dụng trông giống như sau:
[group_name] alias ansible_ssh_host=your_server_ip
group_name
là một thẻ tổ chức cho phép bạn tham chiếu đến bất kỳ server nào được liệt kê bên dưới nó bằng một từ. Bí danh chỉ là một cái tên để chỉ server đó.
Hãy tưởng tượng bạn có ba server mà bạn muốn kiểm soát với Ansible. Ansible giao tiếp với các client thông qua SSH, vì vậy mỗi server bạn muốn quản lý phải có thể truy cập được từ server Ansible bằng lệnh :
- ssh root@your_server_ip
Bạn sẽ không được yêu cầu nhập password . Trong khi Ansible chắc chắn có khả năng xử lý xác thực SSH dựa trên password , các SSH key giúp giữ mọi thứ đơn giản. Bạn có thể làm theo hướng dẫn Cách sử dụng SSH key với DigitalOcean Server để cài đặt SSH key trên mỗi server lưu trữ nếu bạn chưa có.
Ta sẽ giả định địa chỉ IP của server của ta là 192.0.2.1
, 192.0.2.2
và 192.0.2.3
. Hãy cài đặt điều này để ta có thể gọi chúng riêng lẻ là host1
, host2
và host3
hoặc dưới dạng một group là servers
. Để cấu hình điều này, bạn sẽ thêm khối này vào file server của bạn :
[servers] host1 ansible_ssh_host=192.0.2.1 host2 ansible_ssh_host=192.0.2.2 host3 ansible_ssh_host=192.0.2.3
Server có thể thuộc nhiều group và các group có thể cấu hình các thông số cho tất cả các thành viên của họ. Hãy thử điều này ngay bây giờ.
Theo mặc định, Ansible sẽ cố gắng kết nối với server từ xa bằng tên user hiện tại của bạn. Nếu user đó không tồn tại trên hệ thống từ xa, nỗ lực kết nối sẽ dẫn đến lỗi này:
Ansible connection errorhost1 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true }
Hãy nói cụ thể với Ansible rằng nó sẽ kết nối với các server trong group " server " với user sammy . Tạo một folder trong cấu trúc cấu hình group_vars
được gọi là group_vars
.
- sudo mkdir /etc/ansible/group_vars
Trong folder này, ta có thể tạo các file có định dạng YAML cho mỗi group mà ta muốn cấu hình :
- sudo nano /etc/ansible/group_vars/servers
Thêm mã này vào file :
--- ansible_ssh_user: sammy
Các file YAML bắt đầu bằng “-”, vì vậy hãy đảm bảo bạn không quên phần đó.
Lưu file này khi bạn hoàn tất. Bây giờ Ansible sẽ luôn sử dụng user sammy cho group servers
, dù user hiện tại là gì.
Nếu bạn muốn chỉ định chi tiết cấu hình cho mọi server , dù liên kết group , bạn có thể đặt những chi tiết đó trong một file tại /etc/ansible/group_vars/all
. Các server riêng lẻ có thể được cấu hình bằng cách tạo file trong folder tại /etc/ansible/host_vars
.
Bước 3 - Sử dụng các lệnh Ansible đơn giản
Bây giờ ta đã cài đặt server và đủ chi tiết cấu hình để cho phép ta kết nối thành công với server của bạn , ta có thể thử lệnh đầu tiên của bạn .
Ping tất cả các server bạn đã cấu hình bằng lệnh :
- ansible -m ping all
Ansible sẽ trả về kết quả như thế này:
Outputhost1 | SUCCESS => { "changed": false, "ping": "pong" } host3 | SUCCESS => { "changed": false, "ping": "pong" } host2 | SUCCESS => { "changed": false, "ping": "pong" }
Đây là bài kiểm tra cơ bản đảm bảo rằng Ansible có kết nối với tất cả các server của nó.
Phần -m ping
của lệnh là một hướng dẫn để Ansible sử dụng module "ping". Về cơ bản đây là các lệnh mà bạn có thể chạy trên các server từ xa của bạn . Mô-đun ping hoạt động theo nhiều cách giống như tiện ích ping thông thường trong Linux, nhưng thay vào đó, nó kiểm tra kết nối Ansible.
Tất all
phần nghĩa là "tất cả các server ". Bạn có thể dễ dàng chỉ định một group :
- ansible -m ping servers
Bạn cũng có thể chỉ định một server riêng lẻ:
- ansible -m ping host1
Bạn có thể chỉ định nhiều server bằng cách phân tách chúng bằng dấu hai chấm:
- ansible -m ping host1:host2
Mô-đun shell
cho phép ta gửi một lệnh terminal đến server từ xa và lấy kết quả. Ví dụ, để tìm hiểu mức sử dụng bộ nhớ trên máy host1 của ta , ta có thể sử dụng:
- ansible -m shell -a 'free -m' host1
Như bạn thấy , bạn chuyển các đối số vào một tập lệnh bằng cách sử dụng lựa chọn -a
. Đây là kết quả kết quả có thể trông như thế nào:
Outputhost1 | SUCCESS | rc=0 >> total used free shared buffers cached Mem: 3954 227 3726 0 14 93 -/+ buffers/cache: 119 3834 Swap: 0 0 0
Kết luận
Bây giờ, bạn nên cấu hình server Ansible của bạn để giao tiếp với các server mà bạn muốn kiểm soát. Bạn có thể xác minh Ansible có thể giao tiếp với từng server mà bạn biết cách sử dụng lệnh ansible
để thực hiện các việc đơn giản từ xa.
Mặc dù điều này rất hữu ích nhưng ta chưa đề cập đến tính năng mạnh mẽ nhất của Ansible trong bài viết này: Playbooks. Bạn đã cấu hình một nền tảng tuyệt vời để làm việc với các server của bạn thông qua Ansible, vì vậy bước tiếp theo của bạn là tìm hiểu cách sử dụng Playbook để thực hiện công việc nặng nhọc cho bạn. Bạn có thể tìm hiểu thêm trong Quản lý cấu hình 101: Viết Playbook Ansible và Cách tạo Playbook Ansible để Tự động hóa cấu hình hệ thống trên Ubuntu
Các tin liên quan
Cách thay đổi thư mục dữ liệu MariaDB thành vị trí mới trên CentOS 72016-12-19
Cách cài đặt MariaDB trên CentOS 7
2016-12-01
Cách thu thập số liệu cơ sở hạ tầng với Packetbeat và ELK trên CentOS 7
2016-11-28
Cách chia sẻ tệp bằng FileRun trên CentOS 7
2016-11-21
Cách cài đặt và cấu hình Grafana để vẽ đồ thị đẹp từ Zabbix trên CentOS 7
2016-11-13
Cách cài đặt và cấu hình ownCloud trên CentOS 7
2016-10-31
Cách triển khai bộ đệm trình duyệt với module tiêu đề của Nginx trên CentOS 7
2016-10-31
Cách sử dụng module bản đồ của Nginx trên CentOS 7
2016-10-31
Cách cài đặt Go 1.7 trên CentOS 7
2016-10-31
Cách cài đặt và cấu hình Sphinx trên CentOS 7
2016-09-20