

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

# Risolvi i problemi relativi all'istanza Amazon EC2 Linux danneggiata utilizzando Rescue EC2
<a name="Linux-Server-EC2Rescue"></a>

*EC2Rescue for Linux è uno strumento open source che può essere eseguito su un' easy-to-useistanza Amazon EC2 Linux per diagnosticare, risolvere e risolvere problemi comuni utilizzando la sua libreria di oltre 100 moduli.* I moduli sono file YAML che contengono uno script BASH o Python e i metadati necessari.

Alcuni casi d'uso generalizzati per le istanze Rescue for Linux includono: EC2
+ Raccolta di log di syslog e del gestore di pacchetti
+ Raccolta di dati sull'utilizzo delle risorse
+ Diagnosi e correzione di parametri problematici noti del kernel e problemi comuni di OpenSSH

**Nota**  
Il runbook `AWSSupport-TroubleshootSSH` AWS Systems Manager Automation installa EC2 Rescue for Linux e quindi utilizza lo strumento per verificare o tentare di risolvere problemi comuni che impediscono una connessione SSH a un'istanza Linux. Per ulteriori informazioni, consulta [AWSSupport-TroubleshootSSH](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshootssh.html).

Se utilizzi un'istanza Windows, vedi [Risolvi i problemi relativi all'istanza Windows di Amazon EC2 danneggiata utilizzando Rescue EC2](Windows-Server-EC2Rescue.md).

**Topics**
+ [Installa Rescue EC2](ec2rl_install.md)
+ [Esegui i comandi EC2 Rescue](ec2rl_working.md)
+ [Sviluppa moduli EC2 Rescue](ec2rl_moduledev.md)

# Installazione di EC2Rescue per un'istanza Linux Amazon EC2
<a name="ec2rl_install"></a>

Lo strumento EC2Rescue per Linux può essere installato su un'istanza Linux Amazon EC2 in grado di rispettare i prerequisiti seguenti.

**Prerequisiti**
+ Sistemi operativi supportati:
  + Amazon Linux 2
  + Amazon Linux 2016.09\$1
  + SUSE Linux Enterprise Server 12\$1
  + RHEL 7 e versioni successive
  + Ubuntu 16.04\$1
+ Requisiti software:
  + Python 2.7.9 e versioni successive o 3.2 e versioni successive

## Installa EC2 Rescue
<a name="ec2rl-install"></a>

Il `AWSSupport-TroubleshootSSH` runbook installa EC2 Rescue for Linux e quindi utilizza lo strumento per verificare o tentare di risolvere problemi comuni che impediscono una connessione remota a una macchina Linux tramite SSH. Per ulteriori informazioni e per eseguire questa automazione, consulta [Supporto-TroubleshootSSH](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshootssh.html).

Se il sistema ha la versione Python richiesta, puoi installare la build standard. Altrimenti, puoi installare la build in bundle, che include una copia minima di Python.

**Per installare la build standard**

1. Da un'istanza Linux funzionante, scarica lo strumento [EC2Rescue for](https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz) Linux:

   ```
   curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz
   ```

1. (*Facoltativo*) Verifica la firma del file di installazione di EC2 Rescue for Linux. Per ulteriori informazioni, consulta [(Facoltativo) Verifica la firma di EC2 Rescue for Linux](#ec2rl_verify).

1. Scaricare il file di hash sha256:

   ```
   curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz.sha256
   ```

1. Verificare l'identità del tarball:

   ```
   sha256sum -c ec2rl.tgz.sha256
   ```

1. Decomprimere il tarball:

   ```
   tar -xzvf ec2rl.tgz
   ```

1. Verificare l'installazione elencando il file della guida:

   ```
   cd ec2rl-<version_number>
   ./ec2rl help
   ```

**Per installare la build in bundle**  
Per un collegamento al download e un elenco delle limitazioni, vedi [EC2Rescue for Linux](https://github.com/awslabs/aws-ec2rescue-linux/blob/master/README.md) su github.

## (Facoltativo) Verifica la firma di EC2 Rescue for Linux
<a name="ec2rl_verify"></a>

Di seguito è riportato il processo consigliato per verificare la validità del pacchetto EC2 Rescue for Linux per i sistemi operativi basati su Linux.

Quando si esegue il download di un'applicazione da Internet, ti consigliamo di autenticare l'identità dell'autore del software e di controllare che l'applicazione non risulti modificata o danneggiata rispetto alla versione pubblicata. Ciò consente di evitare di installare una versione dell'applicazione contenente un virus o altro malware.

Se, dopo aver eseguito i passaggi descritti in questo argomento, stabilite che il software per EC2 Rescue for Linux è alterato o danneggiato, non eseguite il file di installazione. In caso contrario, contatta Amazon Web Services.

EC2I file Rescue for Linux per i sistemi operativi basati su Linux sono firmati con GnuPG, un'implementazione open source dello standard Pretty Good Privacy (OpenPGP) per le firme digitali sicure. GnuPG (noto anche come GPG) fornisce l'autenticazione e il controllo dell'integrità tramite una firma digitale. AWS pubblica una chiave pubblica e delle firme che è possibile utilizzare per verificare il pacchetto Rescue for Linux scaricato EC2. [Per ulteriori informazioni su PGP e GnuPG (GPG), vedere https://www.gnupg.org/.](https://www.gnupg.org/)

La prima fase prevede la verifica dell'affidabilità dell'autore del software. Scarica la chiave pubblica dell'autore del software, controlla l'autenticità di tale proprietario e quindi aggiungi la chiave pubblica al keyring. Il keyring è una raccolta di chiavi pubbliche nota. Dopo aver confermato l'autenticità della chiave pubblica, puoi usarla per verificare la firma dell'applicazione.

**Topics**
+ [

### Autenticazione e importazione della chiave pubblica
](#ec2rl_authenticate)
+ [

### Verifica della firma del pacchetto
](#ec2rl_verify_signature)

### Autenticazione e importazione della chiave pubblica
<a name="ec2rl_authenticate"></a>

Il passo successivo del processo consiste nell'autenticare la chiave pubblica EC2 Rescue for Linux e aggiungerla come chiave affidabile nel portachiavi GPG.

**Per autenticare e importare la chiave pubblica EC2 Rescue for Linux**

1. In un prompt dei comandi, utilizzare il comando seguente per ottenere una copia della chiave pubblica GPG:

   ```
   curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.key
   ```

1. Al prompt dei comandi nella directory in cui hai salvato`ec2rl.key`, usa il seguente comando per importare la chiave pubblica EC2 Rescue for Linux nel tuo portachiavi:

   ```
   gpg2 --import ec2rl.key
   ```

   Il comando restituisce risultati simili ai seguenti:

   ```
   gpg: /home/ec2-user/.gnupg/trustdb.gpg: trustdb created
   gpg: key 2FAE2A1C: public key "ec2autodiag@amazon.com <EC2 Rescue for Linux>" imported
   gpg: Total number processed: 1
   gpg:               imported: 1  (RSA: 1)
   ```
**Suggerimento**  
Se viene visualizzato un errore che indica che il comando non può essere trovato, installa l'utilità GnuPG con `apt-get install gnupg2` (Linux basato su Debian) `yum install gnupg2` o (Linux basato su Red Hat).

### Verifica della firma del pacchetto
<a name="ec2rl_verify_signature"></a>

Dopo aver installato gli strumenti GPG, autenticato e importato la chiave pubblica EC2 Rescue for Linux e verificato che la chiave pubblica EC2 Rescue for Linux sia affidabile, sei pronto a verificare la firma dello script di installazione di EC2 Rescue for Linux.

**Per verificare la firma dello script di installazione di EC2 Rescue for Linux**

1. Al prompt dei comandi esegui il comando seguente per scaricare il file SIGNATURE per lo script di installazione:

   ```
   curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz.sig
   ```

1. Verifica la firma eseguendo il comando seguente al prompt dei comandi nella directory in cui hai salvato il file di installazione di `ec2rl.tgz.sig` EC2 Rescue for Linux. Entrambi i file devono essere presenti.

   ```
   gpg2 --verify ./ec2rl.tgz.sig
   ```

   L'output deve essere simile al seguente:

   ```
   gpg: Signature made Thu 12 Jul 2018 01:57:51 AM UTC using RSA key ID 6991ED45
   gpg: Good signature from "ec2autodiag@amazon.com <EC2 Rescue for Linux>"
   gpg: WARNING: This key is not certified with a trusted signature!
   gpg:          There is no indication that the signature belongs to the owner.
   Primary key fingerprint: E528 BCC9 0DBF 5AFA 0F6C  C36A F780 4843 2FAE 2A1C
        Subkey fingerprint: 966B 0D27 85E9 AEEC 1146  7A9D 8851 1153 6991 ED45
   ```

   Se l'output contiene la frase`Good signature from "ec2autodiag@amazon.com <EC2 Rescue for Linux>"`, significa che la firma è stata verificata con successo e puoi procedere con l'esecuzione dello script di installazione di EC2 Rescue for Linux.

   Se l'output include la frase `BAD signature`, controlla di avere eseguito la procedura correttamente. Se il problema persiste, contatta Amazon Web Services e non eseguire il file di installazione scaricato in precedenza.

Di seguito sono elencati i dettagli sugli avvisi che potrebbero comparire:
+ **WARNING: This key is not certified with a trusted signature\$1 There is no indication that the signature belongs to the owner.**Ciò si riferisce al livello di fiducia personale che riponete nella convinzione di possedere una chiave pubblica autentica per EC2 Rescue for Linux. In un mondo ideale, l'utente visita un ufficio Amazon Web Services e riceve la chiave personalmente. Tuttavia, la prassi normale è scaricare la chiave da un sito Web. In questo caso, il sito Web è un sito Web di Amazon Web Services.
+ **gpg2: no ultimately trusted keys found.** Questo messaggio indica che la chiave specifica non è ritenuta affidabile da te o da un'altra persona da te considerata affidabile.

Per ulteriori informazioni, consulta [https://www.gnupg.org/](https://www.gnupg.org/).

# Esecuzione di comandi EC2Rescue su un'istanza Linux Amazon EC2
<a name="ec2rl_working"></a>

EC2Rescue è uno strumento da riga di comando. Dopo aver installato EC2 Rescue sulla tua istanza Linux, puoi ottenere assistenza generale su come usare lo strumento eseguendo`./ec2rl help`. Puoi visualizzare i moduli disponibili eseguendo `./ec2rl list` e puoi ottenere assistenza su un modulo specifico eseguendo `./ec2rl help module_name`.

Di seguito sono riportate le attività più comuni che puoi eseguire per prendere dimestichezza con questo strumento.

**Topics**
+ [

## Esegui i moduli EC2 Rescue
](#ec2rl_running_module)
+ [

## Carica i risultati del modulo EC2 Rescue
](#ec2rl_uploading_results)
+ [

## Creare backup di un'istanza Linux Amazon EC2
](#ec2rl_creating_backups)

## Esegui i moduli EC2 Rescue
<a name="ec2rl_running_module"></a>

**Per eseguire tutti i moduli EC2 Rescue**  
Utilizza il comando **./ec2rl run** senza specificare parametri aggiuntivi. Alcuni moduli richiedono l'accesso root. Se non sei un utente root, utilizza **sudo** quando esegui il comando.

```
./ec2rl run
```

**Per eseguire un modulo EC2 Rescue specifico**  
Usa il **./ec2rl run** comando e per `--only-modules`, specifica il nome del modulo da eseguire. Alcuni moduli richiedono *argomenti* per utilizzarli.

```
./ec2rl run --only-modules=module_name --arguments
```

Ad esempio, per eseguire il modulo **dig** per interrogare il dominio `amazon.com`, utilizza il seguente comando.

```
./ec2rl run --only-modules=dig --domain=amazon.com
```

**Per visualizzare i risultati di un modulo EC2 Rescue**  
Esegui il modulo, poi visualizza il file di log in `cat /var/tmp/ec2rl/logfile_location`. Ad esempio, il file di log per il modulo **dig** si trova nella seguente posizione:

```
cat /var/tmp/ec2rl/timestamp/mod_out/run/dig.log
```

## Carica i risultati del modulo EC2 Rescue
<a name="ec2rl_uploading_results"></a>

Se Supporto ha richiesto i risultati per un modulo EC2 Rescue, è possibile caricare il file di registro utilizzando lo strumento EC2 Rescue. Puoi caricare i risultati in una posizione fornita da Supporto o in un bucket Amazon S3 di tua proprietà.

**Per caricare i risultati in una posizione fornita da Supporto**  
Utilizza il comando **./ec2rl upload**. Per `--upload-directory`, specifica la posizione del file di log. Per `--support-url`, specifica l'URL fornito da Supporto.

```
./ec2rl upload --upload-directory=/var/tmp/ec2rl/logfile_location --support-url="url_provided_by_aws_support"
```

**Per caricare i risultati in un bucket Amazon S3**  
Utilizza il comando **./ec2rl upload**. Per `--upload-directory`, specifica la posizione del file di log. Per `--presigned-url`, specifica un URL predefinito per il bucket S3. Per ulteriori informazioni sulla generazione di oggetti prefirmati URLs per Amazon S3, [consulta Uploading](https://docs.aws.amazon.com/AmazonS3/latest/userguide/PresignedUrlUploadObject.html) Objects Using Pre-Signed. URLs

```
./ec2rl upload --upload-directory=/var/tmp/ec2rl/logfile_location --presigned-url="presigned_s3_url"
```

## Creare backup di un'istanza Linux Amazon EC2
<a name="ec2rl_creating_backups"></a>

Puoi usare EC2 Rescue per eseguire il backup della tua istanza Linux creando un'AMI o creando istantanee dei volumi collegati.

**Per creare un'AMI**  
Utilizza il comando `./ec2rl run` e per --`backup`, specifica `ami`.

```
./ec2rl run --backup=ami
```

**Per creare snapshot a più volumi di tutti i volumi collegati**  
Utilizza il comando `./ec2rl run` e per --`backup`, specifica `allvolumes`.

```
./ec2rl run --backup=allvolumes
```

**Per creare uno snapshot di uno specifico volume collegato**  
Usa il comando `./ec2rl run` e per --`backup`, specifica l'ID del volume di cui eseguire il backup.

```
./ec2rl run --backup=vol-01234567890abcdef
```

# Sviluppo dei moduli EC2Rescue per le istanze Linux Amazon EC2
<a name="ec2rl_moduledev"></a>

I moduli sono scritti in YAML, uno standard di serializzazione dei dati. Il file YAML di un modulo è formato da un singolo documento che rappresenta il modulo e i relativi attributi.

## Aggiunta di attributi di modulo
<a name="ec2rl-adding-modules"></a>

Nella tabella seguente vengono elencati gli attributi di modulo disponibili.


| Attributo | Descrizione | 
| --- | --- | 
| name | Il nome del modulo. Il nome non deve superare i 18 caratteri. | 
| version | Il numero di versione del modulo. | 
| title | Un breve titolo descrittivo del modulo. Questo valore non deve superare i 50 caratteri. | 
| helptext |  La descrizione estesa del modulo. Ogni riga non deve superare i 75 caratteri. Se il modulo consuma argomenti, obbligatori o facoltativi, includili nel valore helptext. Ad esempio: <pre>helptext: !!str |<br />  Collect output from ps for system analysis<br />  Consumes --times= for number of times to repeat<br />  Consumes --period= for time period between repetition</pre> | 
| placement | La fase in cui eseguire il modulo. Valori supportati: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/ec2rl_moduledev.html)  | 
| linguaggio | Il linguaggio in cui è scritto il codice del modulo. Valori supportati: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/ec2rl_moduledev.html)  Il codice Python deve essere compatibile con Python 2.7.9 e versioni successive e Python 3.2 e versioni successive.   | 
| remediation |  Indica se il modulo supporta le azioni di correzione. I valori supportati sono `True` o `False`. Il modulo viene impostato su `False` per impostazione predefinita se questo valore è assente, rendendo l'attributo facoltativo per i moduli che non supportano le azioni di correzione.  | 
| content | L'interezza del codice dello script. | 
| vincolo | Il nome dell'oggetto contenente i valori di vincolo. | 
| domain | Un descrittore del raggruppamento o della classificazione del modulo. L'insieme dei moduli inclusi utilizza i domini seguenti:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/ec2rl_moduledev.html) | 
| classe | Un descrittore del tipo di attività effettuato dal modulo. L'insieme dei moduli inclusi utilizza le classi seguenti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/ec2rl_moduledev.html) | 
| distro | L'elenco delle distribuzioni Linux supportate da questo modulo. Il set di moduli inclusi utilizza le distribuzioni seguenti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/ec2rl_moduledev.html) | 
| obbligatorio | Gli argomenti obbligatori che il modulo consuma dalle opzioni della CLI. | 
| facoltativo | Gli argomenti facoltativi che il modulo può utilizzare. | 
| software | I file eseguibili del software utilizzati nel modulo. Questo attributo è progettato per specificare un software non installato per impostazione predefinita. La logica di EC2 Rescue for Linux assicura che questi programmi siano presenti ed eseguibili prima di eseguire il modulo. | 
| package | Il pacchetto software di origine di un file eseguibile. Questo attributo è progettato per fornire dettagli estesi sul pacchetto con il software, incluso un URL per ottenere o scaricare ulteriori informazioni. | 
| sudo | Indica se l'accesso root è obbligatorio per l'esecuzione del modulo.  Non è necessario implementare i controlli sudo nello script del modulo. Se il valore è true, la logica di EC2 Rescue for Linux esegue il modulo solo quando l'utente che esegue l'esecuzione ha accesso root. | 
| perfimpact | Indica se il modulo può avere un significativo impatto sulle prestazioni nell'ambiente in cui viene eseguito. Se il valore è true e l'argomento `--perfimpact=true` non è presente, il modulo viene ignorato. | 
| parallelexclusive | Specifica un programma che richiede reciproca esclusività. Ad esempio, tutti i moduli con la specifica "bpf" vengono eseguiti in modo seriale. | 

## Aggiunta di variabili di ambiente
<a name="ec2rl_adding_envvars"></a>

Nella tabella seguente vengono elencate le variabili di ambiente disponibili.


| Variabile di ambiente | Descrizione | 
| --- | --- | 
|  `EC2RL_CALLPATH`  | Il percorso a ec2rl.py. Questo percorso può essere utilizzato per individuare la directory lib e per utilizzare i moduli Python gestiti da un fornitore. | 
|  `EC2RL_WORKDIR`  |  La directory tmp principale dello strumento di diagnostica. Valore predefinito: `/var/tmp/ec2rl`. | 
|  `EC2RL_RUNDIR`  |  La directory in cui viene archiviato tutto l'output. Valore predefinito: `/var/tmp/ec2rl/<date&timestamp>`.  | 
|  `EC2RL_GATHEREDDIR`  |  La directory root in cui inserire i dati raccolti sul modulo. Valore predefinito:`/var/tmp/ec2rl/<date&timestamp>/mod_out/gathered/`.  | 
|  `EC2RL_NET_DRIVER`  |  Il driver in uso per la prima interfaccia di rete non virtuale sull'istanza (in ordine alfabetico). Esempi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/ec2rl_moduledev.html)  | 
|  `EC2RL_SUDO`  |  Vero se EC2 Rescue for Linux è in esecuzione come root; in caso contrario, falso.  | 
|  `EC2RL_VIRT_TYPE`  |  Il tipo di virtualizzazione fornito dai metadati dell'istanza. Esempi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AWSEC2/latest/UserGuide/ec2rl_moduledev.html)  | 
|  `EC2RL_INTERFACES`  |  Un elenco enumerato delle interfacce sul sistema. Il valore è una stringa contenente nomi, come `eth0`, `eth1` e così via. Viene generato tramite `functions.bash` ed è disponibile soltanto per i moduli da cui ha avuto origine.  | 

## Utilizzo della sintassi YAML
<a name="ec2rl_yamlsyntax"></a>

Annota quanto riportato di seguito durante la costruzione dei file YAML del modulo:
+ I trattini tripli (`---`) denotano l'inizio esplicito di un documento.
+ Il tag `!ec2rlcore.module.Module` comunica al parser YAML il costruttore da richiamare durante la creazione dell'oggetto dal flusso di dati. È possibile trovare il costruttore nel file `module.py`.
+ Il tag `!!str` comunica al parser YAML di non tentare di determinare il tipo di dati, ma di interpretare i contenuti come un valore letterale di stringa.
+ Il carattere barra verticale (`|`) comunica al parser YAML che il valore è un valore scalare di stile letterale. In questo caso, il parser include tutti gli spazi vuoti. Ciò è importante per i moduli perché vengono mantenuti i caratteri di rientro e nuova riga.
+ Come puoi vedere negli esempi seguenti, il rientro standard di YAML è di due spazi. Assicurati di mantenere il rientro standard (ad esempio, quattro spazi per Python) nello script e di far rientrare di due spazi tutto il contenuto all'interno del file del modulo.

## Moduli di esempio
<a name="ec2rl_example"></a>

Esempio uno (`mod.d/ps.yaml`):

```
--- !ec2rlcore.module.Module
# Module document. Translates directly into an almost-complete Module object
name: !!str ps
path: !!str
version: !!str 1.0
title: !!str Collect output from ps for system analysis
helptext: !!str |
  Collect output from ps for system analysis
  Requires --times= for number of times to repeat
  Requires --period= for time period between repetition
placement: !!str run
package: 
  - !!str
language: !!str bash
content: !!str |
  #!/bin/bash
  error_trap()
  {
      printf "%0.s=" {1..80}
      echo -e "\nERROR:	"$BASH_COMMAND" exited with an error on line ${BASH_LINENO[0]}"
      exit 0
  }
  trap error_trap ERR

  # read-in shared function
  source functions.bash
  echo "I will collect ps output from this $EC2RL_DISTRO box for $times times every $period seconds."
  for i in $(seq 1 $times); do
      ps auxww
      sleep $period
  done
constraint:
  requires_ec2: !!str False
  domain: !!str performance
  class: !!str collect
  distro: !!str alami ubuntu rhel suse
  required: !!str period times
  optional: !!str
  software: !!str
  sudo: !!str False
  perfimpact: !!str False
  parallelexclusive: !!str
```