Aws bulut oluşumu neden belirttiğim paketleri kurmuyor?


14

AWS hizmetlerinde çok yeniyim. AWS bulut oluşumunu kullanmaya çalışıyorum ve bir şablon oluşturdum. Şablon hatasız ve bunu kullanarak makineler oluşturabiliyorum.

Ancak, şablona başlangıç ​​sırasında tomcat, git ve diğer şeyleri yükleyecek şekilde bazı yapılandırma ekledim. Ama bu benim için olmaz.

Tomcat'i yüklemek için kullandığım kodun bir kısmı:

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

Ancak makineye giriş yaptığımda ne yüklü ne tomcatde gitkurulu!

Şimdiden teşekkürler.


Etiketlerinizden bunun bir Ubuntu AMI olduğunu varsayıyorum?
mattdm

"Git": [] sonrasında "," işaretini kaldırmayı denediniz mi? Sözdizimsel olarak doğru değil.
Edwin

Yanıtlar:


23

Buradaki sorunun, bulut initinin cfn-init ile aynı olmadığı konusunda karışıklık olduğuna inanıyorum.

  • cloud-init , Ubuntu AWS AMI'lerinin bir parçası olarak başlatılan ve örnek meta verilerinin EC2 kullanıcı-veri bileşeninin yorumlanmasına izin veren araçtır. Amazon Linux da bu aracı benimsedi ve AMI'lerine yerleştirdi.

  • cfn-init , Amazon Linux için AWS tarafından oluşturulan ve CloudFormation şablonunuzda adlandırılan ek bir bölümü okuyabilen CloudFormation Yardımcı Komut Dosyaları adlı farklı bir araç setinin bir parçasıdır .Metadata

Bu nedenle, Ubuntu ve Amazon Linux AMI'ların her ikisinde de kullanıcı verilerine erişmek için önceden yüklenmiş bulut init araçları vardır, ancak yalnızca Amazon Linux'ta CloudFormation Meta Verilerine erişmek için önceden cfn-init gibi önceden yüklenmiş CloudFormation Yardımcı Komut Dosyaları bulunur .

Ancak AWS , CloudFormation Meta Verilerini okumak için kullanabileceğiniz paketleri dağıtır. Özellikle, python-setuptools'u yüklemek, CloudFormation Yardımcı Komut Dosyalarını indirmek, easy_install kullanarak yüklemek ve cfn-init'i çağırmak için nasıl bir bulut init kullanıcı-veri komut dosyası kullanabileceğinizi öğrenmek için bu şablona bakın.

Not: Cloud-init veya cfn-init'i destekleyebilecek diğer dağıtımlar veya AMI'ler vardır, ancak burada sadece genel durumları ele alıyorum.


12

Örneğin UserData özelliği içindeki cfn-init'i ( http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html ) aramanız gerekir :

{
    "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 özelliği Base64 kodludur ve örnek başlatma sırasında çalıştırılması gereken bir komut dosyası belirtmenize olanak tanır. Burada CloudFormation :: Init Meta Verilerini okuyacak ve orada belirtilen her şeyi ayarlayacak cfn-init'i arayabilirsiniz.

Ayrıca CF Stack'i oluştururken, ikinci sayfada (parametrelerini verdikten sonra) gelişmiş ayarlara gitmek ve Hata durumunda Geri Alma'nın "Hayır" olarak ayarlandığından emin olmak isteyebilirsiniz. Bu şekilde cfn-init betiği herhangi bir nedenle başarısız olursa, örneğe ssh yazabilir ve daha fazla bilgi için /var/log/cfn-init.log dosyasını kontrol edebilirsiniz.


Bunun kabul edilen cevap olması gerektiğini düşünüyorum.
Erik van Brakel


-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",

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.