2017-06-16 3 views
0

Ich habe eine Instanz Ressource wie solche:AWS Cloudformation - Teile Benutzerdaten Skript cfn-init über EC2S

testservice: 
    Type: 'AWS::EC2::Instance' 
    Metadata: 
    AWS::CloudFormation::Init: 
     configSets: 
     serviceConfigSet: 
      - serviceConfig 
     serviceConfig: 
     packages: 
      yum: 
      salt-minion: [] 
     commands: 
      hostnameConfig: 
      command: hostname test-service-1.0 
     services: 
      sysvinit: 
      salt-minion: 
       enabled: 'true' 
       ensureRunning: 'true' 
    Properties: 
    ImageId: !Ref BaseServiceAmi 
    KeyName: test_ssh_key 
    SubnetId: !Ref ServiceSubnetId 
    UserData: 
     'Fn::Base64': 
     'Fn::Sub': | 
      #!/bin/bash 

      yum update -y 

      yum install -y aws-cfn-bootstrap 

      /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource testservice --configsets serviceConfigSet --region ${AWS::Region} 

Allerdings mag ich das UserData Skript in einen Parameter bewegen und es über mehr Instanz wiederverwenden Ressourcen. Das sollte trivial sein, aber ich finde keinen Weg, den Namen der aktuellen Ressource in das Benutzerdatenskript zu bekommen (ich habe es explizit in diesem Teil gesetzt: --resource testservice).

Gibt es eine Möglichkeit, ich kann den Ressourcenname über Verweis aus dem Benutzerdatenskript erhalten, so dass ich es verallgemeinern kann? Es erscheint nicht in der Liste der Pseudo-Parameter.

Antwort

0

Ich glaube, die beste Option wäre, verschachtelte Stacks zu verwenden. Wenn Sie alle Einstellungen in Ihrer Ressource 'AWS :: EC2 :: Instance' in Parameter konvertieren können, können Sie einen Vorlagenstapel für diese Ressource erstellen und ihn von einer anderen Vorlage aus aufrufen.

Quick Info: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html#stackpolicy

Wie verwenden: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html

Verwandte Themen