Tôi hiện đang triển khai một sản phẩm mới và gặp một số vấn đề để cấu trúc Playbook và Vai trò của tôi. Tôi có ba giải pháp khác nhau và hy vọng nhận được một số thông tin đầu vào mà đường dẫn có thể là tốt nhất.
Sản phẩm này là một ứng dụng web trên máy chủ windows. Các bước sau đây là cần thiết để triển khai (mức cao):
- cài đặt javajdk
- cài đặt tomcat
- cài đặt win_service
- cấu hình regkes java
- cấu hình tomcat
- cài đặt ứng dụng web
- bắt đầu dịch vụ
Tôi sử dụng hàng tồn kho tĩnh cho prod và staging, group_vars, vai trò (được tạo bằng ansible-galaxy) nên có một số loại cấu trúc.
Giải pháp 1
Đặt mọi thứ vào một vở kịch lớn. Điều đó nghe có vẻ không tốt, nhưng có lợi thế là bạn biết các biến từ các cài đặt trước đó, ví dụ như tomcat
cần biết nơi đó JAVA_HOME
là ... với javajdk
cài đặt, do có nhiều hơn một java trên các máy không có JAVA_HOME
...
Giải pháp 2
Phá vỡ tất cả trong các vai trò nhỏ. Âm thanh tuyệt vời nhưng vai trò nên độc lập với nhau. Tôi không tìm thấy một phương pháp để tách các nhiệm vụ. Sẽ có ý nghĩa khi có các vai trò duy nhất install_tomcat
, ví dụ , config_tomcat
và thiết lập một vở kịch có các vai trò được đề cập theo trình tự?
Nhưng làm thế nào để một vai trò biết về nó, ví dụ như một tên đường dẫn cần thiết trong vai trò tiếp theo. -> Cài đặt thiết lập đường dẫn, cấu hình cần biết .. Tôi thực sự không chắc chắn để làm cho vai trò độc lập.
Giải pháp 3
Loại giải pháp 2. Có một vở kịch chính chỉ chứa các vai trò, phân chia càng nhiều càng tốt cho các vai trò. Có tên biến độc lập trong./roles/vars/main.yml
Bằng cách nào đó (?) Tìm thấy một vị trí cao hơn trong ưu tiên biến đổi với playbook nơi tất cả các var
định nghĩa cần thiết đi. Trong nội bộ, đường dẫn một biến đến vai trò hoặc đơn giản là vượt quá quy tắc một biến vai trò.
Ví dụ: một sản phẩm có một dịch vụ, tên dịch vụ thường là một phần của tên đường dẫn tomcat
. Các tomcat
tên không nên phụ thuộc vào dịch vụ, vì vậy cần có một tomcat_install_path
trong những vai trò mà còn là một service_name
với sản phẩm. Vì vậy, trong trường hợp playbook cho sản phẩm được gọi là tên dịch vụ nên là một phần của tên, tomcat_install
thì tên được gọi với tổng triển khai khác nhau sẽ không có vấn đề gì với tên dịch vụ.
Tôi sẽ đi với Giải pháp 3 nhưng tôi chưa tìm được cách thiết lập. Ý kiến của các chuyên gia là gì, giải pháp 3 có thể thực hiện được không, là một trong những giải pháp khác tốt hơn một lần hay là giải pháp thứ 4?