Thứ Sáu, 8 tháng 6, 2018

[Ansible] Giới thiệu cơ bản về Ansible

Ansible là gì?

Hiểu một cách đơn giản, Ansible là một configuration management và provisioning tool, nghĩa là nó giúp bạn tự động cài cắm, config các software và quản lý các service. Thay vì việc chạy từng dòng lệnh bằng tay, thì bạn chỉ cần chạy một câu lệnh ansible đơn giản, còn lại để ansible lo :D

Đương nhiên trước khi chạy dòng lệnh kia, bạn phải làm một đống thứ phức tạp khác :)

Cài đặt ansible, tham khảo tại https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html

Ansible hoạt động như thế nào?


Cơ bản, Ansible sử dụng ssh để thực hiện các remote command trên các remote host. Theo mặc định, thông tin ssh của các remote host sẽ được Ansible đọc trong ~/.ssh/config.

Khi tương tác với các remote host, theo mặc định, ansible sử dụng ssh key. Tuy nhiên, bạn cũng có thể sử dụng user/password bằng cách thêm option --ask-pass.

-k, --ask-pass      ask for connection password
Cấu trúc của một câu lệnh ansible:

$ ansible option destination

destination là các remote host, nếu chạy command trên tất cả các hosts thì dùng all

Theo mặc định, khi thực hiện một remote command, remote hosts sẽ được xác định trong /etc/ansible/hosts. Ví dụ:

$ cat /etc/ansible/hosts
17.5.54.67 # host's IP
bserver.example.org # hostname or domain name
Tuy nhiên, bạn cũng có thể xác định các remote hosts để thực hiện các remote command bằng cách sử dụng inventory file. Khai báo hosts trong inventory file giống như khai báo trong /etc/ansible/hosts. Khai báo inventory file để ansible sử dụng dùng -i option:

-i INVENTORY, --inventory=INVENTORY,
                             --inventory-file=INVENTORY specify inventory host path or comma separated host list.
                             --inventory-file is deprecated


tìm hiểu thêm về inventory file tại:
https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html

Chạy câu lệnh đầu tiên với Ansible:

Đầu tiên bạn phải khai báo các remote host. Bạn có thể khai báo trong /etc/ansible/hosts hoặc sử dụng inventory file.

Giả sử mình sử dụng inventory file /tmp/inventory (tên file do bạn đặt, ansible không cố định đó là file nào). Khai báo trong inventory file:
$ cat /tmp/inventory 17.5.54.67 # host's IP
Chạy lệnh thực hiện connection đến 15.5.54.67

$ ansible -i /tmp/inventory all -m ping
17.5.54.67 | SUCCESS => { "changed": false, "ping": "pong"}

Để chạy ansible command, ta có thể dùng:
- ad-hoc command
- ansible playbooks

Về ad-hoc, được dùng khi ta muốn chạy một lệnh trên remote host một lần mà không cần lưu lại để sử dụng về sau. thường đó là các câu lệnh đơn giản như: ifconfig, ping ... Ở ví dụ trên, ad-hoc command đã được sử dụng để chạy câu lệnh ping.
tham khảo thêm tại https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html

Ansible playbooks, là cách thức chính được chúng ta sử dụng khi làm việc với ansible. Playbooks là ansible language để config, cài đặt, quản lý services ..., được dùng để thực hiện nhiều thao tác phức tạp và được lưu lại để chạy nhiều lần.

Chi tiết về ansible playbooks, tham khảo tại:
https://docs.ansible.com/ansible/latest/user_guide/playbooks.html


Tìm hiểu về sử dụng role trong ansible tại:
http://swdream.familug.org/2018/06/ansible-role-la-gi-va-role-hoat-ong-nhu.html

Không có nhận xét nào:

Đăng nhận xét