Utilizzo di Document Builder (Generatore documenti) per la creazione di runbook - AWS Systems Manager

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à.

Utilizzo di Document Builder (Generatore documenti) per la creazione di runbook

Se i runbook AWS Systems Manager pubblici non supportano tutte le azioni che desideri eseguire sulle tue AWS risorse, puoi creare i tuoi runbook. Per creare un runbook personalizzato, puoi creare manualmente un file locale YAML o di JSON formato con le azioni di automazione appropriate. In alternativa, puoi utilizzare Document Builder (Generatore documenti) nella console di Automazione Systems Manager per creare un runbook personalizzato.

Utilizzando Document Builder, è possibile aggiungere azioni di automazione al runbook personalizzato e fornire i parametri richiesti senza dover utilizzare o utilizzare JSON la sintassi. YAML Dopo aver aggiunto i passaggi e creato il runbook, il sistema converte le azioni aggiunte nel YAML formato che Systems Manager può utilizzare per eseguire l'automazione.

Inoltre, i runbook supportano l'uso di Markdown, un linguaggio di markup, che consente di aggiungere descrizioni in stile wiki ai runbook e alle singole fasi all'interno del runbook. Per ulteriori informazioni sull'utilizzo di Markdown, consulta Utilizzo di Markdown in AWS.

Creazione di un runbook utilizzando Document Builder (Generatore documenti)

Prima di iniziare

Ti consigliamo di leggere le diverse operazioni che è possibile utilizzare all'interno di un runbook. Per ulteriori informazioni, consulta Riferimento alle operazioni del servizio di automazione di Systems Manager.

Per creare un runbook utilizzando Document Builder
  1. Apri la AWS Systems Manager console all'indirizzo. https://console.aws.amazon.com/systems-manager/

  2. Nel riquadro di navigazione, scegli Documenti.

  3. Scegliere Create automation (Crea automazione).

  4. Per Name (Nome), inserire un nome descrittivo per il runbook.

  5. Per Document description (Descrizione documento), specificare la descrizione dello stile markdown per il runbook. È possibile fornire istruzioni per l'utilizzo del runbook, delle fasi numerate o di qualsiasi altro tipo di informazioni per descrivere il runbook. Fare riferimento al testo predefinito per informazioni sulla formattazione del contenuto.

    Suggerimento

    Passare da Hide preview (Nascondi anteprima) a Show preview (Mostra anteprima) e viceversa per vedere come appare il contenuto della descrizione durante la composizione.

  6. (Facoltativo) In Assumi ruolo, inserisci il nome o il ruolo ARN di servizio per eseguire azioni per tuo conto. Se non si specifica un ruolo, il servizio di automazione utilizza le autorizzazioni di accesso dell'utente che esegue l'automazione.

    Importante

    Per i runbook non di proprietà di Amazon che utilizzano l'operazione aws:executeScript, è necessario specificare un ruolo. Per informazioni, consultare Autorizzazioni per l'utilizzo di runbook.

  7. (Facoltativo) Per Outputs (Output), inserire eventuali output per l'automazione di questo runbook per renderli disponibili per altri processi.

    Ad esempio, se il runbook ne crea uno nuovoAMI, puoi specificare [». CreateImage ImageId«], quindi utilizzate questo output per creare nuove istanze in un'automazione successiva.

  8. (Facoltativo) Espandere la sezione Input parameters (Parametri di input) e svolgere le seguenti operazioni.

    1. Per Parameter name (Nome parametro), inserire un nome descrittivo per il parametro del runbook che si sta creando.

    2. Per Type (Tipo), scegliere un tipo per il parametro, ad esempio String o MapList.

    3. Per Required (Obbligatorio), effettuare una delle seguenti operazioni:

      • Selezionare Yes (Sì) se per questo parametro del runbook deve essere fornito un valore durante il tempo di esecuzione.

      • Selezionare No se il parametro non è richiesto e (facoltativo) inserire un valore di parametro predefinito in Default value (Valore predefinito).

    4. Per Description (Descrizione), inserire una descrizione per il parametro del runbook.

    Nota

    Per aggiungere altri parametri del runbook, scegliere Add a parameter (Aggiungi un parametro). Per rimuovere un parametro del runbook, selezionare il pulsante X (Rimuovi).

  9. (Facoltativo) Espandere la sezione Target type (Tipo di destinazione) e scegliere un tipo di destinazione per definire i tipi di risorse su cui è possibile eseguire l'automazione. Ad esempio, per utilizzare un runbook sulle EC2 istanze, scegliete. /AWS::EC2::Instance

    Nota

    Se si specifica un valore di “/“, il runbook può essere eseguito su tutti i tipi di risorse. Per un elenco dei tipi di risorse validi, consulta Informazioni di riferimento sui tipi di proprietà e di risorse di AWS nella Guida per l'utente di AWS CloudFormation .

  10. (Facoltativo) Espandere la sezione Document tags (Tag documento) e inserire una o più coppie chiave-valore tag da applicare al runbook. I tag semplificano l'identificazione, l'organizzazione e la ricerca delle risorse.

  11. Nella sezione Step 1 (Fase 1) fornire le seguenti informazioni.

    • Per Step name (Nome fase), inserire un nome descrittivo per la prima fase dell'automazione.

    • Per Action type (Tipo di operazione), selezionare il tipo di operazione da utilizzare per questa fase.

      Per un elenco e informazioni sui tipi di operazione disponibili, consulta Riferimento alle operazioni del servizio di automazione di Systems Manager.

    • In Description (Descrizione), inserire una descrizione per la fase di automazione. È possibile utilizzare Markdown per formattare il testo.

    • A seconda del Action type (Tipo di operazione) selezionato, inserire gli input necessari per il tipo di operazione nella sezione Step inputs (Input della fase). Ad esempio, se è stata selezionata l'operazione aws:approve, è necessario specificare un valore per la proprietà Approvers.

      Per informazioni sui campi di input della fase, consulta la voce in Riferimento alle operazioni del servizio di automazione di Systems Manager relativa al tipo di operazione selezionato. Ad esempio: aws:executeStateMachine: esecuzione di una macchina a stati di AWS Step Functions..

    • (Facoltativo) Per Additional inputs (Input aggiuntivi), fornire eventuali valori di input aggiuntivi necessari per il runbook. I tipi di input disponibili dipendono dal tipo di operazione selezionato per la fase. (Si noti che alcuni tipi di operazione richiedono valori di input.)

      Nota

      Per aggiungere altri input, selezionare Add optional input (Aggiungi input opzionale). Per rimuovere un input, scegliere il pulsante X (Rimuovi).

    • (Facoltativo) Per Outputs (Output), inserire eventuali output per questa fase per renderli disponibili per altri processi.

      Nota

      Outputs (Output) non è disponibile per tutti i tipi di operazione.

    • (Facoltativo) Espandere la sezione Common properties (Proprietà comuni) e specificare le proprietà per le operazioni comuni a tutte le operazioni di automazione. Ad esempio, per i Timeout seconds (Secondi di timeout), è possibile fornire un valore in secondi per specificare per quanto tempo è possibile eseguire la fase prima che venga arrestata.

      Per ulteriori informazioni, consulta Proprietà condivise da tutte le operazioni.

    Nota

    Per aggiungere altre fasi, selezionare Add step (Aggiungi fase) e ripetere la procedura per la creazione di una fase. Per rimuovere una fase, selezionare Remove step (Rimuovi fase).

  12. Scegliere Create automation (Crea automazione) per salvare il runbook.

Creazione di un runbook che esegue script

La procedura seguente mostra come utilizzare Document Builder (Generatore documenti) nella console di Automazione AWS Systems Manager per creare un runbook personalizzato che esegue uno script.

Il primo passaggio del runbook che crei esegue uno script per avviare un'istanza Amazon Elastic Compute Cloud EC2 (Amazon). Nella seconda fase viene eseguito un altro script per monitorare il controllo dello stato dell'istanza da modificare in ok. Quindi, viene riportato uno stato generale di Success per l'automazione.

Prima di iniziare

Effettuare le operazioni seguenti:

  • Verifica di disporre dei privilegi di amministratore o che ti siano state concesse le autorizzazioni appropriate per accedere a Systems Manager in AWS Identity and Access Management ()IAM.

    Per informazioni, consultare Verifica dell'accesso utente per runbook.

  • Verificate di avere un ruolo IAM di servizio per Automation (noto anche come ruolo di assunzione) nel vostro. Account AWS Il ruolo è necessario perché questa procedura dettagliata utilizza l'operazione aws:executeScript.

    Per ulteriori informazioni sulla creazione di questo ruolo, consulta Configurazione di un accesso al ruolo di servizio (ruolo presunto) per le automazioni.

    Per informazioni sui requisiti del ruolo IAM di servizio per l'esecuzioneaws:executeScript, consultaAutorizzazioni per l'utilizzo di runbook.

  • Verifica di disporre dell'autorizzazione per avviare EC2 le istanze.

    Per informazioni, consulta IAMe Amazon EC2 nella Amazon EC2 User Guide.

Per creare un runbook personalizzato che esegue script utilizzando Document Builder (Generatore documenti)
  1. Apri la AWS Systems Manager console all'indirizzo https://console.aws.amazon.com/systems-manager/.

  2. Nel riquadro di navigazione, scegli Documenti.

  3. Scegliere Create automation (Crea automazione).

  4. Per Name (Nome), digitare questo nome descrittivo per il runbook: LaunchInstanceAndCheckStatus.

  5. (Facoltativo) Per Document description (Descrizione documento), sostituire il testo predefinito con una descrizione per questo runbook, utilizzando Markdown. Di seguito è riportato un esempio.

    ##Title: LaunchInstanceAndCheckState ----- **Purpose**: This runbook first launches an EC2 instance using the AMI ID provided in the parameter ```imageId```. The second step of this runbook continuously checks the instance status check value for the launched instance until the status ```ok``` is returned. ##Parameters: ----- Name | Type | Description | Default Value ------------- | ------------- | ------------- | ------------- assumeRole | String | (Optional) The ARN of the role that allows Automation to perform the actions on your behalf. | - imageId | String | (Optional) The AMI ID to use for launching the instance. The default value uses the latest Amazon Linux AMI ID available. | {{ ssm:/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2 }}
  6. Per Assumere il ruolo, inserisci il ruolo ARN di IAM servizio per l'automazione (Assumi il ruolo) per l'automazione, nel formatoarn:aws:iam::111122223333:role/AutomationServiceRole. Sostituisci il tuo Account AWS ID con 111122223333.

    Il ruolo specificato viene utilizzato per fornire le autorizzazioni necessarie per avviare l'automazione.

    Importante

    Per i runbook non di proprietà di Amazon che utilizzano l'operazione aws:executeScript, è necessario specificare un ruolo. Per informazioni, consultare Autorizzazioni per l'utilizzo di runbook.

  7. Espandere Input parameters (Parametri di input) e procedere come segue.

    1. Per Parameter Name (Nome parametro), inserire imageId.

    2. In Type (Tipo) scegliere String.

    3. Per Required (Obbligatorio), scegliere No.

    4. Per Default value (Valore predefinito), inserire quanto segue.

      {{ ssm:/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2 }}
      Nota

      Questo valore avvia un'EC2istanza Amazon utilizzando la versione più recente di Amazon Linux 1 Amazon Machine Image (AMI) ID. Se vuoi usarne uno diverso AMI, sostituisci il valore con il tuo AMI ID.

    5. Per Description (Descrizione), inserire quanto segue.

      (Optional) The AMI ID to use for launching the instance. The default value uses the latest released Amazon Linux AMI ID.
  8. Scegliere Add a parameter (Aggiungi un parametro) per creare il secondo parametro, tagValue e inserire quanto segue.

    1. Per Parameter Name (Nome parametro), inserire tagValue.

    2. In Type (Tipo) scegliere String.

    3. Per Required (Obbligatorio), scegliere No.

    4. In Default value (Valore predefinito), inserire LaunchedBySsmAutomation. Questo aggiunge il valore di coppia di chiavi tag Name:LaunchedBySsmAutomation all'istanza.

    5. Per Description (Descrizione), inserire quanto segue.

      (Optional) The tag value to add to the instance. The default value is LaunchedBySsmAutomation.
  9. Scegliere Add a parameter (Aggiungi un parametro) per creare il terzo parametro, instanceType e inserire le informazioni seguenti.

    1. Per Parameter Name (Nome parametro), inserire instanceType.

    2. In Type (Tipo) scegliere String.

    3. Per Required (Obbligatorio), scegliere No.

    4. In Default value (Valore predefinito), inserire t2.micro.

    5. Per Parameter Description (Descrizione parametro), inserire quanto segue.

      (Optional) The instance type to use for the instance. The default value is t2.micro.
  10. Espandere Target Type (Tipo di destinazione) e scegliere "/".

  11. (Facoltativo) Espandere Document tags (Tag documento) per applicare i tag delle risorse al runbook. Per Tag key (Chiave tag), inserire Purpose e per Tag value (Valore tag), inserire LaunchInstanceAndCheckState.

  12. Nella sezione Step 1 (Fase 1) completare i passaggi seguenti.

    1. Per Step name (Nome della fase), inserire questo nome descrittivo di fase per la prima fase dell'automazione: LaunchEc2Instance.

    2. Per Action type (Tipo operazione), scegliere Run a script (Esegui uno script) (aws:executeScript).

    3. In Description (Descrizione), inserire una descrizione per la fase di automazione, ad esempio la seguente.

      **About This Step** This step first launches an EC2 instance using the ```aws:executeScript``` action and the provided script.
    4. Espandere Inputs (Input).

    5. In Runtime (Tempo di esecuzione), scegliere il linguaggio di tempo di esecuzione da utilizzare per eseguire lo script fornito.

    6. Per Handler (Gestore), inserire launch_instance. Questo è il nome della funzione dichiarato nello script seguente.

      Nota

      Questo non è richiesto per PowerShell.

    7. Per Script, sostituire i contenuti predefiniti con i seguenti. Assicurarsi di abbinare lo script con il valore del tempo di esecuzione corrispondente.

      Python
      def launch_instance(events, context): import boto3 ec2 = boto3.client('ec2') image_id = events['image_id'] tag_value = events['tag_value'] instance_type = events['instance_type'] tag_config = {'ResourceType': 'instance', 'Tags': [{'Key':'Name', 'Value':tag_value}]} res = ec2.run_instances(ImageId=image_id, InstanceType=instance_type, MaxCount=1, MinCount=1, TagSpecifications=[tag_config]) instance_id = res['Instances'][0]['InstanceId'] print('[INFO] 1 EC2 instance is successfully launched', instance_id) return { 'InstanceId' : instance_id }
      PowerShell
      Install-Module AWS.Tools.EC2 -Force Import-Module AWS.Tools.EC2 $payload = $env:InputPayload | ConvertFrom-Json $imageid = $payload.image_id $tagvalue = $payload.tag_value $instanceType = $payload.instance_type $type = New-Object Amazon.EC2.InstanceType -ArgumentList $instanceType $resource = New-Object Amazon.EC2.ResourceType -ArgumentList 'instance' $tag = @{Key='Name';Value=$tagValue} $tagSpecs = New-Object Amazon.EC2.Model.TagSpecification $tagSpecs.ResourceType = $resource $tagSpecs.Tags.Add($tag) $res = New-EC2Instance -ImageId $imageId -MinCount 1 -MaxCount 1 -InstanceType $type -TagSpecification $tagSpecs return @{'InstanceId'=$res.Instances.InstanceId}
    8. Espandere Additional inputs (Input aggiuntivi).

    9. Per Inserisci il nome, scegli InputPayload. Per Valore di input, inserisci i seguenti YAML dati.

      image_id: "{{ imageId }}" tag_value: "{{ tagValue }}" instance_type: "{{ instanceType }}"
  13. Espandere Outputs (Output) ed effettuare le seguenti operazioni:

    • In Name (Nome), inserire payload.

    • Per Selector (Selettore), inserire $.Payload.

    • In Type (Tipo) scegliere StringMap.

  14. Scegliere Add step (Aggiungi fase) per aggiungere una seconda fase al runbook. La seconda fase interroga lo stato dell'istanza avviata nella fase 1 e attende fino a quando lo stato restituito è ok.

  15. Nella sezione Step 2 (Fase 2) eseguire le operazioni seguenti.

    1. Per Step name (Nome fase), inserire questo nome descrittivo per la seconda fase dell'automazione: WaitForInstanceStatusOk.

    2. Per Action type (Tipo operazione), scegliere Run a script (Esegui uno script) (aws:executeScript).

    3. In Description (Descrizione), inserire una descrizione per la fase di automazione, ad esempio la seguente.

      **About This Step** The script continuously polls the instance status check value for the instance launched in Step 1 until the ```ok``` status is returned.
    4. In Runtime (Tempo di esecuzione), scegliere il linguaggio del tempo di esecuzione da utilizzare per l'esecuzione dello script fornito.

    5. Per Handler (Gestore), inserire poll_instance. Questo è il nome della funzione dichiarato nello script seguente.

      Nota

      Questo non è necessario per PowerShell.

    6. Per Script, sostituire i contenuti predefiniti con i seguenti. Assicurarsi di abbinare lo script con il valore del tempo di esecuzione corrispondente.

      Python
      def poll_instance(events, context): import boto3 import time ec2 = boto3.client('ec2') instance_id = events['InstanceId'] print('[INFO] Waiting for instance status check to report ok', instance_id) instance_status = "null" while True: res = ec2.describe_instance_status(InstanceIds=[instance_id]) if len(res['InstanceStatuses']) == 0: print("Instance status information is not available yet") time.sleep(5) continue instance_status = res['InstanceStatuses'][0]['InstanceStatus']['Status'] print('[INFO] Polling to get status of the instance', instance_status) if instance_status == 'ok': break time.sleep(10) return {'Status': instance_status, 'InstanceId': instance_id}
      PowerShell
      Install-Module AWS.Tools.EC2 -Force $inputPayload = $env:InputPayload | ConvertFrom-Json $instanceId = $inputPayload.payload.InstanceId $status = Get-EC2InstanceStatus -InstanceId $instanceId while ($status.Status.Status -ne 'ok'){ Write-Host 'Polling get status of the instance', $instanceId Start-Sleep -Seconds 5 $status = Get-EC2InstanceStatus -InstanceId $instanceId } return @{Status = $status.Status.Status; InstanceId = $instanceId}
    7. Espandere Additional inputs (Input aggiuntivi).

    8. Per Inserisci il nome, scegli InputPayload. Per Input value (Valore di input), inserire quanto segue:

      {{ LaunchEc2Instance.payload }}
  16. Scegliere Create automation (Crea automazione) per salvare il runbook.