

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

# Esempio 9: utilizzo di Amazon EC2 Instances
<a name="cookbooks-101-basics-ec2"></a>

**Importante**  
Il AWS OpsWorks Stacks servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disattivato sia per i clienti nuovi che per quelli esistenti. Consigliamo vivamente ai clienti di migrare i propri carichi di lavoro verso altre soluzioni il prima possibile. Se hai domande sulla migrazione, contatta il Supporto AWS Team su [AWS re:post](https://repost.aws/) o tramite Premium [AWS Support](https://aws.amazon.com/support).

Fino a questo punto, hai eseguito istanze localmente in. VirtualBox Sebbene sia semplice e veloce, alla fine vorrai testare le tue ricette su un' EC2 istanza Amazon. In particolare, se desideri eseguire ricette su Amazon Linux, è disponibile solo su Amazon EC2. Puoi utilizzare un sistema simile come CentOS per l'implementazione e i test preliminari, ma l'unico modo per testare completamente le tue ricette su Amazon Linux è con un'istanza Amazon EC2 . 

Questo argomento mostra come eseguire ricette su un' EC2 istanza Amazon. Utilizzerai Test Kitchen e Vagrant come nelle sezioni precedenti, con due differenze: 
+ Il driver è [https://rubygems.org/gems/kitchen-ec2](https://rubygems.org/gems/kitchen-ec2) invece di Vagrant.
+ Il `.kitchen.yml` file del ricettario deve essere configurato con le informazioni necessarie per avviare l' EC2 istanza Amazon.

**Nota**  
In alternativa, è possibile utilizzare il plug-in Vagrant `vagrant-aws`. Par maggiori informazioni, consulta la pagina sul [provider AWS Vagrant](https://github.com/mitchellh/vagrant-aws).

Avrai bisogno delle credenziali AWS per creare un' EC2 istanza Amazon. Se non hai già un account AWS, puoi crearne uno procedendo come segue. 

## Registrati per un Account AWS
<a name="sign-up-for-aws"></a>

Se non ne hai uno Account AWS, completa i seguenti passaggi per crearne uno.

**Per iscriverti a un Account AWS**

1. Apri la [https://portal.aws.amazon.com/billing/registrazione.](https://portal.aws.amazon.com/billing/signup)

1. Segui le istruzioni online.

   Nel corso della procedura di registrazione riceverai una telefonata o un messaggio di testo e ti verrà chiesto di inserire un codice di verifica attraverso la tastiera del telefono.

   Quando ti iscrivi a un Account AWS, *Utente root dell'account AWS*viene creato un. L’utente root dispone dell’accesso a tutte le risorse e tutti i Servizi AWS nell’account. Come best practice di sicurezza, assegna l’accesso amministrativo a un utente e utilizza solo l’utente root per eseguire [attività che richiedono l’accesso di un utente root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS ti invia un'email di conferma dopo il completamento della procedura di registrazione. In qualsiasi momento, puoi visualizzare l'attività corrente del tuo account e gestirlo accedendo a [https://aws.amazon.com/](https://aws.amazon.com/)e scegliendo **Il mio account**.

## Crea un utente con accesso amministrativo
<a name="create-an-admin"></a>

Dopo esserti registrato Account AWS, proteggi Utente root dell'account AWS AWS IAM Identity Center, abilita e crea un utente amministrativo in modo da non utilizzare l'utente root per le attività quotidiane.

**Proteggi i tuoi Utente root dell'account AWS**

1.  Accedi [Console di gestione AWS](https://console.aws.amazon.com/)come proprietario dell'account scegliendo **Utente root** e inserendo il tuo indirizzo Account AWS email. Nella pagina successiva, inserisci la password.

   Per informazioni sull’accesso utilizzando un utente root, consulta la pagina [Accedere come utente root](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) nella *Guida per l’utente di Accedi ad AWS *.

1. Abilita l’autenticazione a più fattori (MFA) per l’utente root.

   Per istruzioni, consulta [Abilitare un dispositivo MFA virtuale per l'utente Account AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) nella Guida per l'*utente IAM*.

**Crea un utente con accesso amministrativo**

1. Abilita il Centro identità IAM.

   Per istruzioni, consulta [Abilitazione del AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html) nella *Guida per l’utente di AWS IAM Identity Center *.

1. Nel Centro identità IAM, assegna l’accesso amministrativo a un utente.

   Per un tutorial sull'utilizzo di IAM Identity Center directory come fonte di identità, consulta [Configurare l'accesso utente con l'impostazione predefinita IAM Identity Center directory](https://docs.aws.amazon.com/singlesignon/latest/userguide/quick-start-default-idc.html) nella *Guida per l'AWS IAM Identity Center utente*.

**Accesso come utente amministratore**
+ Per accedere come utente del Centro identità IAM, utilizza l’URL di accesso che è stato inviato al tuo indirizzo e-mail quando hai creato l’utente del Centro identità IAM.

  Per informazioni sull'accesso utilizzando un utente IAM Identity Center, consulta [AWS Accedere al portale di accesso](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) nella *Guida per l'Accedi ad AWS utente*.

**Assegnazione dell’accesso ad altri utenti**

1. Nel Centro identità IAM, crea un set di autorizzazioni conforme alla best practice per l’applicazione di autorizzazioni con il privilegio minimo.

   Segui le istruzioni riportate nella pagina [Creazione di un set di autorizzazioni](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-create-a-permission-set.html) nella *Guida per l’utente di AWS IAM Identity Center *.

1. Assegna al gruppo prima gli utenti e poi l’accesso con autenticazione unica (Single Sign-On).

   Per istruzioni, consulta [Aggiungere gruppi](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html) nella *Guida per l’utente di AWS IAM Identity Center *.

Dovresti [creare un utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) con le autorizzazioni per accedere ad Amazon EC2 e salvare l'accesso e le chiavi segrete dell'utente in una posizione sicura sulla tua workstation. Test Kitchen utilizzerà le credenziali per creare l'istanza. Il modo migliore per fornire le credenziali a Test Kitchen è assegnare le chiavi alle seguenti variabili di ambiente nella workstation.

**avvertimento**  
Gli utenti IAM dispongono di credenziali a lungo termine, il che rappresenta un rischio per la sicurezza. Per ridurre questo rischio, si consiglia di fornire a questi utenti solo le autorizzazioni necessarie per eseguire l'attività e di rimuoverli quando non sono più necessari.
+ AWS\$1ACCESS\$1KEY — la chiave di accesso dell'utente, che avrà un aspetto simile. AKIAIOSFODNN7EXAMPLE
+ AWS\$1SECRET\$1KEY — la chiave segreta del tuo utente, che avrà un aspetto similewJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY.

Grazie a questo approccio, si riducono le possibilità di compromettere accidentalmente l'account aziendale, ad esempio caricando un progetto contenente le credenziali in un repository pubblico.

**Per configurare il libro di ricette**

1. Per usare il driver `kitchen-ec2`, è necessario disporre del pacchetto `ruby-dev` installato nel sistema. L'esempio seguente mostra come usare il comando `aptitude` per installare il pacchetto su un sistema Ubuntu. 

   ```
   sudo aptitude install ruby1.9.1-dev 
   ```

1. Il driver `kitchen-ec2` è un pacchetto gem, che è possibile installare come segue:

   ```
   gem install kitchen-ec2
   ```

   A seconda della workstation, questo comando può richiedere `sudo` oppure è possibile anche utilizzare un gestore di ambiente Ruby come [RVM](https://rvm.io/). Questa procedura è stata testata con versione 0.8.0 del driver `kitchen-ec2`, ma sono disponibili versioni più recenti. Per installare una [versione specifica](https://rubygems.org/gems/kitchen-ec2/versions), eseguire `gem install kitchen-ec2 -v <version number>`.

1. Devi specificare una coppia di chiavi Amazon EC2 SSH che Test Kitchen può utilizzare per connettersi all'istanza. Se non disponi di una coppia di EC2 chiavi Amazon, consulta [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) per informazioni su come crearne una. La coppia di chiavi deve appartenere alla stessa regione AWS dell'istanza. L'esempio utilizza Stati Uniti occidentali (California settentrionale).

   Dopo aver selezionato una coppia di chiavi, creare una sottodirectory di `opsworks_cookbooks` denominata `ec2_keys` e copiare il file della chiave privata della coppia di chiavi (`.pem`) in tale sottodirectory. La chiave privata è stata inserita in `ec2_keys` solo per comodità per semplificare il codice, ma può trovarsi ovunque sul tuo sistema.

1. Creare una sottodirectory di `opsworks_cookbooks` denominata `createdir-ec2` e accedervi.

1. Aggiungere un file `metadata.rb` a `createdir-ec2` con il contenuto seguente.

   ```
   name "createdir-ec2"
   version "0.1.0"
   ```

1. Inizializzare Test Kitchen, come descritto in [Esempio 1: installazione di pacchetti](cookbooks-101-basics-packages.md). La sezione seguente descrive come eseguire la configurazione`.kitchen.yml`, che è molto più complicata per EC2 le istanze Amazon.

1. Aggiungere la sottodirectory `recipes` a `createdir-ec2`.

## Configurazione di .kitchen.yml per Amazon EC2
<a name="w2ab1c14c71b9c15c17c31c37"></a>

La configurazione viene `.kitchen.yml` effettuata con le informazioni necessarie al `kitchen-ec2` driver per avviare un' EC2 istanza Amazon configurata in modo appropriato. Di seguito è riportato un esempio di `.kitchen.yml` file per un'istanza Amazon Linux nella regione Stati Uniti occidentali (California settentrionale).

```
driver:
  name: ec2
  aws_ssh_key_id: US-East1
  region: us-west-1
  availability_zone: us-west-1c
  require_chef_omnibus: true
  security_group_ids: sg........
  subnet_id: subnet-.........
  associate_public_ip: true
  interface: dns

provisioner:
  name: chef_solo

platforms:
  -name: amazon
  driver:
    image_id: ami-xxxxxxxx
  transport:
    username: ec2-user
    ssh_key: ../ec2_keys/US-East1.pem

suites:
  - name: default
    run_list:
      - recipe[createdir-ec2::default]
    attributes:
```

È possibile utilizzare le impostazioni di default per le sezioni `provisioner` e `suites`, ma vanno modificate le impostazioni predefinite `driver` e `platforms`. Questo esempio utilizza un elenco minimo di impostazioni e accetta i valori di default per il resto. Per un elenco completo delle `kitchen-ec2` impostazioni, consulta [Kitchen: :Ec2: A Test Kitchen Driver per Amazon](https://github.com/test-kitchen/kitchen-ec2). EC2

L'esempio seguente imposta i seguenti attributi `driver`. presupponendo che le chiavi segrete e di accesso dell'utente siano state assegnate alle variabili di ambiente standard, come descritto in precedenza. Il driver utilizza tali chiavi per impostazione predefinita. In alternativa, è necessario specificare le chiavi aggiungendo `aws_access_key_id` e `aws_secret_access_key` agli attributi `driver`, impostati sui valori chiave appropriati.

**nome**  
(Obbligatorio) Questo attributo deve essere impostato su `ec2`.

**aws\$1ssh\$1key\$1id**  
(Obbligatorio) Il nome della coppia di chiavi Amazon EC2 SSH, denominato `US-East1` in questo esempio. 

**transport.ssh\$1key**  
(Obbligatorio) Il file della chiave privata (`.pem`) per la chiave specificata per `aws_ssh_key_id`. Per questo esempio, il file è denominato `US-East1.pem` e si trova nella directory `../opsworks/ec2_keys`.

**region**  
(Obbligatorio) La regione AWS dell'istanza. L'esempio utilizza US West (California settentrionale), che è rappresentato da`us-west-1`).

**availability\$1zone**  
(Facoltativo) La zona di disponibilità dell'istanza. Se ometti questa impostazione, Test Kitchen utilizza una zona di disponibilità predefinita per la regione specificata, che corrisponde `us-west-1b` agli Stati Uniti occidentali (California settentrionale). Tuttavia, la zona di default potrebbe non essere disponibile per un determinato account. In tal caso, è necessario specificare una zona di disponibilità. In questa circostanza, l'account utilizzato per preparare gli esempi non supporta `us-west-1b`, per questo l'esempio specifica in modo esplicito `us-west-1c`.

**require\$1chef\$1omnibus**  
Se è impostata su `true`, questa impostazione garantisce che il programma di installazione omnibus venga utilizzato per installare `chef-client` su tutte le istanze della piattaforma.

**security\$1group\$1ids**  
(Facoltativo) Un elenco di gruppi di sicurezza IDs da applicare all'istanza. Questa impostazione applica il gruppo di sicurezza `default` all'istanza. Assicurati che le regole in ingresso del gruppo di sicurezza consentano connessioni SSH, altrimenti Test Kitchen non sarà in grado di comunicare con l'istanza. Se utilizzi il gruppo di sicurezza `default`, potrebbe essere necessario modificarlo di conseguenza. Per ulteriori informazioni, consulta [Amazon EC2 Security Groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html).

**subnet\$1id**  
L'ID della sottorete di destinazione per l'istanza, se applicabile.

**associate\$1public\$1ip**  
Puoi fare in modo che Amazon EC2 associ un indirizzo IP pubblico all'istanza se desideri poter accedere all'istanza da Internet.

**interface**  
Il tipo di configurazione del nome host utilizzato per accedere all'istanza. I valori validi sono `dns`, `public`, `private` o `private_dns`. Se non specifichi un valore per questo attributo, `kitchen-ec2` imposta la configurazione del nome host nell'ordine seguente. Se ometti questo attributo, il tipo di configurazione non viene impostato.  

1. Nome DNS

1. Indirizzo IP pubblico

1. Indirizzo IP privato

1. Nome DNS privato

**Importante**  
Anziché utilizzare le credenziali del tuo account per le chiavi di accesso e segrete, dovresti creare un utente e fornire tali credenziali a Test Kitchen. Per ulteriori informazioni, consulta [Best practice per la gestione delle chiavi di accesso AWS](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html).  
Fai attenzione a non inserirlo `.kitchen.yml` in un luogo accessibile al pubblico, ad esempio caricandolo su un repository pubblico GitHub o su Bitbucket. Questo espone le tue credenziali e può compromettere la sicurezza del tuo account.

Il driver `kitchen-ec2` fornisce supporto di default per le seguenti piattaforme:
+ ubuntu-10.04
+ ubuntu-12.04
+ ubuntu-12.10
+ ubuntu-13.04
+ ubuntu-13.10
+ ubuntu-14.04
+ centos-6.4
+ debian-7.1.0
+ windows-2012r2
+ windows-2008r2

Se vuoi utilizzare una o più di queste piattaforme, aggiungi i nomi appropriati a `platforms`. Il driver `kitchen-ec2` seleziona automaticamente un'AMI adeguata e genera un nome utente SSH. Puoi usare altre piattaforme, questo esempio utilizza Amazon Linux, ma devi specificare esplicitamente i seguenti attributi. `platforms`

**nome**  
Il nome della piattaforma. Questo esempio usa Amazon Linux, perciò `name` è impostato su `amazon`.

**driver**  
Gli attributi `driver`, che includono quanto segue:  
+ `image_id`— L'AMI della piattaforma, che deve appartenere alla regione specificata. L'esempio utilizza `ami-ed8e9284` un'AMI Amazon Linux della regione Stati Uniti occidentali (California settentrionale).
+ `transport.username`— Il nome utente SSH che Test Kitchen utilizzerà per comunicare con l'istanza.

  Usa `ec2-user` per Amazon Linux. Altri AMIs potrebbero avere nomi utente diversi.

Sostituisci il codice in `.kitchen.yml` con l'esempio, quindi assegna valori appropriati agli attributi specifici dell'account, ad esempio `aws_access_key_id`.

## Esecuzione della ricetta
<a name="w2ab1c14c71b9c15c17c31c39"></a>

In questo esempio viene utilizzata la ricetta contenuta in [Iterazione](cookbooks-101-basics-ruby.md#cookbooks-101-basics-ruby-iteration).

**Per eseguire la ricetta**

1. Creare un file denominato `default.rb` con il seguente codice e salvarlo nella cartella `recipes` del libro di ricette.

   ```
   directory "/srv/www/shared" do
     mode 0755
     owner 'root'
     group 'root'
     recursive true
     action :create
   end
   ```

1. Eseguire `kitchen converge` per eseguire la ricetta. Tieni presente che il completamento di questo comando richiederà più tempo rispetto agli esempi precedenti a causa del tempo necessario per avviare e inizializzare un' EC2 istanza Amazon.

1.  Vai alla [ EC2console Amazon](https://console.aws.amazon.com/ec2/), seleziona la regione Stati Uniti occidentali (California settentrionale) e fai clic su **Istanze nel riquadro** di navigazione. La nuova istanza sarà visualizzata nell'elenco. 

1. Esegui `kitchen login` per accedere all'istanza, proprio come hai fatto per le istanze in esecuzione. VirtualBox Le directory appena create saranno disponibili in `/srv`. È inoltre possibile utilizzare il client SSH preferito per connettersi all'istanza.