Trang Beyond the Basics giới thiệu một số khái niệm giúp bạn quản lý quy trình làm việc Ansible của mình với cấu trúc thư mục và điều khiển mã nguồn. Tương tự như các Khái niệm cơ bản ở đầu trang hướng dẫn này, các khái niệm trung cấp này phổ biến trong tất cả các ứng dụng của Ansible.
Trang này giới thiệu một số khái niệm nâng cao như cấu trúc thư mục chuẩn cho các playbook, các biến, và các module trong Ansible. Ngoài ra, nó cũng giới thiệu về quản lý mã nguồn của Ansible playbook bằng các hệ thống điều khiển phiên bản (version control systems) như Git và Subversion.
Những khái niệm này sẽ giúp cho bạn tổ chức và quản lý tốt hơn các tài nguyên Ansible của mình, đồng thời giúp cho việc phối hợp làm việc giữa các thành viên trong đội ngũ được hiệu quả hơn. Nếu bạn muốn sử dụng Ansible để quản lý hệ thống của mình một cách chuyên nghiệp, việc hiểu rõ các khái niệm này là rất cần thiết.
A typical Ansible filetree
Ansible mong đợi tìm thấy một số file trong một số vị trí nhất định. Khi mở rộng các file inventory và tạo và chạy nhiều playbook mạng hơn, bạn nên tổ chức các file của mình trong thư mục dự án Ansible như sau:
.
├── ansible.cfg
├── group_vars/
│ ├── group1.yml
│ ├── group2.yml
│ └── all.yml
├── host_vars/
│ ├── host1.yml
│ ├── host2.yml
│ └── all.yml
├── inventory/
│ ├── dev/
│ │ ├── group_vars/
│ │ │ └── group1.yml
│ │ ├── host_vars/
│ │ │ ├── host1.yml
│ │ │ └── host2.yml
│ │ └── hosts
│ ├── prod/
│ │ ├── group_vars/
│ │ │ ├── group1.yml
│ │ │ └── group2.yml
│ │ ├── host_vars/
│ │ │ ├── host1.yml
│ │ │ └── host2.yml
│ │ └── hosts
│ └── hosts
├── library/
├── filter_plugins/
├── roles/
│ ├── common/
│ │ ├── tasks/
│ │ ├── handlers/
│ │ ├── files/
│ │ ├── templates/
│ │ ├── vars/
│ │ ├── defaults/
│ │ ├── meta/
│ │ └── README.md
│ ├── webserver/
│ └── database/
└── site.yml
Đây là một cấu trúc thư mục chuẩn cho các dự án Ansible. Trong đó:
- ansible.cfg: Tệp cấu hình của Ansible
- group_vars/: Thư mục chứa các biến được sử dụng bởi các nhóm (groups) trong file inventory
- host_vars/: Thư mục chứa các biến được sử dụng bởi các host trong file inventory
- inventory/: Thư mục chứa các file inventory và các file liên quan đến inventory
- library/: Thư viện chứa các module của Ansible không được cung cấp bởi Ansible mặc định
- filter_plugins/: Các plugin lọc dữ liệu
- roles/: Thư mục chứa các role
- site.yml: File chính chứa danh sách các playbook cần chạy
Việc tổ chức các file Ansible của mình trong một cấu trúc thư mục chuẩn như vậy sẽ giúp cho quản lý file của bạn được hiệu quả hơn, đồng thời giúp cho việc phối hợp làm việc giữa các thành viên trong đội ngũ được dễ dàng hơn.
Kiểm soát dự án của mình bằng Git
Khi bạn mở rộng danh sách đăng ký, các vai trò và playbook của mình, bạn nên đặt dự án Ansible của mình dưới sự kiểm soát mã nguồn. Chúng tôi khuyên dùng git cho việc kiểm soát mã nguồn. git cung cấp một hành trình kiểm tra, cho phép bạn theo dõi các thay đổi, lùi lại các lỗi, xem lịch sử và chia sẻ công việc của việc quản lý, bảo trì và mở rộng hệ sinh thái Ansible của bạn. Có rất nhiều hướng dẫn và hướng dẫn sử dụng git có sẵn.