Stack basati sul bootstrap Windows CloudFormation - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Stack basati sul bootstrap Windows CloudFormation

Questo argomento descrive come avviare uno Windows stack e risolvere i problemi relativi alla creazione di uno stack.

EC2 Dati utente nelle istanze

I dati utente sono una EC2 funzionalità di Amazon che consente di trasmettere script o informazioni di configurazione a un' EC2 istanza al momento dell'avvio.

Ad esempio Windows EC2 :

  • I dati utente vengono eseguiti come script batch.

  • È possibile utilizzare comandi batch (utilizzando <script> tag) o PowerShell script (utilizzando <powershell> tag).

  • L'esecuzione degli script è gestita da. EC2Launch

Importante

Se stai creando la tua Windows AMI da utilizzare con CloudFormation, assicurati che la versione EC2Launch v2 sia configurata correttamente. EC2Launchv2 è necessaria per consentire agli strumenti di CloudFormation bootstrap di inizializzare e configurare Windows correttamente le istanze durante la creazione dello stack. Per ulteriori informazioni, consulta Utilizzare l'agente EC2Launch v2 per eseguire attività durante l'avvio di un'istanza EC2 Windows nella Amazon EC2 User Guide.

Per informazioni su AWS Windows AMIs, consulta l'AWSWindowsAMI Reference.

CloudFormation script di supporto

Gli script di supporto sono utilità per la configurazione delle istanze durante il processo di bootstrap. Utilizzati con i dati EC2 degli utenti di Amazon, offrono potenti opzioni di configurazione.

CloudFormation fornisce i seguenti script di supporto in Python che puoi usare per installare software e avviare servizi su un' EC2 istanza Amazon che crei come parte del tuo stack:

  • cfn-init— Utilizzabile per recuperare e interpretare i metadati delle risorse, installare pacchetti, creare file e avviare servizi.

  • cfn-signal— Da utilizzare per segnalare con un CreationPolicy oWaitCondition, in modo da poter sincronizzare altre risorse nello stack quando la risorsa o l'applicazione prerequisita è pronta.

  • cfn-get-metadata— Utilizzato per recuperare i metadati per una risorsa o il percorso verso una chiave specifica.

  • cfn-hup— Utilizzato per verificare la presenza di aggiornamenti ai metadati ed eseguire hook personalizzati quando vengono rilevate modifiche.

Puoi chiamare gli script direttamente dal tuo modello. Lo script funziona in combinazione con i metadati delle risorse definiti nello stesso modello. Gli script vengono eseguiti sull' EC2istanza Amazon durante il processo di creazione dello stack.

Per ulteriori informazioni, consulta il riferimento agli script di CloudFormation supporto nella Template Reference Guide.AWS CloudFormation

Esempio di bootstrap di uno stack Windows

Esaminiamo frammenti di esempio di un modello di SharePoint server che esegue le seguenti azioni:

  • Configura i file di inizializzazione:cfn-credentials, e. cfn-hup.conf cfn-auto-reloader.conf

  • Scarica e installa un pacchetto come SharePoint Foundation sull'istanza del server.

  • Utilizza WaitCondition a per garantire che le risorse siano pronte.

  • Crea un utente e un gruppo di sicurezza IAM per l'accesso all'istanza.

  • Recupera un IP per l'istanza con Amazon Elastic IP (EIP).

Lo script di cfn-init supporto viene utilizzato per eseguire ognuna di queste azioni, in base alle informazioni contenute nella AWS::CloudFormation::Init risorsa del modello.

La AWS::CloudFormation::Init sezione ha un nome SharePointFoundation e inizia con una dichiarazione standard:

"SharePointFoundation": { "Type" : "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : {

Successivamente, AWS::CloudFormation::Init viene dichiarata la files sezione di:

"files" : { "c:\\cfn\\cfn-hup.conf" : { "content" : { "Fn::Join" : ["", [ "[main]\n", "stack=", { "Ref" : "AWS::StackName" }, "\n", "region=", { "Ref" : "AWS::Region" }, "\n" ]]} }, "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf" : { "content": { "Fn::Join" : ["", [ "[cfn-auto-reloader-hook]\n", "triggers=post.update\n", "path=Resources.SharePointFoundation.Metadata.AWS::CloudFormation::Init\n", "action=cfn-init.exe -v -s ", { "Ref" : "AWS::StackName" }, " -r SharePointFoundation", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]} }, "C:\\SharePoint\\SharePointFoundation2010.exe" : { "source" : "http://d3adzpja92utk0.cloudfront.net/SharePointFoundation.exe" } },

Qui vengono creati tre file e collocati nella directory C:\cfn sull'istanza del server. Tali file sono:

  • cfn-hup.conf, il file di configurazione percfn-hup.

  • cfn-auto-reloader.conf, il file di configurazione per l'hook utilizzato da cfn-hup per avviare un aggiornamento (chiamatacfn-init) quando i metadati contenuti cambiano. AWS::CloudFormation::Init

È inoltre disponibile un file che viene scaricato nel server: SharePointFoundation.exe. Questo file viene utilizzato per l'installazione SharePoint sull'istanza del server.

Importante

Poiché i percorsi Windows utilizzano il carattere barra rovesciata ('\'), è necessario ricordarsi sempre di evitare correttamente tutte le barre rovesciate anteponendo un'altra barra rovesciata ogni volta che si fa riferimento a un percorso nel modello. Windows CloudFormation

La prossima è la sezione, che sono i comandi. commands cmd.exe

"commands" : { "1-extract" : { "command" : "C:\\SharePoint\\SharePointFoundation2010.exe /extract:C:\\SharePoint\\SPF2010 /quiet /log:C:\\SharePoint\\SharePointFoundation2010-extract.log" }, "2-prereq" : { "command" : "C:\\SharePoint\\SPF2010\\PrerequisiteInstaller.exe /unattended" }, "3-install" : { "command" : "C:\\SharePoint\\SPF2010\\setup.exe /config C:\\SharePoint\\SPF2010\\Files\\SetupSilent\\config.xml" }

Poiché i comandi nell'istanza vengono elaborati in ordine alfabetico in base al nome, ogni comando è preceduto da un numero che indica l'ordine di esecuzione desiderato. Quindi, possiamo assicurarci che il pacchetto di installazione venga prima estratto, tutti i prerequisiti vengano quindi installati e infine che SharePoint venga avviata l'installazione di.

La prossima è la sezioneProperties:

"Properties": { "InstanceType" : { "Ref" : "InstanceType" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [ {"Ref" : "SharePointFoundationSecurityGroup"} ], "KeyName" : { "Ref" : "KeyPairName" }, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "<script>\n", "cfn-init.exe -v -s ", { "Ref" : "AWS::StackName" }, " -r SharePointFoundation", " --region ", { "Ref" : "AWS::Region" }, "\n", "cfn-signal.exe -e %ERRORLEVEL% ", { "Fn::Base64" : { "Ref" : "SharePointFoundationWaitHandle" }}, "\n", "</script>" ]]}} }

In questa sezione, la UserData proprietà contiene uno cmd.exe script che verrà eseguito dacfn-init, circondato da <script> tag. È possibile utilizzare uno Windows PowerShell script qui invece circondandolo di <powershell> tag. Per gli Windows stack, è necessario codificare nuovamente l'URL del gestore della condizione di attesa in base a 64.

SharePointFoundationWaitHandleè referenziato qui ed è eseguito con. cfn-signal I WaitConditionHandle e associati WaitCondition vengono dichiarati di seguito nel modello:

"SharePointFoundationWaitHandle" : { "Type" : "AWS::CloudFormation::WaitConditionHandle" }, "SharePointFoundationWaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "DependsOn" : "SharePointFoundation", "Properties" : { "Handle" : {"Ref" : "SharePointFoundationWaitHandle"}, "Timeout" : "3600" } }

Poiché l'esecuzione di tutti i passaggi e l'installazione SharePoint potrebbero richiedere del tempo, ma non un'ora intera, occorre WaitCondition attendere un'ora (3600 secondi) prima del timeout.

Se tutto va bene, viene utilizzato un IP elastico per fornire l'accesso all'istanza: SharePoint

"Outputs" : { "SharePointFoundationURL" : { "Value" : { "Fn::Join" : ["", ["http://", { "Ref" : "SharePointFoundationEIP" } ]] }, "Description" : "SharePoint Team Site URL. Please retrieve Administrator password of the instance and use it to access the URL" }

Una volta completata la creazione dello stack, l'indirizzo IP fornito da EIP verrà visualizzato nella scheda Output della console. CloudFormation Tuttavia, prima di poter accedere all'istanza, è necessario recuperare la password di amministratore temporanea generata per l'istanza. Per ulteriori informazioni, consulta Connect to your Windows istance using RDP nella Amazon EC2 User Guide.

Gestisci i servizi Windows

WindowsI servizi vengono gestiti allo stesso modo dei servizi Linux, tranne per il fatto che si utilizza una windows chiave anzichésysvinit. L'esempio seguente avvia il cfn-hup servizio, lo imposta su Automatico e riavvia il servizio se cfn-init modifica i c:\cfn\hooks.d\cfn-auto-reloader.conf file c:\cfn\cfn-hup.conf o di configurazione.

"services" : { "windows" : { "cfn-hup" : { "enabled" : "true", "ensureRunning" : "true", "files" : ["c:\\cfn\\cfn-hup.conf", "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf"] } } }

È possibile gestire altri Windows servizi allo stesso modo utilizzando il nome, non il nome visualizzato, per fare riferimento al servizio.

Risolvi i problemi relativi alla creazione degli stack

Se lo stack fallisce durante la creazione, il comportamento predefinito prevede il rollback in caso di errore. Sebbene sia in genere una buona impostazione predefinita perché evita costi non necessari, rende difficile il debug del motivo dell'errore di creazione dello stack.

Per disattivare questo comportamento durante la creazione o l'aggiornamento dello stack con la CloudFormation console, scegli l'opzione Preserva risorse con successo nella sezione Opzioni di errore dello stack. Per ulteriori informazioni, consulta Scegli come gestire gli errori durante il provisioning delle risorse. Ciò consente di accedere all'istanza e visualizzare i file di registro per individuare i problemi riscontrati durante l'esecuzione degli script di avvio.

Log importanti da guadare sono:

  • Il log di EC2 configurazione all'indirizzo %ProgramData%\Amazon\EC2Launch\log\agent.log

  • Il log cfn-init in C:\cfn\log\cfn-init.log

Per ulteriori log, consulta i seguenti argomenti nella Amazon EC2 User Guide: