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.
Argomenti
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 unCreationPolicy
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 dacfn-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: