17 part series

Ansible Từ Cơ Bản đến Nâng Cao

Học Ansible từ nền tảng tới nâng cao: kiến trúc agentless, inventory, playbook, module, biến/template, role, vault, viết custom module, và best practices thiết kế dự án. Mỗi phần hands-on có code thật lưu tại github.com/nghiadaulau/ansible-series, thực hành trên EC2.

1

Ansible Là Gì và Vì Sao Nên Dùng

Mở đầu series: vấn đề quản lý cấu hình mà Ansible giải quyết, vì sao 'agentless' và 'idempotent' là hai từ khóa quan trọng nhất, các khái niệm cốt lõi (control node, inventory, playbook, module, role), và lộ trình từ cơ bản tới viết module riêng.

Kai··6 min read·DevOpsAutomation
2

Kiến Trúc Ansible: Control Node, Inventory, Module và SSH

Deep-dive kiến trúc Ansible: control node, managed node, inventory, module. Và chính xác chuyện gì xảy ra khi bạn chạy một lệnh — Ansible đóng gói module, ship qua SSH lên host, chạy bằng Python ở đó, nhận JSON về. Quan sát thật bằng -vvv.

Kai··5 min read·DevOpsArchitecture
3

Cài Đặt và Lệnh Ad-hoc Đầu Tiên

Dựng control node (cài Ansible), chuẩn bị một host để quản lý, viết file cấu hình và inventory, rồi chạy các lệnh ad-hoc đầu tiên: ping, command, shell, setup, và become để chạy với quyền root.

Kai··4 min read·DevOpsAutomation
4

Inventory: Tĩnh, Động, Nhóm và Biến

Inventory là nơi Ansible biết quản lý máy nào. Bài này: viết inventory tĩnh (INI/YAML), gom host thành nhóm và nhóm lồng nhau, gán biến qua group_vars/host_vars, nhắm mục tiêu bằng pattern, và inventory động cho cloud.

Kai··4 min read·DevOpsAnsible
5

Playbook: Cấu Trúc và Task

Playbook là trái tim của Ansible — file YAML mô tả trạng thái mong muốn. Bài này: cấu trúc play và task, viết và chạy playbook đầu tiên cài một web server, đọc PLAY RECAP, FQCN, và chế độ check (dry-run).

Kai··4 min read·DevOpsAnsible
6

Module và Idempotency

Deep-dive: module hoạt động bên trong thế nào để đạt idempotency — đọc trạng thái hiện tại, so với mong muốn, chỉ thay đổi phần khác biệt rồi báo changed. Vì sao command/shell không idempotent, check mode, và tour các module hay dùng.

Kai··5 min read·DevOpsAnsible
7

Biến, Facts và Template (Jinja2)

Làm playbook linh hoạt: biến (khai báo ở nhiều nơi, có thứ tự ưu tiên), facts (thông tin host Ansible tự thu thập), và template Jinja2 để sinh file cấu hình động từ biến và facts. Quan sát file render thật trên host.

Kai··5 min read·DevOpsAnsible
8

Handlers, Loops và Conditionals

Điều khiển luồng playbook: loop để lặp một task qua nhiều giá trị, when để chạy có điều kiện, handlers để phản ứng với thay đổi (restart khi đổi config), và block/rescue để xử lý lỗi gọn gàng. Kèm log chạy thật.

Kai··5 min read·DevOpsAnsible
9

Roles: Tổ Chức Code Tái Sử Dụng

Khi playbook lớn lên, ta cần tổ chức. Role là cách Ansible đóng gói task, handler, template, biến thành một đơn vị tái sử dụng theo cấu trúc thư mục chuẩn. Bài này: tạo role bằng ansible-galaxy init, điền nội dung, và dùng trong playbook.

Kai··5 min read·DevOpsAnsible
10

Ansible Galaxy và Collections

Cách đóng gói và phân phối hiện đại của Ansible: collection gom module, role, plugin dưới một namespace; FQCN để gọi rõ ràng; cài collection từ Galaxy bằng requirements.yml; và phân biệt ansible-core với gói ansible đầy đủ.

Kai··4 min read·DevOpsAnsible
11

Ansible Vault: Quản Lý Bí Mật

Mật khẩu, khóa API không thể để trần trong Git. Ansible Vault mã hóa bí mật bằng AES256, giải mã tự động lúc chạy. Bài này: encrypt/view/edit file bí mật, encrypt_string cho từng giá trị, dùng trong playbook, và best practices.

Kai··4 min read·DevOpsSecurity
12

Viết Custom Module Bằng Python

Deep-dive: tự viết một module Ansible bằng Python. Hiểu AnsibleModule, argument_spec, exit_json/fail_json, hỗ trợ check_mode, và pattern đạt idempotency. Đây là lúc cơ chế từ Bài 1 (ship module qua SSH) khép lại trọn vẹn.

Kai··5 min read·DevOpsAnsible
13

Mở Rộng Ansible: Filter, Lookup và Callback Plugins

Module mở rộng việc làm trên host; plugin mở rộng bản thân Ansible chạy ở control node. Bài này: filter plugin (biến đổi dữ liệu trong Jinja2), lookup plugin (lấy dữ liệu ngoài), callback plugin (tùy biến output), và sự khác biệt module vs plugin.

Kai··5 min read·DevOpsAnsible
14

Tối Ưu và Chiến Lược Thực Thi

Chạy Ansible nhanh và an toàn trên hàng trăm host: forks và strategy điều khiển song song, serial cho rolling update không gián đoạn, delegate_to/run_once, async cho task dài, fact caching và pipelining để tăng tốc, tags và check mode để kiểm soát.

Kai··5 min read·DevOpsAnsible
15

Kiểm Thử Role với Molecule

Trước khi đẩy role lên hàng trăm host, hãy kiểm thử nó. Molecule dựng container tạm, áp role, kiểm tra idempotency và verify kết quả — tự động. Bài này: cấu trúc scenario, vòng test create→converge→idempotence→verify→destroy, và lưu ý phiên bản.

Kai··5 min read·DevOpsAnsible
16

Best Practices: Cấu Trúc Dự Án và Thiết Kế

Gom mọi thứ thành chuẩn mực: cấu trúc thư mục dự án, thiết kế role tốt, quy ước đặt tên và FQCN, idempotency, quản lý bí mật, và dùng ansible-lint để tự động bắt lỗi best-practice. Kèm ví dụ lint thật.

Kai··4 min read·DevOpsBest Practices
17

Một Dự Án Hoàn Chỉnh và Tổng Kết Series

Ghép tất cả: một dự án Ansible hoàn chỉnh triển khai ứng dụng bằng role theo best practices, chạy idempotent trên server thật. Rồi dọn dẹp hạ tầng, tổng kết hành trình từ ad-hoc tới custom module, và gợi ý học tiếp.

Kai··4 min read·DevOpsAutomation