हम वीपीसी के उपयोग के लिए क्लाउडफॉर्मेशन टेम्पलेट को अपने अनुप्रयोगों का अनुकूलन कर रहे हैं। इस टेम्पलेट के भीतर हमें क्लाउडफॉर्मेशन स्टैक्स के बीच संघर्ष नहीं करने के लिए, हमारे वीपीसी सबनेट्स के लिए उपयोग किए गए सीआईडीआर ब्लॉक को प्रोग्रामेटिक रूप से उत्पन्न करने की आवश्यकता है।क्लाउडफॉर्मेशन टेम्पलेट्स में प्रोग्रामेटिक रूप से सबनेट सीआईडीआर ब्लॉक उत्पन्न करना (या एक साथ पूर्णांक जोड़ना)
मेरे प्रारंभिक योजना, श्रृंखलाबद्ध तार द्वारा CIDRs एक साथ उत्पन्न करने के लिए किया गया था उदाहरण के लिए:
"ProxyLoadBalancerSubnetA" : {
"Type" : "AWS::EC2::Subnet",
"Properties" : {
"VpcId" : { "Ref" : "Vpc" },
"AvailabilityZone" : "eu-west-1a",
"CidrBlock" : { "Fn::Join" : [ ".", [ { "Ref" : "VpcCidrPrefix" }, "0.0/24" ] ] }
}
},
पर आगे विचार तथापि, हम नहीं बल्कि हमारे ढेर में से प्रत्येक के लिए एक VPC की तुलना में एक भी VPC उपयोग करने की आवश्यकता ।
एडब्ल्यूएस एक /16
सीआईडीआर ब्लॉक की एक अधिकतम उपयोग करने के लिए VPCs प्रतिबंधित (हम के लिए इस सीमा को बढ़ाने के लिए कहा है, लेकिन यह जाहिरा तौर पर संभव नहीं है)। इसका मतलब है कि इस संगतता विधि का उपयोग करना हमारे लिए अब संभव नहीं है क्योंकि हमारे प्रत्येक स्टैक्स में सबनेट्स की आवश्यकता होती है जो कुल में 255 से अधिक पते फैलती हैं।
मैं उन्हें CloudFormation टेम्पलेट में पैरामीटर के रूप में परिभाषित करने के लिए होने के बजाय ऑन-द-मक्खी सीआईडीआर ब्लॉक जनरेट करना चाहते हैं,
एक विचार मैं था प्रत्येक ढेर एक "आधार पूर्णांक" होने और जोड़ने था प्रत्येक सबनेट के सीआईडीआर ब्लॉक के लिए।
उदाहरण के लिए:
"CidrBlock" : { "Fn::Join" : [ ".", [ { "Ref" : "VpcCidrPrefix" }, { "Fn::Sum", [ { "Ref" : "VpcCidrStart" }, 3 ] }, "0/24 ] ] }
कहाँ VpcCidrStart
एक पूर्णांक है कि मूल्य कि तीसरे सीआईडीआर ओकटेट स्क्रिप्ट के भीतर से शुरू कर देना चाहिए सेट है, और 3
सबनेट संख्या है।
जाहिर Fn::Sum
आंतरिक समारोह हालांकि मौजूद नहीं है, इसलिए मुझे पता है कि अगर कोई VPC में पूर्णांक जोड़ने के लिए एक समाधान था चाहता था (यह कुछ ऐसा है, संभव नहीं होना चाहिए के रूप में CloudFormation स्ट्रिंग उन्मुख है की तरह लगता है), या सामान्य रूप से इस conundrum के लिए एक बेहतर समाधान।
परिकलित मान का उल्लेख कर सकते मैं पहले से ही एक पर काम करना शुरू किया था "स्टैक मैनेजर" एप्लिकेशन उन स्थितियों को संभालने के लिए जहां स्टेजिंग और उत्पादन वातावरण को थोड़ा अलग सेटअप की आवश्यकता है, और रात में गैर-उत्पादन वातावरण के "रोशनी-आउट" को स्वचालित करने के लिए - इसलिए मुझे लगता है कि यह समाधान हमारे लिए समझ में आता है। एक शर्म की बात है कि क्लाउडफॉर्मेशन में इन सुविधाओं की मूल रूप से कमी नहीं है। – roberthl
यदि आपके पास पहले से नहीं है, तो शायद आपके उपयोग-मामले का वर्णन करना और आधिकारिक [एडब्ल्यूएस क्लाउडफॉर्मेशन फ़ोरम] (https://forums.aws.amazon.com/forum) पर अपना फीचर अनुरोध करना एक अच्छा विचार होगा। jspa? forumID = 92)। मुझे पता है कि विकास दल वहां समर्थन का समर्थन करता है। –
मुझे पता है कि यह थोड़ी देर हो गया है, लेकिन मैंने इसे लागू किया और हाल ही में [इसे गिटहब पर प्रकाशित किया] [https://github.com/royaloperahouse/stack-manager)। एडब्ल्यूएस ने हाल ही में क्लाउडफॉर्मेशन में मूल तर्क और गणित जोड़ा है, लेकिन यह बल्कि बोझिल है। – roberthl