Создание файлов конфигурации с помощью Amazon Cloudformation

Я создаю сценарий 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"
  ]
]

Но это, ну, ужасно-ужасно-уродливо.

Есть ли более удобочитаемый и простой в сопровождении способ создания этих разделов конфигурации?


person Liam M    schedule 21.11.2016    source источник


Ответы (3)


Уже предлагалось вместо этого использовать YAML, https://aws.amazon.com/blogs/aws/aws-cloudformation-update-yaml-cross-stack-references-simplified-substitution/, например:

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;
          }
        }
      }

Кроме того, вы можете использовать облачный загрузчик, который можно определить в файле на экземпляре? http://cloudinit.readthedocs.io/en/latest/topics/format.html#cloud-boothook

person NHol    schedule 23.11.2016
comment
Я собираюсь дать вам это, потому что вы предоставили немного больше, чем просто ссылку, хороший ответ. Спасибо! - person Liam M; 26.11.2016

CloudFormation поддерживает только форматы JSON и YAML.

См. документы CloudFormation для получения дополнительной информации о YAML.

Вы также можете использовать сторонние фреймворки, которые позволяют вам кодировать вашу инфраструктуру в разных форматах и ​​позволять им преобразовывать их в JSON/YAML для вас. См. этот пример популярной платформы.

person justderb    schedule 21.11.2016

Возможно, вы захотите взглянуть на шаблон усов. Я не использовал их, но кажется, что это то, для чего они.

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-init.html#aws-resource-init-files

person Tim Bassett    schedule 23.11.2016