2013-07-11 52 views
11

Hiện tại chúng tôi có một dịch vụ đám mây phát triển (acme-dev-service) và dịch vụ đám mây sản xuất (acme-prod-service). Thiết lập hiện tại của chúng tôi trong giải pháp của chúng tôi có một dự án dịch vụ đám mây được gọi là acme.application sử dụng việc chuyển đổi các tệp .cscfg và .csdef để triển khai dự án cho hai môi trường (sản xuất và phát triển). Tôi không thích phương pháp chuyển đổi bởi vì nó cảm thấy như một chút của một hack với tôi. Vì vậy, sau khi làm một số nghiên cứu có vẻ như bạn có thể có nhiều tập tin cấu hình mà giải quyết một số vấn đề nhưng tôi đang chạy vào vấn đề bởi vì bạn chỉ được phép một định nghĩa dịch vụ. Điều này không hiệu quả với chúng tôi vì môi trường sản xuất yêu cầu các chứng chỉ bổ sung cũng như các ràng buộc hostHeader khác với môi trường dev của chúng tôi.Cấu hình dự án dịch vụ đám mây Azure (.csdef và .cscfg) trong nhiều môi trường

Vì vậy, có vẻ như chúng tôi không thể thoát khỏi việc sử dụng các phép biến đổi. Vì vậy, tôi đoán câu hỏi của tôi boils xuống để tôi nhìn vào các tập tin dự án dịch vụ Azure trong ánh sáng sai? Chúng ta có nên thực sự ánh xạ một dự án Azure cho một dịch vụ đám mây Azure không? Tôi có nên có một dự án Azure cho sản xuất và một dự án Azure thứ hai cho phát triển? Có cách nào tốt hơn để thực hiện việc này không? Hoặc thực hành tốt nhất để làm việc với nhiều môi trường trong Azure?

Trả lời

9

Tệp CSDefinition là cú đá thực sự ở đây. Nếu bạn có giá trị bạn cần phải khác nhau giữa hai môi trường (dev/test/stage/production, v.v.) thì bạn thực sự có ba tùy chọn:

1) Sửa đổi giá trị trước khi triển khai theo cách thủ công. Errr .... Được rồi .... bạn có hai lựa chọn.

1) Nhấn vào quy trình Xây dựng MS và xác định cấu hình đám mây nào bạn đã chọn (được sử dụng để xác định phiên bản của tệp .cscfg sẽ được sử dụng) và sau đó có bản sửa đổi .csdef sau khi tạo và trước khi đóng gói (có một thời gian khi tập tin đã được sao chép vào một thư mục khác ngay trước khi đóng gói và đây là nơi bạn muốn thực hiện thay đổi). Điều này có thể khó khăn, mặc dù tôi đã nhìn thấy nó được thực hiện và thậm chí đã làm như vậy bản thân mình trong những ngày đầu SDK. Đây là một bài đăng trên blog giải thích một ví dụ mà anh ấy đang sử dụng WebConfigTransformRunner để thực hiện điều đó: http://fabriccontroller.net/blog/posts/apply-xdt-transforms-to-your-servicedefinition-csdef-file/. Tôi không thực sự nghĩ rằng đây là lựa chọn tốt nhất của bạn bởi vì nó mờ đục. Nó không hiển nhiên những gì đang diễn ra và một người đến sau khi bạn duy trì mã sẽ không biết về đá quý nhỏ này và sẽ dành mãi mãi để tìm ra lý do tại sao một số giá trị họ đưa vào csdef ở đâu đó bằng cách nào đó bị ghi đè sau khi xuất bản một môi trường khác.

2) Sử dụng hai phương pháp tiếp cận Dự án Azure mà bạn đã đề cập. Bạn có thể thiết lập các định nghĩa xây dựng trong công cụ Xây dựng của bạn lựa chọn để xác định dự án Azure nào bạn muốn xây dựng và xuất bản. Cá nhân tôi nghĩ đây là cách tốt nhất để xử lý các tệp .csdef khác nhau. Nó thẳng về phía trước và không yêu cầu sửa đổi các tệp csproj. Tôi không phản đối việc thay đổi tập tin csproj, nó không quá rõ ràng và được nói như một người thừa hưởng những thứ như vậy, không dễ dàng tìm thấy khi mọi người làm điều đó và họ không có mặt để nói bạn về nó.

+0

Tôi biết tôi đến muộn với nhóm ở đây, nhưng bạn có nói rằng không có khái niệm về UAT được xây dựng thành dịch vụ đám mây xanh không? Chúng tôi dự kiến ​​sẽ đẩy thẳng đến sản phẩm mà không cần chủ sở hữu sản phẩm kiểm tra mọi thứ ?! Đó là lố bịch, phải không? – simonlchilds

+0

Không, tôi không nói điều đó chút nào. Trong thực tế, tôi đồng ý với bạn rằng nó sẽ là một ý tưởng tồi để không có thử nghiệm và nhiều môi trường. Tôi nói rằng nếu không có một công việc nhỏ các tập tin csdef là một trong những bạn sẽ có vấn đề với và sẽ phải thực hiện các bước bổ sung để làm cho nó mutli-môi trường. Nhưng những gì trong csdef có thể thậm chí không cần phải được sửa đổi cho mỗi môi trường. Hầu hết các chuỗi kết nối và như vậy là trong csconfig. Kích thước máy là trong csdef đó là phổ biến nhất tôi đã thấy rằng cần phải khác nhau. – MikeWo

+0

Tôi hiểu rồi. Nó chỉ cảm thấy như công việc khó khăn để đạt được một cái gì đó thực sự nên được cung cấp 'ra khỏi hộp' bởi đội bóng xanh, imho. – simonlchilds