Giới thiệu về Ansible
Ansible là công cụ mã nguồn mở nhằm giải thoát anh em system/network/devops khỏi sự lệ thuộc vào cấu hình bằng cơm. Thay vào đó chúng ta chỉ cần viết 1 lần và dùng lại.
I.Vậy Ansible là gì?
Ansible viết bởi ngôn ngữ python. Truyền thuyết kể rằng một sysadmin nọ, sếp bảo rằng thay đổi iptables của 100 server. Sau 1 ngày copy/paste thì sếp gởi lại email là lúc nãy đưa nhầm IP, sửa lại dùm sếp. Tức giận về sếp , sysadmin đó đã viết nên bộ Ansible để có thể thay đổi iptables của 100 server trong 10 phút.
Về cơ bản Ansible sẽ dùng SSH và đăng nhập vào từng server để thay đổi cấu hình của thiết bị theo cấu hình được định nghĩa sẵn. Giờ đây Ansible không chỉ hỗ trợ SSH mà còn nhiều API khác nhau như WinRM…
Ansible không chỉ dùng cho Linux server mà còn dùng cho các thiết bị khác dùng SSH (Linux-based, Windows, switch, router, firewall, vmware, cloud…)
Coi thêm ansible hỗ trợ những module gì: Module
II.Tại sao nên dùng Ansible?
- Tiết kiệm thời gian: thay vì làm từng thiết bị, thì Ansible sẽ làm đồng loạt tất cả các thiết bị -> Rãnh nhiều hơn -> cafe chém gió.
- Tránh sai sót: Ngồi gõ tay nhiều lần lặp đi lặp lại dễ dẫn đến sai sót -> Bị sếp chửi -> cắt lương.
- Đồng bộ cấu hình: Khi thêm xóa, sửa, thay đổi cấu hình giữa các thiết bị cũ và mới. Ansible giúp cho mọi thứ được đồng nhất.
- Xử lý sự cố nhanh hơn: Lúc có sự cố. Bấn loạn, đăng nhập từng con tìm thông tin,ping, status, IP, log… -> mất thời gian -> downtime kéo dài -> trừ lương. Dùng Ansible nhấn phát có hết log, IP, status mọi thứ ra file report -> nhanh hơn -> không bị trừ lương
Hỏi: Mình quản lý 3-4 thiết bị. Viết Ansible mệt, nhiều thứ phải học, viết sai sửa lung tung. Gõ từng con lẹ hơn.
Đáp: Đúng, nhưng bạn nghĩ là suốt đời bạn chỉ quản lý 3-4 thiết bị sao? Ansible không được dùng rộng rãi cho Linux, windows, network,firewall… Nếu một ngày phỏng vấn công ty đa quốc gia họ yêu cầu bạn quản lý hàng trăm thiết bị. Bạn sẽ trả lời sao? “Tui làm hàng chục hay hàng trăm thiết bị cũng được, dùng Ansible” hay ” Nhiều quá làm sao nổi? Cấu hình 3-4 con quen rồi? 9-10 con thôi được không?”. Lời khuyên của mình: Tập dùng ansible cho cả 3-4 thiết bị. Nó sẽ giúp ích cho công việc của bạn trong tương lai.
III.Cấu trúc của YAML.
Mình sẽ ví dụ bằng 1 file YAML. Mình dùng notepadd++, bật mode “Show all characters”. Dấu chấm . mà mọi người thấy đó là tương đương 1 khoảng trắng.
Bắt đầu của file YAML:
(1)Bắt đầu bằng 3 dấu gạch ngang
Mapping:
Mapping bao gồm 2 giá trị chính: key và value. Phân biệt bằng dấu :
(2) Key ở đây là “gather_facts”. Value ở đây là “no”
Cấu trúc YAML:
YAML dùng 2 khoảng trắng để xác định từng block.
Comment/Chú thích:
(3) Mọi thứ phía sau dấu # đều là chú thích và được bỏ qua.
List: là một chuỗi những giá trị.
(4.0,4.1,4.2) Đây là 2 task có tên là: SHOW FACTS(4.1) và DEBUG(4.2). 2 task này thuộc tasks(4.0). Lưu ý là (4.1,4.2) có 1 dấu gạch và khoảng trắng phía trước.