Kapybara
Published on

Tự động hóa hệ thống với Ansible

Authors
  • avatar
    Name
    Khoa (kapybara)
    Occupation
    Full-stack developer

Giới thiệu

Ansible là một công cụ tự động hóa mạnh mẽ, được thiết kế để giúp các nhà phát triển và chuyên gia DevOps đơn giản hóa việc quản lý cấu hình và triển khai ứng dụng. Không giống như nhiều công cụ khác, Ansible không yêu cầu cài đặt agent trên các máy chủ, giúp quá trình tích hợp trở nên đơn giản hơn rất nhiều.

Tại sao chọn Ansible?

  • Khả năng mở rộng tuyệt vời.
  • Giao diện dễ hình dụng, dành cho người mới bắt đầu.
  • Công đồng hỗ trợ lớn, với rất nhiều tài liệu và tài nguyên.

Bài viết này được thiết kế dành riêng cho những người mới bắt đầu tìm hiểu về DevOps, giúp bạn dễ dàng tiếp cận Ansible mà không cần nhiều kiến thức chuyên sâu.

Từ khoá SEO: Ansible, tự động hóa, DevOps, quản lý cấu hình, triển khai ứng dụng


Cài đặt Ansible

Các hệ điều hành hỗ trợ

Ansible chạy trên nhiều hệ điều hành phổ biến như:

  • Linux (Ubuntu, CentOS, Red Hat Enterprise Linux, v.v.)
  • MacOS
  • Windows (có thể sử dụng WSL cho hệ điều hành Linux)

Các phương pháp cài đặt

  1. Trên Linux
    • Ubuntu: sudo apt update && sudo apt install ansible
    • CentOS/Red Hat: sudo yum install ansible
  2. Trên MacOS
    • Sử dụng Homebrew: brew install ansible
  3. Từ source
    • Clone source code từ GitHub: git clone https://github.com/ansible/ansible.git
    • Thực hiện các bước build.

Kiểm tra cài đặt

Sau khi cài đặt, bạn có thể dùng lệnh sau để kiểm tra:

ansible --version

Khái niệm cơ bản về Ansible

Inventory

Inventory trong Ansible là file chứa danh sách các máy chủ được quản lý.

  • Tạo file inventory:
[webservers]
192.168.1.10
192.168.1.11

[dbservers]
192.168.1.20
  • Cách sử dụng:
ansible all -i inventory -m ping

Modules

Modules là các khối lệnh dùng để thực thi tác vụ cụ thể. Một số modules phổ biến:

  • file: Quản lý file, thư mục.
  • apt: Quản lý gói phần mềm trên Ubuntu.
  • yum: Quản lý gói phần mềm trên CentOS/Red Hat.

Playbook

Playbook là file YAML được dùng để mô tả các bước tự động hóa:

- hosts: webservers
  tasks:
    - name: Install nginx
      apt:
        name: nginx
        state: present

Viết một Ansible Playbook đầu tiên

Tình huống thực tế

Cài đặt Nginx trên một danh sách máy chủ.

Phân tích Playbook

- hosts: webservers
  become: yes
  tasks:
    - name: Update apt cache
      apt:
        update_cache: yes

    - name: Install nginx
      apt:
        name: nginx
        state: present

    - name: Start nginx service
      service:
        name: nginx
        state: started
  • Directive: hosts, become, tasks
  • Task: Là mỗi bước cần thực thi.
  • Handlers: Xử lý sau khi task hoàn thành.

Thực thi Playbook

ansible-playbook -i inventory playbook.yml

Các khái niệm nâng cao

Variables

Variables giúp playbook linh hoạt hơn:

- hosts: webservers
  vars:
    app_name: nginx
  tasks:
    - name: Install {{ app_name }}
      apt:
        name: "{{ app_name }}"

Templates

Sử dụng Jinja2 để tạo file cấu hình linh hoạt:

- template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf

Roles

Roles giúp tổ chức Playbook theo cấu trúc logic, dễ bảo trì.

roles/
  nginx/
    tasks/
    templates/
    vars/

Tích hợp Ansible với các công cụ khác

Ansible Tower

Ansible Tower cung cấp giao diện web để quản lý Ansible tỉnh trung.

Tích hợp CI/CD

Ansible dễ dàng tích hợp vào các pipeline CI/CD như Jenkins hoặc GitLab CI/CD:

  • Sử dụng plugin Ansible trong Jenkins.
  • Thêm Ansible vào GitLab Runner jobs.

Kết luận

Qua bài viết này, bạn đã nắm được những kiến thức cơ bản về Ansible, từ khái niệm inventory, playbook, đến các khái niệm nâng cao như templates và roles.

Tài liệu tham khảo:

Hãy thực hành thường xuyên để nâng cao kỹ năng và tự tin sử dụng Ansible trong dự án thực tế!