

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 1: installazione di pacchetti
<a name="cookbooks-101-basics-packages"></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).

L'installazione di un pacchetto è uno dei casi d'uso più comuni per le ricette e può essere molto semplice, a seconda del pacchetto. Ad esempio, la seguente ricetta installa Git su un sistema Linux.

```
package 'git' do
  action :install
end
```

La [risorsa `package`](https://docs.chef.io/chef/resources.html#package) gestisce l'installazione di pacchetti. Per questo esempio, non è necessario specificare attributi. Il nome della risorsa è il valore di default per l'attributo `package_name` che identifica il pacchetto. L'operazione `install` indica al provider di installare il pacchetto. È possibile rendere il codice ancora più semplice saltando `install`; è l'operazione predefinita della risorsa `package`. Quando esegui la ricetta, Chef usa il provider appropriato per installare il pacchetto. Nel sistema Ubuntu che utilizzerai per l'esempio, il provider installa Git chiamando `apt-get`.

**Nota**  
L'installazione di software su un sistema Windows richiede una procedura diversa. Per ulteriori informazioni, consulta [Installazione di software Windows](cookbooks-101-opsworks-install-software.md).

Per utilizzare Test Kitchen per eseguire questa ricetta in Vagrant, devi prima impostare un libro di ricette e inizializzare e configurare Test Kitchen. Quanto segue è relativo a un sistema Linux, ma la procedura è essenzialmente simile per i sistemi Windows e Macintosh. Inizia aprendo una finestra del terminale, perché tutti gli esempi in questo capitolo utilizzano strumenti a riga di comando.

**Per preparare il libro di ricette**

1. Nella directory principale, creare una sottodirectory denominata `opsworks_cookbooks`, che conterrà tutti i libri di ricette per questo capitolo. Creare quindi una sottodirectory per questo libro di ricette denominata `installpkg` e accedervi.

1. In `installpkg`, creare un file denominato `metadata.rb` che contiene il codice seguente.

   ```
   name "installpkg"
   version "0.1.0"
   ```

   Per semplicità, gli esempi in questo capitolo specificano solo il nome e la versione del libro di ricette, ma `metadata.rb` può contenere un'ampia gamma di metadati del libro di ricette. Per ulteriori informazioni, consulta l'articolo sulle [informazioni sui metadati dei libri di ricette](http://docs.chef.io/cookbook_repo.html#about-cookbook-metadata).
**Nota**  
Assicurati di creare `metadata.rb` prima di inizializzare Test Kitchen, perché utilizza i dati per creare il file di configurazione di default.

1. In `installpkg`, eseguire `kitchen init`, che inizializza Test Kitchen e installa il driver Vagrant di default.

1. Il comando `kitchen init` crea un file di configurazione YAML in `installpkg` denominato `.kitchen.yml`. Aprire il file nell'editor di testo preferito. Il file `.kitchen.yml` include una sezione `platforms` che specifica su quali sistemi eseguire le ricette. Test Kitchen crea un'istanza ed esegue le ricette specificate su ciascuna piattaforma. 
**Nota**  
Per impostazione predefinita, Test Kitchen esegue le ricette una piattaforma alla volta. Aggiungendo un argomento `-p` a qualsiasi comando che crea un'istanza, Test Kitchen eseguirà le ricette su ogni piattaforma, in parallelo.

   Una singola piattaforma è sufficiente per questo esempio, quindi modificare `.kitchen.yml` per rimuovere la piattaforma `centos-6.4`. Il file `.kitchen.yml` dovrebbe ora apparire così:

   ```
   ---
   driver:
     name: vagrant
   
   provisioner:
     name: chef_solo
   
   platforms:
     - name: ubuntu-12.04
   
   suites:
     - name: default
       run_list:
         - recipe[installpkg::default]
       attributes:
   ```

   Test Kitchen esegue solo le ricette incluse nell'elenco di esecuzione `.kitchen.yml`. Puoi identificare le ricette utilizzando il `[cookbook_name::recipe_name]` formato, dove *recipe\$1name* omette l'estensione. `.rb` Inizialmente, l'elenco di esecuzione `.kitchen.yml` contiene la ricetta predefinita del libro di ricette, `installpkg::default`. Questa è la ricetta da implementare, perciò non è necessario modificare l'elenco di esecuzione.

1. Crea una sottodirectory di `installpkg` denominata `recipes`.

   Se un libro di cucina contiene ricette, la maggior parte di esse, devono trovarsi nella sottodirectory. `recipes`

È ora possibile aggiungere la ricetta al libro di ricette e utilizzare Test Kitchen per eseguirla su un'istanza.

**Per eseguire la ricetta**

1. Creare un file denominato `default.rb` che contenga il codice di esempio dell'installazione Git tratto dall'inizio della sezione e salvarlo nella sottodirectory `recipes`.

1. Nella directory `installpkg`, eseguire `kitchen converge`. Questo comando avvia una nuova istanza di Ubuntu in Vagrant, copia i tuoi libri di cucina nell'istanza e avvia un'esecuzione di Chef per eseguire le ricette nell'elenco di esecuzione. `.kitchen.yml`

1. Per verificare che la ricetta sia riuscita, eseguire `kitchen login`, che apre una connessione SSH all'istanza. Quindi eseguire `git --version` per verificare la corretta installazione di Git. Per tornare alla workstation, eseguire `exit`.

1. Al termine dell'operazione, eseguire `kitchen destroy` per chiudere l'istanza. L'esempio successivo utilizza un altro libro di ricette.

Questo esempio è un buon inizio, ma è molto semplice. L'installazione di altri pacchetti può risultare più complicata e richiedere l'esecuzione di una o più delle seguenti operazioni:
+ Creare e configurare un utente.
+ Creare una o più directory per dati, log e così via.
+ Installare uno o più file di configurazione.
+ Specificare nomi del pacchetto o valori degli attributi diversi per differenti sistemi operativi.
+ Avviare un servizio e quindi riavviarlo in base alle esigenze.

Gli esempi seguenti descrivono come agire in questi casi e alcune altre utili operazioni.