Hướng dẫn sử dụng Ansible
Show 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. Bạn đang xem: Ansible SystemEvolve 1x tổ chức ngày 19/06/2015 đã thảo luận về vấn đề: Cách sử dụng Ansible và một số khác biệt so với SaltStack. Vậy Ansible là gì? Sử dụng như thế nào? Trong loạt bài về Ansible, chúng ta sẽ cùng tìm hiểu từ tổng quan tới chi tiết về Ansible, các đặc điểm, cài đặt cũng như cấu trúc sử dụng trong Ansible. Ansible là gì?Ansible đang là công cụ Configuration Management khá nổi bật hiện nay.
Đặc điểm của Ansible
Cấu hình PPA, cài đặt: $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible/ansible$ sudo apt-get install ansible $ sudo apt-get update Trên các phiên bản Ubuntu cũ, gói software-properties-common có tên khác là python-software-properties Cấu hìnhDemo sử dụng hệ điều hành Ubuntu 14.04, với các hệ điều hành khác cũng hoàn toàn tương tự. Server master: 192.168.1.100 Server agent: 192.168.1.101
Do policy của hệ thống giới hạn tài khoản root truy cập cũng như để thuận tiện cho việc quản lý (tránh dùng chung account của người quản trị) thì nên tạo 1 tài khoản khác phục vụ cho ansible Tạo tài khoản: Cấu hình sudo cho phép tài khoản ansible sử dụng không cần password $ sudo vi /etc/sudoers.d/ansible ansible ALL=(ALL) NOPASSWD:ALL Để thuận tiện cho việc sử dụng Ansible cũng như giới hạn 1 số hệ thống chỉ cho phép xác thực qua key. (Ansible có hỗ trợ kết nối thông qua password) Tạo ssh keyfile: ( trên master ) $ ssh-keygen -C "ansible@master" Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa): `/etc/ansible/ansible_key` ... Lý do không đặt ssh key ở thư mục mặc định là do rất có thể có nhiều người quản trị cùng tham gia quản lý.) Copy keyfile sang agent: $ ssh-copy-id -i /etc/ansible/ansible_key.pubKiểm tra: $ ssh -i /etc/ansible/ansible_keyAnsible lưu thông tin những hệ thống trong file /etc/ansible/hosts (inventory) theo cấu trúc dạng INI như sau: mail.example.com [webservers]foo.example.com bar.example.com [dbservers]two.example.com one.example.comthree.example.com Trong đó: *.example.com: hostname của các host (phải cấu hình tiếp trong file /etc/hosts để xác định địa chỉ IP) [webservers], [dbservers]: là các group Ở ví dụ demo này, cấu hình /etc/ansible/hosts như sau: [webservers] web1 ansible_ssh_host=192.168.1.101 ansible_ssh_private_key_file=ansible_key ansible_ssh_user=ansible List các tham số hỗ trợ inventory parameters xem thêm tại đây: http://docs.ansible.com/ansible/latest/intro_inventory.html#list-of-behavioral-inventory-parameters Sử dụng các lệnh cơ bản$ ansible web1 -m ping $ ansible webservers -m ping $ ansible all -m ping$ ansible web1 -m command -a 'df -h' $ ansible web1 -s -m command -a 'fdisk -l'$ ansible -i /etc/ansible/hosts all -m ping Chú ý:
Ở các phần sau, chúng ta sẽ cùng tìm hiểu về cấu trúc sử dụng trong Ansible trong một số ví dụ thực tế. >> Xem tiếp Phần 2: [Ansible] Phần 2 - Playbook Ngày nay thì việc doanh nghiệp hay cá nhân sử dụng nhiều thiết bị hay server, việc cài đặt môi trường thủ công trên từng thiết bị qua CLI mất nhiều thời gian và nhân lực. Vậy chúng ta có thể cài đặt môi trường một lúc trên nhiều thiết bị, server? hay với một command chúng ta có thể thực hiện điều đó? Thì trong bài viết này mình giới thiệu với các bạn về Ansible Ansible là gì?
Sau đây là một số ưu điểm của Ansible:
Các thuật ngữ quan trọng trong AnsibleDưới đây là các thuật ngữ trong Ansible mà mình đã tìm hiểu:
Ansible hoạt động như thế nàoDưới đây là hình ảnh mô tả hoạt động của Ansible: Như trong hình thì Management Node là Ansible server mình nói ở trên, là nơi quản lý các nodes điều khiển toàn bộ quá trình thực thi của playbook. Playbook sẽ chứa chi tiết tất cả những gì chúng ta muốn thực hiện với các server mà chúng ta muốn quản lý và cách thức thực hiện chúng Ở đây, các tệp Inventory cung cấp cho chúng ta danh sách các máy chủ mà các module Ansible cần để chạy Sau khi đọc được các host mà chúng ta cần chạy ở Inventory thì Management Node sẽ thực hiện việc connect tới các host này thông qua SSH connection và thực thi các modules Cài đặt AnsibleTrong phần này thì mình sẽ giới thiệu cài đặt Ansible trên ubuntu:
Tạo file inventoryAnsible sử dụng một file inventory (danh sách các server) để kết nối với server của chúng ta. Giống như với file hosts(/etc/hosts) để trỏ địa chỉ IP tới tên domain, thì một file Ansible inventory sẽ trỏ các server (địa chỉ IP hoặc tên domain) tới groups. File Inventory này có thể sẽ được tạo sẵn sau khi chúng ta cài đặt xong Ansible. Trong trường hợp chưa có file này thì chúng ta có thể làm như sau: sudo mkdir /etc/ansible sudo touch /etc/ansible/hostsSau đó, chúng ta edit file này như sau: [example] www.example.com 192.168.100.9Ở đây thì example là group của các server mà chúng ta quản lý. www.example.com và 192.168.100.9 là domain và địa chỉ IP của server ở trong group. Nếu chúng ta sử dụng port 22 cho việc SSH tới server, chúng ta có thể cần add :2222 vào địa chỉ, ví dụ: www.example.com:2222, vì Ansible mặc định là port 22 và sẽ không nhận được giá trị này từ file config của chúng ta Chạy Ad-Hoc Ansible commandAd-Hoc commands là các lệnh có thể được chạy riêng lẻ để thực hiện các chức năng nhanh chóng. Chúng có thể được sử dụng khi chúng ta muốn đưa ra một lệnh trên một server hoặc nhiều server. Như ở phần trên thì chúng ta đã tạo file inventory chứa các hosts mà chúng ta đã định nghĩa. Chúng ta có thể kiểm tra việc truy cập vào các hosts từ ansible server, chúng ta sử dụng lệnh sau: ansible -i hosts all -m pingSau khi thực hiện lệnh này thì trên terminal của chúng ta sẽ hiển thị trạng thái của lệnh, các hosts trong file inventory Chúng ta cũng có thể chỉ định cụ thể host nào mà chúng ta muốn chạy command: ansible -i hosts all -m ping --limit exampleTrong ví dụ này mình chỉ chạy lệnh trên host example. Ở lệnh này chúng ta có param --limit để chỉ định hosts nào trong file host Kết luậnTrong phần này mình giới thiệu với các bạn các kiến thức cơ bản, các thuật ngữ thường xuyên được sử dụng trong ansible và cách hoạt động của nó. Trong phần tiếp theo chúng ta cùng nhau tìm hiểu về playbook. Cảm ơn các bạn đã theo dõi bài viết Tài liệu tham khảo: |