Playbook ansible của tôi bao gồm một số vai trò, ví dụ chuồng bồ câu
, hậu tố
, postgres
và rspamd
. Tất cả chúng đều yêu cầu chứng chỉ SSL, được tạo bởi certbot
(cho phép mã hóa) vai trò. Vì lý do này và để xử lý dễ dàng hơn, tất cả các vai trò đều tuân theo cùng một cấu trúc dữ liệu để xác định chứng chỉ SSL với các yêu cầu khác nhau:
certbot_domains: []
dovecot_domains:
- tên: imap1.example.com
subject_alternative_names: []
- tên: imap1.department-a.example.com
subject_alternative_names: []
- tên: pop3.example.com
subject_alternative_names: []
- tên: pop3.department-a.example.com
subject_alternative_names: []
postfix_domains:
- tên: smtp1.example.com
chủ đề_thay thế_names:
- smtp1.department-a.example.com
postgres_domain:
- tên: postgres.example.com
subject_alternative_names: []
rspamd_domain:
- tên: rspamd.example.com
chủ đề_thay thế_names:
- rspamd.department-a.example.com
Tuy nhiên, tôi muốn tránh bao gồm vai trò certbot
trong vai trò chuồng bồ câu
, hậu tố
, postgres
và rspamd
tự động tạo chứng chỉ, vì mỗi lần sẽ được cài đặt nginx
, tệp vhosts.conf cho từng tên miền và một số đoạn trích để cung cấp đường dẫn /.well-known/acme-challange
như bí danh.
Để tránh mỗi lần cài đặt nginx
, định cấu hình các đoạn mã, v.v. nên là các tác vụ chỉ chạy một lần. biến certbot_domains
sẽ được gia hạn bởi dovecot_domains
, postfix_domains
, postgres_domains
và rspamd_domains
và việc cài đặt nginx và vhost của chúng sẽ là nhiệm vụ cuối cùng. Có lẽ đồ họa sau đây có thể mô tả vấn đề chính xác hơn.
Nếu đã có thứ gì đó từ ansible, tôi sẽ rất biết ơn về một đoạn mã nhỏ giúp giải pháp dễ hiểu hơn.