0

Ich möchte einen Stapel von opsworks erstellen und ich möchte Benutzerdaten in meinen Stack-Instanzen konfigurieren. Ich brauche keine automatische Skalierungsgruppe, daher können Metadaten und AWS :: CloudFormation :: Init in einer AWS :: OpsWorks :: Instance-Ressource genauso verwendet werden wie in AWS :: EC2 :: Instance und Startkonfiguration?Ist es möglich, AWS :: CloudFormation :: Init und Metadaten in der Ressource AWS :: OpsWorks :: Instance zu verwenden?

"Resources": { 
     "MyInstance": { 
     "Type": "AWS::EC2::Instance", 
     "Metadata" : { 
      "AWS::CloudFormation::Init" : { 
      "config" : { 
       "packages" : {}, 
       "groups" : {}, 
       "users" : {}, 
       "sources" : {}, 
       "files" : {}, 
       "commands" : {}, 
       "services" : {} 
      } 
      } 
     }, 
     "Properties": { 
      [...] 
     } 
     } 
    } 

Antwort

0

TLDR: Verwenden Chef Rezepte und Kochbücher konfigurieren eine AWS::OpsWorks::Instance, nicht cfn-init.

Intern verwendet OpsWorks cloud-init, um den AWS OpsWorks Stacks-Agenten auf der Instanz zu installieren (siehe Using Custom AMIs: Startup Behavior). Vermutlich aus diesem Grund wird das Festlegen eines benutzerdefinierten Benutzerdatenskripts in OpsWorks-Instanzen nicht unterstützt. Daher können Sie cfn-init beim Start nicht auf die gleiche Weise ausführen wie auf normalen AWS::EC2::Instance-Ressourcen.

Für eine Problemumgehung können Sie use a custom AMI für Ihre Instanz konfigurieren und das AMI konfigurieren, um cfn-init beim Start aufzurufen.

Es wird jedoch dringend von einer solchen Problemumgehung abgeraten - Sie sollten wirklich nie cfn-init (oder die entsprechenden AWS::CloudFormation::Init Metadaten) in einem OpsWorks-Stack verwenden. cfn-init ist völlig orthogonal zum viel robuster Chef-basierten Konfigurationsmanagement, das OpsWorks bietet, was vermutlich der Grund dafür ist, dass Sie OpsWorks überhaupt einsetzen. Einen Vorteil draus ziehen! Verwende Küchenrezepte und Kochbücher, um deine Instanz zu konfigurieren.

Wenn Sie wirklich cfn-init und benutzerdefinierte Benutzerdaten verwenden müssen (zum Beispiel um Legacy-Code zu unterstützen), dann würde ich empfehlen, an Standard-EC2-Instanzen festzuhalten, bis Sie Ihre Anwendungslogik auf benutzerdefinierte Chefkochbücher portieren können.

Verwandte Themen