2016-11-21 3 views
0

Ich baue ein Amazon Cloudformation-Skript, das mir einen Reverse-Proxy mit wenigen Werten ausgefüllt zu konfigurieren erfordert Ich habe Menschen tun so etwas gesehen.Gebäudekonfigurationsdateien mit Amazon Cloudformation

"Fn::Join": [ 
    "", 
    [ 
    "events {\n", 
    " worker_connections 1024;\n", 
    "}\n", 
    "http {\n", 
    " server {\n", 
    " location/{\n", 
    "  proxy_pass http://", 
    { 
     "Fn::GetAtt": [ 
     "FELoadBalancer", 
     "DNSName" 
     ] 
    }, 
    ";\n", 
    "  proxy_read_timeout 90;\n", 
    "  proxy_redirect default;\n", 
    "  proxy_set_header Host $host:$server_port;\n", 
    "  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n", 
    "  proxy_set_header X-Real-IP $remote_addr;\n", 
    " }\n", 
    " }\n", 
    "}\n" 
    ] 
] 

Aber das ist, nun, Gott-schrecklich-hässlich.

Gibt es eine für Menschen leichter lesbare und leichter zu wartende Möglichkeit, diese Konfigurationsabschnitte zu erstellen?

Antwort

1

bereits vorgeschlagen, verwenden YAML stattdessen https://aws.amazon.com/blogs/aws/aws-cloudformation-update-yaml-cross-stack-references-simplified-substitution/, so etwas wie:

UserData: 
    'Fn::Base64': !Sub 
    - | 
     events { 
     worker_connections 1024; 
     } 
     http { 
     server { 
      location/{ 
      proxy_pass http://" 
       Fn::GetAtt: 
       FELoadBalancer 
       DNSName 
       ; 
      proxy_read_timeout 90; 
      proxy_redirect default; 
      proxy_set_header Host $host:$server_port; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-Real-IP $remote_addr; 
      } 
     } 
     } 

Darüber hinaus, dass Sie eine Wolke boothook zu verwenden, könnte der Lage sein, die in einer Datei auf der Instanz definiert werden kann? http://cloudinit.readthedocs.io/en/latest/topics/format.html#cloud-boothook

+0

Ich werde dir dieses hier geben, weil du ein bisschen mehr als nur einen Link zur Verfügung gestellt hast, gute Antwort. Vielen Dank! –

2

Die einzigen von CloudFormation unterstützten Formate sind JSON und YAML. Weitere Informationen zu YAML finden Sie unter https://aws.amazon.com/about-aws/whats-new/2016/09/aws-cloudformation-introduces-yaml-template-support-and-cross-stack-references/.

Sie können auch Frameworks von Drittanbietern verwenden, mit denen Sie Ihre Infrastruktur in verschiedenen Formaten codieren und sie für Sie in JSON/YAML auflösen können. Siehe https://www.terraform.io/ für ein beliebtes Framework.

Verwandte Themen