क्‍यों नहीं aws क्लाउड फॉर्मेशन मेरे द्वारा निर्दिष्ट पैकेजों को इंस्‍टॉल करता है?


14

मैं AWS सेवाओं में बहुत नया हूँ। मैं AWS क्लाउड फॉर्मेशन का उपयोग करने की कोशिश कर रहा हूं और मैंने एक टेम्प्लेट बनाया है। टेम्पलेट त्रुटि मुक्त है और मैं इसका उपयोग करके मशीनें बनाने में सक्षम हूं।

लेकिन मैंने टेम्प्लेट में कुछ कॉन्फिगरेशन को जोड़ा है जैसे कि यह स्टार्टअप के दौरान टॉमकैट, गिट और अन्य चीजों को स्थापित करता है। लेकिन मेरे लिए ऐसा नहीं होता है।

यहाँ मैं कोड का एक हिस्सा है जिसका उपयोग मैंने टोमकैट को स्थापित करने के लिए किया है:

"Resources": {
    "Tomcat": {
        "Type": "AWS::EC2::Instance",
        "Metadata": {
            "AWS::CloudFormation::Init": {
                "config": {
                    "packages": {
                        "apt": {
                            "tomcat6": [],
                            "git": [],
                        }
                    }
                }
            }
        },

लेकिन जब मैं मशीन में लॉग इन करता हूं tomcatऔर न ही gitइंस्टॉल किया गया होता है!

अग्रिम में धन्यवाद।


मैं आपके टैग से मान रहा हूं कि यह उबंटू एएमआई है?
Mattdm

क्या आपने "गिट" के बाद "," को हटाने की कोशिश की है: []? यह वाक्यात्मक रूप से सही नहीं है।
एडविन

जवाबों:


23

मेरा मानना ​​है कि आपकी समस्या यहाँ पर भ्रम है कि क्लाउड-इनिट cfn-init के समान नहीं है।

  • क्लाउड-इनिट वह उपकरण है जो उबंटू एडब्ल्यूएस एएमआई के हिस्से के रूप में शुरू हुआ था जो उदाहरण मेटा डेटा के ईसी 2 उपयोगकर्ता-डेटा घटक की व्याख्या की अनुमति देता है। अमेज़ॅन लिनक्स ने इस उपकरण को भी अपनाया और इसे अपने एएमआई में बनाया।

  • cfn-init Amazon Linux के लिए AWS द्वारा निर्मित CloudFormation Helper Scripts नामक एक अलग टूलसेट का हिस्सा है जो आपके CloudFormation टेम्पलेट में नामित एक अतिरिक्त अनुभाग को पढ़ सकता है ।Metadata

इसलिए, उबंटू और अमेज़ॅन लिनक्स एएमआई दोनों में उपयोगकर्ता-डेटा तक पहुंचने के लिए क्लाउड-इनिट टूल प्रीइंस्टॉल्ड हैं, लेकिन केवल अमेज़ॅन लिनक्स में क्लाउडफॉर्मेशन मेटाडेटा का उपयोग करने के लिए क्लाउडफर्मेशन हेल्पर लिपियों को प्रीइंस्टॉल्ड किया गया है जैसे cfn-init।

हालाँकि, AWS उन पैकेजों को वितरित करता है जिनका उपयोग आप CloudFormation Metadata को पढ़ने के लिए कर सकते हैं। विशेष रूप से, इस टेम्पलेट को देखें कि आप पायथन-सेटप्टूल को स्थापित करने के लिए क्लाउड-इनिट उपयोगकर्ता-डेटा स्क्रिप्ट का उपयोग कैसे कर सकते हैं, क्लाउडफ़ॉर्मेशन हेल्पर लिपियों को डाउनलोड कर सकते हैं, उन्हें easy_install का उपयोग करके इंस्टॉल कर सकते हैं और फिर cnn-init को लागू कर सकते हैं।

नोट: अन्य वितरण या एएमआई हैं जो क्लाउड-इनिट या सीएफएन-इनिट का समर्थन कर सकते हैं, लेकिन मैं यहां सामान्य मामलों को कवर कर रहा हूं।


12

आपको उदाहरण के UserData गुण के अंदर cfn-init ( http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html ) पर कॉल करने की आवश्यकता है :

{
    "Resources": {
        "Tomcat": {
            "Type": "AWS::EC2::Instance",
            "Metadata": {
                "AWS::CloudFormation::Init": {
                    "config": {
                        "packages": {
                            "apt": {
                                "tomcat6": [],
                                "git": []
                            }
                        }
                    }
                }
            },
            "Properties": {
                "UserData": {
                    "Fn::Base64": {
                        "Fn::Join": ["", [
                            "#!/bin/bash\n",
                            "/opt/aws/bin/cfn-init -s ", {
                                "Ref": "AWS::StackName"
                            },
                            "    -r Tomcat",
                            "    --region ", {
                                "Ref": "AWS::Region"
                            }, "\n"
                        ]]
                    }
                }
            }
        }
    }
}

UserData गुण Base64 एन्कोडेड है, और आपको एक स्क्रिप्ट निर्दिष्ट करने की अनुमति देता है जिसे उदाहरण लॉन्च पर चलाया जाना चाहिए। यहां आप cfn-init को कॉल कर सकते हैं जो CloudFormation :: Init Metadata और वहां निर्दिष्ट सभी चीजों को सेटअप करेगा।

सीएफ स्टैक बनाते समय आप दूसरे पृष्ठ पर उन्नत सेटिंग्स में जाना चाहते हैं (मापदंडों को देने के बाद) और सुनिश्चित करें कि त्रुटि पर रोलबैक "नहीं" पर सेट है। इस तरह से अगर cfn-init स्क्रिप्ट किसी भी कारण से विफल हो जाती है तो आप उदाहरण के लिए ssh और अधिक जानकारी के लिए /var/log/cfn-init.log फ़ाइल को देख सकते हैं।


मुझे लगता है कि यह एक स्वीकृत उत्तर होना चाहिए।
एरिक वैन ब्राकेल

1

उपरोक्त उत्तर सही है। लेकिन आपको यह भी सुनिश्चित करना चाहिए कि आपने सफलतापूर्वक CloudFormation सहायक स्क्रिप्ट स्थापित की हैं। स्थापना विवरण के लिए कृपया http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-helper-scripts-reference.html का अनुसरण करें ।


-3
    "UserData"       : { "Fn::Base64" : { "Fn::Join" : ["", [
      "#!/bin/bash\n",
      "export DEBIAN_FRONTEND=noninteractive\n",
      "apt-get update && apt-get upgrade -y\n",
      "apt-get -y install python-setuptools\n",
      "easy_install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n",
      "/usr/local/bin/cfn-init --stack ", { "Ref":"AWS::StackName" }, " --resource <REPLACE_WITH_RESOURCENAME>", " --region ", { "Ref": "AWS::Region" }, "\n",

4
मुझे नहीं मिला ...
पियरे.विरेंस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.