Tôi bị kẹt. Googled địa ngục ra khỏi Web và không thể tìm thấy một câu trả lời.Làm cách nào để phân biệt giữa dàn dựng/sản xuất với khoảng không quảng cáo động?
Tôi đã sử dụng Ansible trong nhiều năm nhưng luôn có khoảng không quảng cáo tĩnh. Để phân biệt giữa các môi trường khác nhau như dàn dựng và sản xuất, tôi đã sử dụng các tệp khoảng không quảng cáo tĩnh khác nhau, tương ứng là staging
và production
. Khi tôi cần đến các máy chủ cung cấp dàn, tôi muốn làm:
ansible-playbook site.yml -i staging
Khi tôi muốn làm tương tự cho sản xuất, tôi muốn làm:
ansible-playbook site.yml -i production
Cả dàn dựng và sản xuất cần biến với nhau giá trị, vì vậy tôi có group_vars/staging
và group_vars/production
. Tất cả tốt và theo thực hành tốt nhất.
Bây giờ, tôi cần cung cấp EC2 phiên bản trong AWS. Tôi đang sử dụng this AWS guide. Tôi có một playbook với hai vở kịch. Đầu tiên là chạy với localhost
, tạo/tìm các phiên bản EC2 bắt buộc trong AWS và điền một nhóm với add_host
. Lần chơi thứ hai sử dụng nhóm đó để chạy với các cá thể EC2 được phát hiện trong lần chơi đầu tiên. Tất cả theo hướng dẫn đó.
Tất cả đều hoạt động tốt ngoại trừ một điều. Tôi không có ý tưởng làm thế nào để xác định môi trường để cung cấp và do đó các biến bắt buộc không được tải từ group_vars/(staging|production)
. Về cơ bản, những gì tôi muốn là một cái gì đó tương tự như -i (staging|production)
Tôi đã sử dụng tất cả những năm này với hàng tồn kho tĩnh, nhưng có vẻ như việc sử dụng -i
không có ý nghĩa bởi vì khoảng không quảng cáo là động. Tôi muốn một cách để có thể tải các biến số từ group_vars/staging
hoặc group_vars/production
dựa trên một đối số mà tôi chuyển đến ansible-playbook
khi tôi chạy biến đó.
Tôi làm như thế nào? Thực hành tốt nhất là gì?
Có lẽ bạn có thể làm điều gì đó với các sách chơi riêng? Một cái gì đó như production.yml và staging.yml. Những cuốn sách sau đó sẽ bao gồm site.yml, nhưng cũng bao gồm các vv cụ thể của env. –