Ansible là một công cụ Cơ sở hạ tầng dưới dạng Mã (IaC) mã nguồn mở phổ biến có thể được sử dụng để hoàn thành các tác vụ CNTT phổ biến như cung cấp đám mây và quản lý cấu hình trên nhiều thành phần cơ sở hạ tầng. Thường được coi là giải pháp cho các vấn đề về cấu hình đa đám mây, tự động hóa và phân phối liên tục, Ansible được nhiều người coi là tiêu chuẩn công nghiệp trong bối cảnh đám mây hiện đại.
Ansible Collections là tiêu chuẩn mới nhất để quản lý nội dung Ansible, cho phép người dùng cài đặt các vai trò, mô-đun và plugin với ít chi phí phát triển và quản trị hơn bao giờ hết. Bộ sưu tập Linode Ansible cung cấp các plugin cơ bản cần thiết để bắt đầu sử dụng dịch vụ Linode với Ansible ngay lập tức.
Hướng dẫn này chỉ cách thực hiện:
- Cài đặt bộ sưu tập Linode Ansible bằng kho lưu trữ công khai của Ansible cho các dự án cộng đồng
- Cấu hình Ansible và mã hóa thông tin nhạy cảm bằng Ansible Vault
- Hiểu về không gian tên bộ sưu tập đủ điều kiện của Ansible
- Triển khai phiên bản Linode bằng Ansible và bộ sưu tập Linode Ansible.
Quan trọng: Hướng dẫn mẫu của hướng dẫn này tạo một tài nguyên có thể thanh toán Linode (Nanode) 1GB trên tài khoản Linode của bạn. Nếu bạn không muốn tiếp tục sử dụng Linode mà bạn tạo, hãy đảm bảo xóa Linode khi bạn hoàn thành hướng dẫn.Nếu bạn xóa tài nguyên, bạn sẽ chỉ bị tính phí cho số giờ mà tài nguyên đó có trong tài khoản của bạn .
Trước khi bạn bắt đầu
Ghi chú: Các bước được nêu trong hướng dẫn này yêu cầu Ansible phiên bản 2.9.10 trở lên và đã được thử nghiệm trên Linode chạy Ubuntu 22.04. Các hướng dẫn có thể được điều chỉnh cho các bản phân phối Linux hoặc hệ điều hành khác.
1.Cung cấp một máy chủ hoạt động như nút điều khiển Ansible , từ đó các phiên bản tính toán khác được triển khai. Làm theo hướng dẫn trong hướng dẫn Tạo phiên bản tính toán của chúng tôi để tạo Linode chạy Ubuntu 22.04. Một CPU dùng chung 1GB Nanode là phù hợp. Bạn cũng có thể sử dụng máy trạm hoặc máy tính xách tay hiện có nếu bạn thích.
2.Thêm người dùng Linux giới hạn vào nút điều khiển Linode của bạn bằng cách làm theo phần Thêm tài khoản người dùng giới hạn trong hướng dẫn Thiết lập và bảo mật phiên bản tính toán của chúng tôi . Đảm bảo rằng tất cả các lệnh cho phần còn lại của hướng dẫn này được nhập dưới dạng người dùng giới hạn của bạn.
3.Đảm bảo rằng bạn đã thực hiện cập nhật hệ thống:
sudo apt update && sudo apt upgrade
4.Cài đặt Ansible trên nút điều khiển của bạn. Làm theo các bước trong phần Cài đặt Ansible của hướng dẫn Bắt đầu với Ansible – Cài đặt và thiết lập cơ bản .
5.Đảm bảo bạn đã cài đặt Python phiên bản 2.7 trở lên trên nút điều khiển của mình. Phát hành lệnh sau để kiểm tra phiên bản Python của hệ thống:
python --version
Nhiều hệ điều hành, bao gồm Ubuntu 22.04, thay vào đó cài đặt Python 3 theo mặc định. Trình thông dịch Python 3 thường có thể được gọi bằng lệnh python3
và phần còn lại của hướng dẫn này giả định Python 3 đã được cài đặt và sử dụng. Ví dụ: bạn có thể chạy lệnh này để kiểm tra phiên bản Python 3 của mình:
python3 --version
6.Cài đặt trình quản lý gói pip:
sudo apt install python3-pip
7.Tạo mã thông báo truy cập Linode API v4 có quyền đọc và ghi Linodes và ghi lại mã thông báo này trong trình quản lý mật khẩu hoặc vị trí an toàn khác. Thực hiện theo phần Nhận mã thông báo truy cập trong hướng dẫn Bắt đầu với Linode API .
Cài đặt Linode Ansible Collection
Bộ sưu tập Linode Ansible hiện là mã nguồn mở và được lưu trữ trên cả kho lưu trữ Github công khai và trên Ansible Galaxy . Ansible Galaxy là kho lưu trữ tập trung vào cộng đồng của riêng Ansible, cung cấp thông tin và quyền truy cập vào nhiều bộ sưu tập Ansible và vai trò Ansible . Hỗ trợ Ansible Galaxy được tích hợp vào các phiên bản mới nhất của Ansible theo mặc định. Trong khi người dùng có thể cài đặt bộ sưu tập Linode Ansible từ nguồn hoặc bằng cách sử dụng git , các bước sau đây sẽ hướng dẫn cách sử dụng Ansible Galaxy:
1.Cài đặt các phụ thuộc cần thiết cho Ansible:
sudo -H pip3 install -Iv 'resolvelib<0.6.0'
2.Tải xuống phiên bản mới nhất của bộ sưu tập Linode Ansible bằng lệnh ansible-galaxy
:
ansible-galaxy collection install linode.cloud
Sau khi bộ sưu tập được cài đặt, tất cả các tệp cấu hình sẽ được lưu trữ trong ~/.ansible/collections/ansible_collections/
thư mục bộ sưu tập mặc định.
3.Cài đặt các phụ thuộc mô-đun Python cần thiết cho bộ sưu tập Linode Ansible. Thư mục cài đặt bộ sưu tập Linode chứa một requirements.txt
tệp liệt kê các phụ thuộc Python, bao gồm thư viện Python chính thức cho Linode API v4 . Sử dụng pip để cài đặt các phụ thuộc này:
sudo pip3 install -r .ansible/collections/ansible_collections/linode/cloud/requirements.txt
Bộ sưu tập Linode Ansible hiện đã được cài đặt và sẵn sàng để triển khai và quản lý các dịch vụ Linode.
Cấu hình Ansible
Khi giao tiếp với bộ sưu tập Linode Ansible, thông thường nên sử dụng các biến để lưu trữ an toàn các chuỗi nhạy cảm như mã thông báo API. Phần này sẽ hướng dẫn cách lưu trữ và truy cập an toàn mã thông báo Truy cập API Linode (được tạo trong phần Trước khi bắt đầu ) cùng với mật khẩu gốc được gán cho các phiên bản Linode mới. Cả hai đều được mã hóa bằng Ansible Vault .
Tạo một tệp mật khẩu Ansible Vault
1.Từ thư mục home của nút điều khiển, tạo một thư mục phát triển để lưu trữ các tệp Ansible do người dùng tạo. Sau đó điều hướng đến thư mục mới này:
mkdir development && cd development
2.Trong development
thư mục, tạo một tệp văn bản trống mới có tên là .vault-pass
(không có phần mở rộng tệp). Sau đó tạo một mật khẩu mới phức tạp, duy nhất (ví dụ, bằng cách sử dụng trình quản lý mật khẩu), sao chép mật khẩu đó vào tệp mới và lưu. Mật khẩu này được sử dụng để mã hóa và giải mã thông tin được lưu trữ bằng Ansible Vault:
<PasteYourAnsibleVaultPasswordHere>
Đây là tệp mật khẩu Ansible Vault . Tệp mật khẩu cung cấp mật khẩu Vault của bạn cho các lệnh mã hóa của Ansible Vault. Ansible Vault cũng cung cấp các tùy chọn khác để quản lý mật khẩu. Để tìm hiểu thêm về quản lý mật khẩu, hãy đọc tài liệu Cung cấp mật khẩu Vault của Ansible .
3.Đặt quyền cho tệp để chỉ người dùng của bạn mới có thể đọc và ghi vào tệp:
chmod 600 .vault-pass
Tạo một tệp cấu hình Ansible
Tạo một tệp cấu hình Ansible được gọi ansible.cfg
bằng trình soạn thảo văn bản bạn chọn. Sao chép đoạn mã này vào tệp:Tập tin: ~/development/ansible.cfg
[defaults]
VAULT_PASSWORD_FILE = ./.vault-pass
Những dòng này chỉ định vị trí tệp mật khẩu của bạn.
Mã hóa các biến với Ansible Vault
1.Tạo một thư mục để lưu trữ các tệp biến được sử dụng với sổ tay hướng dẫn Ansible của bạn :
mkdir -p ~/development/group_vars/
2.Tạo một tệp văn bản trống mới có tên vars.yml
trong thư mục này. Trong các bước tiếp theo, mã thông báo API được mã hóa và mật khẩu gốc của bạn được lưu trữ trong tệp này:
touch ~/development/group_vars/vars.yml
3.Tạo mật khẩu mới phức tạp, duy nhất (ví dụ: bằng cách sử dụng trình quản lý mật khẩu) sẽ được sử dụng làm mật khẩu gốc cho các phiên bản tính toán mới được tạo bằng bộ sưu tập Linode Ansible. Mật khẩu này phải khác với mật khẩu Ansible Vault được chỉ định trong tệp .vault-pass
.
4.Sử dụng lệnh sau ansible-vault encrypt_string
để mã hóa mật khẩu root mới, thay thế MySecureRootPassword
bằng mật khẩu của bạn. Vì lệnh này được chạy từ bên trong ~/development
thư mục của bạn, nên mật khẩu Ansible Vault trong .vault-pass
tệp của bạn được sử dụng để thực hiện mã hóa:
ansible-vault encrypt_string 'MySecureRootPassword' --name 'password' | tee -a group_vars/vars.yml
Trong lệnh trên, tee -a group_vars/vars.yml
thêm chuỗi được mã hóa vào vars.yml
tệp của bạn. Sau khi hoàn tất, đầu ra tương tự như sau sẽ xuất hiện:
password: !vault |
$ANSIBLE_VAULT;1.1;AES256
30376134633639613832373335313062366536313334316465303462656664333064373933393831
3432313261613532346134633761316363363535326333360a626431376265373133653535373238
38323166666665376366663964343830633462623537623065356364343831316439396462343935
6233646239363434380a383433643763373066633535366137346638613261353064353466303734
3833
5.Chạy lệnh sau để thêm dòng mới vào cuối vars.yml
tệp của bạn:
echo "" >> group_vars/vars.yml
6.Sử dụng lệnh sau ansible-vault encrypt_string
để mã hóa mã thông báo API Linode và thêm nó vào vars.yml
tệp của bạn, thay thế MyAPIToken
bằng mã thông báo truy cập của riêng bạn:
ansible-vault encrypt_string 'MyAPIToken' --name 'api-token' | tee -a group_vars/vars.yml
7.Chạy lệnh sau để thêm một dòng mới vào cuối vars.yml
tệp của bạn:
echo "" >> group_vars/vars.yml
vars.yml
Tệp của bạn bây giờ sẽ trông giống như sau:
password: !vault |
$ANSIBLE_VAULT;1.1;AES256
30376134633639613832373335313062366536313334316465303462656664333064373933393831
3432313261613532346134633761316363363535326333360a626431376265373133653535373238
38323166666665376366663964343830633462623537623065356364343831316439396462343935
6233646239363434380a383433643763373066633535366137346638613261353064353466303734
3833
token: !vault |
$ANSIBLE_VAULT;1.1;AES256
65363565316233613963653465613661316134333164623962643834383632646439306566623061
3938393939373039373135663239633162336530373738300a316661373731623538306164363434
31656434356431353734666633656534343237333662613036653137396235353833313430626534
3330323437653835660a303865636365303532373864613632323930343265343665393432326231
61313635653463333630636631336539643430326662373137303166303739616262643338373834
34613532353031333731336339396233623533326130376431346462633832353432316163373833
35316333626530643736636332323161353139306533633961376432623161626132353933373661
36663135323664663130
Hiểu về không gian tên bộ sưu tập đủ điều kiện
Ansible hiện đã được cấu hình và bộ sưu tập Linode Ansible đã được cài đặt. Bạn có thể tạo sổ tay hướng dẫn để tận dụng bộ sưu tập và tạo các phiên bản tính toán và các tài nguyên Linode khác.
Trong sổ tay hướng dẫn, bộ sưu tập Linode Ansible được chia nhỏ hơn nữa theo các loại tài nguyên thông qua Tên bộ sưu tập đủ điều kiện (FQCN) liên kết với tài nguyên mong muốn. Các tên này đóng vai trò là mã định danh giúp Ansible dễ dàng và có thẩm quyền hơn trong việc phân định giữa các mô-đun và plugin trong một bộ sưu tập.
Các mô-đun
Dưới đây là bảng liệt kê tất cả các FQCN hiện có trong bộ sưu tập Linode Ansible và tổng quan ngắn gọn về mục đích của chúng:
Tên | Sự miêu tả |
---|---|
linode.cloud.domain | Tạo và hủy tên miền. |
linode.cloud.domain_info | Thu thập thông tin về một tên miền hiện có. |
linode.cloud.domain_record | Tạo và hủy bản ghi tên miền. |
linode.cloud.domain_record_info | Thu thập thông tin về bản ghi tên miền hiện có. |
linode.cloud.firewall | Tạo và phá hủy Tường lửa. |
linode.cloud.firewall_info | Thu thập thông tin về Tường lửa hiện có. |
linode.cloud.firewall_device | Quản lý thiết bị tường lửa. |
linode.cloud.instance | Tạo và phá hủy Linodes. |
linode.cloud.instance_info | Thu thập thông tin về phiên bản Linode hiện có. |
linode.cloud.lke_cluster | Quản lý cụm LKE. |
linode.cloud.lke_cluster_info | Thu thập thông tin về cụm LKE hiện có. |
linode.cloud.nodebalancer | Tạo, hủy và cấu hình NodeBalancer. |
linode.cloud.nodebalancer_info | Thu thập thông tin về NodeBalancer hiện có. |
linode.cloud.nodebalancer_node | Quản lý các nút NodeBalancer. |
linode.cloud.object_cluster_info | Thu thập thông tin về các cụm lưu trữ đối tượng. |
linode.cloud.object_keys | Tạo và hủy khóa lưu trữ đối tượng. |
linode.cloud.vlan_info | Thu thập thông tin về Linode VLAN hiện có. |
linode.cloud.volume | Tạo, hủy và đính kèm các ổ đĩa Linode. |
linode.cloud.volume_info | Thu thập thông tin về ổ đĩa Linode hiện có. |
Các liên kết trong bảng trên tương ứng với các trang GitHub cho mỗi FQCN. Các trang này chứa danh sách tất cả các tùy chọn cấu hình khả dụng cho tài nguyên mà mô-đun áp dụng. Danh sách đầy đủ được cập nhật động của tất cả các tài nguyên có thể được tìm thấy trong Linode Ansible Collections Github Repo .
Plugin kiểm kê
Tên | Sự miêu tả |
---|---|
linode.cloud.instance | Đọc các bản kiểm kê phiên bản từ Linode. |
Triển khai Linode với Linode Ansible Collection
Phần này hướng dẫn cách viết sổ tay hướng dẫn tận dụng bộ sưu tập Linode Ansible và mã thông báo API được mã hóa cùng mật khẩu gốc của bạn để tạo phiên bản Linode mới:
1.Tạo một tệp playbook có tên deploylinode.yml
trong ~/development
thư mục của bạn. Sao chép đoạn mã này vào tệp và lưu nó:
- name: Create Linode Instance
hosts: localhost
vars_files:
- ./group_vars/vars.yml
tasks:
- name: Create a Linode instance
linode.cloud.instance:
api_token: "{{ api_token }}"
label: my-ansible-linode
type: g6-nanode-1
region: us-east
image: linode/ubuntu22.04
root_pass: "{{ password }}"
state: present
- Playbook chứa
Create Linode Instance
play. Khi chạy, nút điều khiển nhận được hướng dẫn cần thiết từ Ansible và sử dụng API Linode để triển khai cơ sở hạ tầng khi cần. - Khóa này
vars_files
cung cấp vị trí của tệp hoặc các tệp biến được sử dụng để điền thông tin liên quan đến các tác vụ cho vở kịch. - Nhiệm vụ trong sổ tay hướng dẫn được xác định bởi
name
, đóng vai trò như một nhãn và FQCN được sử dụng để cấu hình tài nguyên, trong trường hợp này là một phiên bản tính toán của Linode. - Các tùy chọn cấu hình liên quan đến FQCN được xác định. Các tùy chọn cấu hình cho mỗi FQCN là duy nhất đối với tài nguyên.Đối với các tùy chọn sử dụng chuỗi bảo mật, các biến được mã hóa trong
./group_vars/vars.yml
tệp sẽ được chèn vào. Bao gồm mã thông báo API và mật khẩu gốc.
2.Sau khi playbook được lưu, hãy nhập lệnh sau để chạy nó và tạo một phiên bản Linode Nanode. Vì lệnh này được chạy từ bên trong ~/development
thư mục của bạn, mật khẩu Ansible Vault trong .vault-pass
tệp của bạn được playbook sử dụng để giải mã các biến:
ansible-playbook deploylinode.yml
Sau khi hoàn tất, đầu ra tương tự như sau sẽ xuất hiện:
PLAY [Create Linode] *********************************************************************
TASK [Gathering Facts] *******************************************************************
ok: [localhost]
TASK [Create a new Linode.] **************************************************************
changed: [localhost]
PLAY RECAP *******************************************************************************
localhost : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
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/deploy-linodes-using-linode-ansible-collection/