Ansible là gì?
Ansible là một công cụ tự động hóa để cung cấp, cấu hình và quản lý máy chủ. Nó cho phép bạn sắp xếp các máy chủ của mình thành các nhóm, mô tả cách các nhóm đó nên được cấu hình và những hành động nào nên được thực hiện trên chúng, tất cả từ một vị trí trung tâm.
Để bắt đầu sử dụng Ansible, bạn nên làm quen với một số thuật ngữ và khái niệm cơ bản được sử dụng để mô tả các thành phần chính của Ansible.
- Nút điều khiển : Các nút cơ sở hạ tầng của bạn được Ansible quản lý từ một nút điều khiển có thể là máy tính cá nhân hoặc máy chủ của bạn. Để tăng tốc độ quản lý, bạn nên lưu trữ nút điều khiển trên máy chủ càng gần các nút được quản lý của bạn càng tốt.
- Managed Nodes : Các máy chủ tạo nên cơ sở hạ tầng của bạn và được quản lý bởi Ansible control node. Managed node không yêu cầu phải cài đặt Ansible trên chúng.
- Inventory : Ansible theo dõi các nút được quản lý của mình bằng tệp inventory thường nằm trong
/etc/ansible/hosts
. Trong tệp inventory, bạn có thể nhóm các nút được quản lý của mình và sử dụng các nhóm này để nhắm mục tiêu đến các máy chủ cụ thể tạo nên cơ sở hạ tầng của bạn. Ansible có thể sử dụng nhiều nguồn inventory, như các tệp inventory khác và inventory động được kéo bằng plugin inventory hoặc tập lệnh inventory.Nếu cơ sở hạ tầng được quản lý Ansible của bạn sẽ thay đổi theo thời gian, bạn nên sử dụng plugin kiểm kê động cho Linode . Bạn có thể đọc Cách sử dụng Mô-đun Linode Ansible để Triển khai Linode để tìm hiểu cách sử dụng plugin này. - Module : Module bổ sung thêm chức năng cho Ansible. Bạn có thể gọi module Ansible trực tiếp từ dòng lệnh để thực thi trên các node được quản lý của mình hoặc sử dụng chúng trong Playbook của bạn. Xem chỉ mục module của Ansible để biết danh sách các module khả dụng theo từng danh mục.
- Nhiệm vụ : Đơn vị thực thi đơn giản nhất trong Ansible là một nhiệm vụ. Nhiệm vụ sử dụng các mô-đun Ansible để quản lý các dịch vụ, gói, tệp của máy chủ và thực hiện nhiều cấu hình hệ thống khác nhau. Nhiệm vụ có thể được thực thi từ dòng lệnh hoặc trong Playbooks.
- Playbooks : Playbooks là các tệp YAML chứa danh sách các tác vụ theo thứ tự thực hiện mong muốn. Bạn có thể chạy Playbooks trên các nút được quản lý của mình và sử dụng lại cũng như chia sẻ chúng. Biến và mẫu Jinja cung cấp một cách mạnh mẽ để thực hiện các tác vụ phức tạp trên các máy chủ được quản lý của bạn.
Phạm vi của Hướng dẫn này
Hướng dẫn này giới thiệu những điều cơ bản về cài đặt Ansible và chuẩn bị môi trường của bạn để sử dụng Playbooks . Bạn sẽ hoàn thành các bước sau trong hướng dẫn này:
- Cài đặt và cấu hình Ansible trên máy tính hoặc Linode để làm nút điều khiển quản lý các nút cơ sở hạ tầng của bạn.
- Tạo hai Linode để quản lý bằng Ansible và thiết lập kết nối cơ bản giữa nút điều khiển và các nút được quản lý của bạn. Các nút được quản lý sẽ được gọi là
node-1
, vànode-2
trong suốt hướng dẫn.
Ghi chú: Các ví dụ trong hướng dẫn này cung cấp phương pháp thủ công để thiết lập kết nối cơ bản giữa nút điều khiển và nút được quản lý của bạn như một cách để giới thiệu những điều cơ bản về Ansible. Nếu bạn muốn tìm hiểu cách sử dụng mô-đun Linode của Ansible để tự động triển khai và quản lý Linode, hãy xem Cách sử dụng Mô-đun Linode Ansible để Triển khai Linode . Hướng dẫn này giả định rằng bạn đã quen thuộc với các mô-đun Ansible, Playbook và kho lưu trữ động.
Trước khi bạn bắt đầu
Quan trọng:Các hướng dẫn mẫu trong hướng dẫn này sẽ tạo tối đa ba Linode có thể thanh toán trên tài khoản của bạn. Nếu bạn không muốn tiếp tục sử dụng các Linode mẫu mà bạn tạo, hãy đảm bảo xóa chúng khi bạn hoàn thành hướng dẫn.
Nếu bạn xóa tài nguyên sau đó, bạn sẽ chỉ bị tính phí cho giờ mà tài nguyên có trong tài khoản của bạn. Tham khảo hướng dẫn Thanh toán và lập hóa đơn để biết thông tin chi tiết về cách thức hoạt động của tính năng lập hóa đơn theo giờ.
1.Tạo hai Linode chạy Ubuntu 22.04 LTS làm các nút được quản lý của bạn . Các ví dụ trong hướng dẫn này cũng có thể được thực hiện bằng cách sử dụng một nút được quản lý duy nhất, nếu muốn.
2.Ansible sử dụng giao thức SSH để đăng nhập an toàn vào các nút được quản lý và áp dụng cấu hình Playbook của bạn. Tạo cặp khóa SSH trên nút điều khiển để sử dụng cho xác thực. Hướng dẫn này giả định cặp khóa SSH công khai và riêng tư của bạn được lưu trữ trong ~/.ssh/id_rsa.pub
và ~/.ssh/id_rsa
.
ssh-keygen -t rsa -b 4096
3.Sao chép khóa vào node-1
. Thay thế 203.0.113.0
bằng địa chỉ IP của Linode được bạn quản lý.
ssh-copy-id root@203.0.113.0
Lặp lại quy trình này cho mỗi nút còn lại.
Ghi chú:Bước này có thể được tự động hóa bằng cách sử dụng mô-đun Linode của Ansible. Xem Cách sử dụng Mô-đun Linode Ansible để Triển khai Linode để biết thêm thông tin.
Thiết lập nút điều khiển
Cài đặt và thiết lập Miniconda
Với Miniconda, bạn có thể tạo môi trường ảo hóa cho Ansible, giúp đơn giản hóa quy trình cài đặt cho hầu hết các Distro và môi trường yêu cầu nhiều phiên bản Python. Nút điều khiển của bạn sẽ yêu cầu Python phiên bản 2.7 trở lên để chạy Ansible.
1.Tải xuống và cài đặt Miniconda:
curl -OL https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
2.Bạn sẽ được nhắc nhiều lần trong quá trình cài đặt. Xem lại các điều khoản và điều kiện và chọn “có” cho mỗi lời nhắc.
3.Khởi động lại phiên shell để những thay đổi trong PATH có hiệu lực.
exec bash -l
4.Tạo môi trường ảo mới cho Ansible:
conda create -n ansible-dev python=3
5.Kích hoạt môi trường mới:conda
conda activate ansible-dev
6.Kiểm tra phiên bản Python của bạn:
python --version
Cài đặt Ansible
Ghi chú: Hướng dẫn này được tạo bằng Ansible 2.8.
1.Thực hiện theo các bước cài đặt Ansible liên quan đến bản phân phối của nút điều khiển của bạn.
Hệ điều hành MacOS
sudo easy_install pip
sudo pip install ansible
Linux
pip install ansible
Ghi chú: Kho lưu trữ EPEL-Release có thể cần được thêm vào một số phiên bản CentOS, RHEL và Scientific Linux.
2.Xác minh rằng Ansible đã được cài đặt:
ansible --version
Cấu hình Ansible
1.Để xem danh sách tất cả các cấu hình hiện tại có sẵn cho nút điều khiển của bạn, hãy sử dụng ansible-config
tiện ích dòng lệnh.
ansible-config list
Bạn sẽ thấy kết quả tương tự:
ACTION_WARNINGS:
default: true
description: [By default Ansible will issue a warning when received from a task
action (module or action plugin), These warnings can be silenced by adjusting
this setting to False.]
env:
- {name: ANSIBLE_ACTION_WARNINGS}
ini:
- {key: action_warnings, section: defaults}
name: Toggle action warnings
type: boolean
version_added: '2.5'
AGNOSTIC_BECOME_PROMPT:
default: false
...
Ghi chú: Để thực hiện cấu hình nâng cao, bạn sẽ cần chỉnh sửa tệp ansible.cfg
có thể được tạo bằng lệnh sau:
ansible-config init --disabled > ansible.cfg
Trong một số cài đặt, tập tin này sẽ có sẵn trong /etc/ansible/
thư mục.
Tạo một Ansible Inventory
Ansible theo dõi các nút được quản lý của mình bằng tệp kiểm kê nằm trong /etc/ansible/hosts
. Trong tệp kiểm kê, bạn có thể nhóm các nút được quản lý của mình và sử dụng các nhóm này để nhắm mục tiêu đến các máy chủ cụ thể tạo nên cơ sở hạ tầng của bạn. Ansible có thể sử dụng nhiều nguồn kiểm kê, như các tệp kiểm kê khác và kiểm kê động được kéo bằng plugin hoặc tập lệnh kiểm kê. Nếu cơ sở hạ tầng được quản lý Ansible của bạn sẽ thay đổi theo thời gian, bạn nên sử dụng plugin kiểm kê động cho Linode. Bạn có thể đọc Cách sử dụng Mô-đun Linode Ansible để Triển khai Linode để tìm hiểu cách quản lý Linode.
Theo ví dụ bên dưới, bạn sẽ thêm các nút được quản lý của mình vào /etc/ansible/hosts
tệp hàng tồn kho trong hai nhóm riêng biệt. Các nút có thể được liệt kê bằng tên có thể được phân giải bằng DNS hoặc địa chỉ IP.
1.Thêm các nút của bạn vào tệp hàng tồn kho mặc định. Thay thế 203.0.113.0
và 203.0.113.1
bằng địa chỉ IP công khai hoặc tên miền của mỗi nút của bạn.
[nginx]
203.0.113.0
[wordpress]
203.0.113.1
Mỗi nhãn trong ngoặc biểu thị một nhóm Ansible . Việc nhóm các nút theo chức năng sẽ giúp bạn chạy lệnh dễ dàng hơn trên tập hợp các nút chính xác.
Ghi chú: Theo mặc định, thư /etc/ansible
mục sẽ không tồn tại trong một số môi trường. Nếu bạn thấy trường hợp này xảy ra, hãy tạo thủ công bằng lệnh sau:
mkdir /etc/ansible/
Nếu bạn đang sử dụng cổng SSH không chuẩn trên các nút của mình, hãy thêm cổng sau dấu hai chấm trên cùng một dòng trong tệp máy chủ ( 203.0.113.1:2222
).
Kết nối với các nút được quản lý của bạn
Sau khi cấu hình nút điều khiển, bạn có thể giao tiếp với các nút được quản lý và bắt đầu cấu hình chúng khi cần. Trong phần này, bạn sẽ kiểm tra kết nối với các máy chủ được quản lý Ansible của mình bằng mô-đun ping. Mô-đun ping trả về phản hồi “pong” khi một nút điều khiển thành công khi đến được một nút. Việc ping các máy chủ của bạn sẽ xác minh kết nối của bạn và nút điều khiển có thể thực thi Python trên các máy chủ.
1.Sử dụng all
lệnh để ping tất cả các máy chủ trong kho của bạn. Theo mặc định, Ansible sẽ sử dụng tên tài khoản người dùng cục bộ của bạn để kết nối với các nút của bạn qua SSH. Bạn có thể ghi đè hành vi mặc định bằng cách truyền tùy -u
chọn, cộng với tên người dùng mong muốn. Vì không có tài khoản người dùng chuẩn nào trên các nút, trong ví dụ, bạn chạy lệnh với tư cách là người dùng root.
ansible all -u root -m ping
Bạn sẽ nhận được kết quả tương tự:
192.0.2.0 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.0.2.1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
2.Lặp lại lệnh, chỉ nhắm mục tiêu vào các nút trong [nginx]
nhóm mà bạn đã xác định trong tệp kiểm kê của mình .
ansible nginx -u root -m ping
Lần này chỉ node-1
nên phản hồi thôi.
Các bước tiếp theo
- Bây giờ bạn đã cài đặt và cấu hình Ansible, bạn có thể bắt đầu sử dụng Playbooks để quản lý cấu hình Linodes của mình. Hướng dẫn Tự động cấu hình máy chủ với Ansible Playbooks của chúng tôi sẽ trình bày một máy chủ web cơ bản được thiết lập bằng Ansible Playbook.
- Bạn cũng có thể tham khảo một số hướng dẫn mẫu trên tài khoản GitHub của Ansible để xem nhiều cách triển khai khác nhau.
- Tham khảo các liên kết bên dưới để tìm hiểu thêm một số khái niệm nâng cao liên quan đến việc viết Playbook:
Xóa Linode của bạn
Nếu bạn không muốn sử dụng Linodes được tạo trong hướng dẫn này nữa, bạn có thể xóa chúng bằng Linode Cloud Manager . Để tìm hiểu cách xóa tài nguyên Linode bằng mô-đun Linode của Ansible, hãy xem phần Xóa tài nguyên của bạn trong hướng dẫn Cách sử dụng Mô-đun Linode Ansible để triển khai Linodes .
Thông tin thêm
Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.
Nguồn: https://www.linode.com/docs/guides/getting-started-with-ansible/