Настройка экземпляров EC2 Windows без использования настраиваемого AMI

В настоящее время мы настраиваем стек CloudFormation на основе шаблона, созданного AWS Toolkit для Visual Studio при развертывании с использованием «шаблона балансировки нагрузки». Нам нужно создать сценарий, который несколько настраивает экземпляры EC2. В частности, мы хотим: 1. Установить два сертификата в хранилище сертификатов. 2. Настройте IIS на использование одного из сертификатов. 3. Включите TLS 1.2 в IIS.

Нам нужно установить эти сертификаты в IIS вместо балансировщика нагрузки, потому что нам нужно поддерживать аутентификацию сертификата клиента.

Мы хотели бы достичь этого без необходимости создавать пользовательский AMI, потому что мы хотим иметь возможность легко обновлять AMI по мере поступления новых версий. Мы используем следующее: ami-f6803f9f (по умолчанию используется шаблоном).

Поэтому мы хотим сделать эти настройки как часть шаблона CloudFormation. Я попытался создать простой файл (просто чтобы убедиться, что скрипт работает), используя часть шаблона «AWS :: CloudFormation :: Init». Однако, когда я запускаю стек, файл никогда не создается. Часть шаблона, которая должна создать файл, выглядит так:

 "Metadata" : {
    "AWS::CloudFormation::Init" : {
      "config" : {
      "files" : {
        "C:/ClientCA.pfx" : {
          "content" : { "Fn::Join" : ["", [
            "test1\n",
            "test2\n"
            ]]}
        }
      }
    }
  }
}

Поэтому у меня следующие вопросы: 1. Почему файл не создается? Это потому, что что-то не так с шаблоном, или этот AMI не поддерживает эти типы, если скрипты инициализации? 2. Мы планируем загрузить сертификаты из S3 с помощью «AWS :: CloudFormation :: Init» и установить их с помощью сценария PowerShell, который мы добавляем в UserData. Это хороший подход или нужно действовать по-другому?


person Yrlec    schedule 16.10.2012    source источник


Ответы (2)


Я только что протестировал ваш фрагмент с текущим AMI Windows Server 2012, и он отлично работал. Поэтому я предполагаю, что ami-f6803f9f уже является настраиваемым AMI (по крайней мере, я не могу найти его где-либо официально) и не имеет необходимой оркестровки для Развертывание приложений с помощью AWS CloudFormation (это общее объяснение для Unix / Linux, см. Bootstrapping AWS CloudFormation Windows Stacks (краткий пример, ориентированный на Windows):

AWS CloudFormation включает набор вспомогательных приложений (cfn-init, cfn-signal, cfn-get-metadata и cfn-hup), основанных на cloud-init. Эти вспомогательные приложения не только предоставляют функциональные возможности, аналогичные cloud-init, но также позволяют обновлять метаданные после того, как ваш экземпляр и приложения будут запущены и запущены. [...] [курсив мой]

Выделенные приложения - это те, которые отвечают за чтение и действие с метаданными, определенными в шаблоне, то есть создание C:/ClientCA.pfx в вашем примере. Эти вспомогательные приложения в настоящее время включены во все текущие Amazon Поддерживаемые EBS Windows Server 2012 RTM AMI, но их нет в AMI для Windows Server 2008 R2 с поддержкой Amazon EBS обычно, за исключением выделенных, таких как Windows Server 2008 R2, поддерживаемый Amazon EBS, 64-разрядная версия, английский язык - база для CloudFormation.

Очевидно, вы также можете установить эти сценарии помощника CloudFormation на пользовательском AMI и двигаться дальше, но если у вас нет особых причин для этого, я настоятельно рекомендую начать с текущего Amazon EBS-Backed Windows Server 2012 RTM AMI, который предоставляет эти и несколько других аналогичных компонентов для повышения производительности администрирования. коробки (например, Windows PowerShell 3.0 и новый Инструменты AWS для Winodws PowerShell).

person Steffen Opel    schedule 24.12.2012

Старый вопрос - но я полагаю, что причина, по которой файл не создается, заключается в том, что сценарий облачной информации не выполняет cfn-init.

Главное - убедиться, что вы обновили скрипты пользовательских данных ...

                "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
                "<script>\n",
                    "powershell.exe add-windowsfeature web-webserver -includeallsubfeature -logpath $env:temp\\webserver_addrole.log \n",
                    "powershell.exe add-windowsfeature web-mgmt-tools -includeallsubfeature -logpath $env:temp\\mgmttools_addrole.log \n",
                    "cfn-init.exe -v -s ", {"Ref" : "AWS::StackId"}, " -r WebServerLaunchConfiguration --region ", {"Ref" : "AWS::Region"}, "\n",
                "</script>\n",
                "<powershell>\n",
                    "new-website -name", {"Ref" : "Name"}, " -port 80 -physicalpath c:\\inetpub\\", {"Ref" : "Name"}, " -ApplicationPool \".NET v4.5\" -force \n",
                    "remove-website -name \"Default Web Site\" \n",
                    "start-website -name ", {"Ref" : "Name"}, " \n",
                "</powershell>"

Приведенный выше сценарий добавляет функции веб-сервера, инструменты управления, а затем запускает файл cfn-init. За анализ метаданных отвечает cfn-init.

Дополнительные сведения о начальной загрузке IIS см. на AWS в моем блоге Kloud.

person Pete - MSFT    schedule 12.08.2013