

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

# Facoltativo: utilizzalo AWS CodeCommit come archivio di controllo remoto Puppet r10k
<a name="opspup-puppet-codecommit"></a>

**Importante**  
Il AWS OpsWorks for Puppet Enterprise servizio ha raggiunto la fine del ciclo di vita il 31 marzo 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). 

È possibile creare un nuovo repository utilizzando AWS CodeCommit e utilizzarlo come repository di controllo remoto r10k. Per completare i passaggi di questa sezione e utilizzare un CodeCommit repository, è necessario un utente che disponga delle autorizzazioni fornite dalla politica gestita. **AWSCodeCommitReadOnly**

**Topics**
+ [Passaggio 1: utilizzare CodeCommit come repository con un tipo di connessione HTTPS](#codecommit-puppet-https)
+ [Passaggio 2: (Facoltativo) Utilizzo CodeCommit come repository con un tipo di connessione SSH](#codecommit-puppet-ssh)

## Passaggio 1: utilizzare CodeCommit come repository con un tipo di connessione HTTPS
<a name="codecommit-puppet-https"></a>



1. Nella CodeCommit console, crea un nuovo repository.  
![\[Creazione di un nuovo repository in. CodeCommit\]](http://docs.aws.amazon.com/it_it/opsworks/latest/userguide/images/opspup_cc_remote.png)

1. Scegli **Salta per saltare** la configurazione di un argomento di Amazon SNS.

1. Nella pagina **Code (Codice)**, selezionare **Connect to your repository (Collegarsi all'archivio)**.

1. Nella pagina **Connect to your repository (Collegarsi all'archivio)**, selezionare **HTTPS** come **Connection type (Tipo di connessione)** e selezionare il sistema operativo.  
![\[Creazione di un nuovo repository in. CodeCommit\]](http://docs.aws.amazon.com/it_it/opsworks/latest/userguide/images/opspup_cc_connect.png)

   Nell'area **Steps to clone your repository (Fasi per clonare l'archivio)** l'URL `git clone` deve essere simile al seguente: `https://git-codecommit.region.amazonaws.com/v1/repos/control-repo`. Copiare questo URL in un posto favorevole per utilizzarlo nella configurazione del server Puppet.

1. Chiudi la pagina **Connect to your repository** e torna alla configurazione del server OpsWorks for Puppet Enterprise.

1. Incollare l'URL copiato nella Fase 4 nella casella di stringa **r10k remote (r10k remoto)** nella pagina **Configure credentials (Configura credenziali)** della procedura guidata del Puppet master. Lasciare vuota la casella **r10k private key (chiave privata r10k)**. Terminare la creazione e l'avvio del Puppet master.

1. Nella console IAM, collega la **AWSCodeCommitReadOnly**policy al ruolo del profilo di istanza del tuo Puppet master. Per ulteriori informazioni su come aggiungere una policy di autorizzazione a un ruolo IAM, consulta [Adding IAM identity permissions (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console) nella *IAM* User Guide.

1. Segui i passaggi descritti in [Configurazione per gli utenti HTTPS che utilizzano le credenziali Git](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html) nella *Guida per l'AWS CodeCommit utente* per inviare i `control-repo` contenuti esistenti al nuovo CodeCommit repository.

1. Ora è possibile continuare seguendo le istruzioni [Configurare il Puppet Master utilizzando lo Starter Kit](opspup-starterkit.md) e utilizzare lo Starter Kit per distribuire il codice al Puppet master. Il comando seguente è un esempio.

   ```
   puppet-code deploy --all --wait --config-file .config/puppet-code.conf
   ```

## Passaggio 2: (Facoltativo) Utilizzo CodeCommit come repository con un tipo di connessione SSH
<a name="codecommit-puppet-ssh"></a>

È possibile configurare un repository di controllo remoto AWS CodeCommit r10k per utilizzare l'autenticazione tramite key pair SSH. Prima di iniziare questa procedura, devono essere stati completati i seguenti prerequisiti.
+ È necessario aver avviato il server OpsWorks for Puppet Enterprise con un repository di controllo HTTPS come descritto nella sezione precedente,. [Passaggio 1: utilizzare CodeCommit come repository con un tipo di connessione HTTPS](#codecommit-puppet-https) Questo requisito deve essere completato prima in modo da poter caricare la configurazione richiesta nel Puppet master.
+ Assicurati di avere un utente con la policy **AWSCodeCommitReadOnly**gestita allegata. Per ulteriori informazioni su come creare un utente, consulta [Creating an IAM user in your AWS account](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) nella *IAM User Guide*.
+ Creare una chiave SSH e associarla all'utente . *Segui le istruzioni per creare una public/private key pair `ssh-keygen` nel [Passaggio 3: Configurazione delle credenziali su Linux, macOS o](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html#setting-up-ssh-unixes-keys) Unix nella AWS CodeCommit Guida per l'utente.*

1. In una AWS CLI sessione, esegui il comando seguente per caricare il contenuto del file della chiave privata in Parameter Store. AWS Systems Manager Il server OpsWorks for Puppet Enterprise esegue una query su questo parametro per ottenere un file di certificato richiesto. *private\$1key\$1file*Sostituiscilo con il percorso del tuo file di chiave privata SSH.

   ```
   aws ssm put-parameter --name puppet_user_pk --type String --value "`cat private_key_file`"
   ```

1. Aggiungi le autorizzazioni di Systems Manager Parameter Store al tuo Puppet master.

   1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. Nel pannello di navigazione a sinistra, seleziona **Ruoli**.

   1. **Scegli 2 ruoliaws-opsworks-cm-ec.**

   1. Nella scheda **Autorizzazioni**, scegli **Collega policy**.

   1. Nella barra **Cerca** immettere **AmazonSSMManagedInstanceCore**.

   1. Nei risultati della ricerca, scegli **Amazon SSMManaged InstanceCore**.

   1. Scegli **Collega policy**.

1. Creare il manifest del file di configurazione. Se si sta usando il repository `control-repo-example` fornito nello starter kit, creare i file seguenti nei percorsi mostrati nel repository di esempio. In alternativa, crearli in base alla struttura del repository di controllo. Sostituisci il *IAM\$1USER\$1SSH\$1KEY* valore con l'ID della chiave SSH che hai creato nei prerequisiti per questa procedura.

   ```
   control-repo-example/site/profile/manifests/codecommit.pp
   ```

   ```
   class profile::codecommit {
     $configfile = @(CONFIGFILE)
         Host git-codecommit.*.amazonaws.com
         User IAM_USER_SSH_KEY
         IdentityFile /etc/puppetlabs/puppetserver/ssh/codecommit.rsa
         StrictHostKeyChecking=no
         | CONFIGFILE
   
     # Replace REGION with the correct region for your server.
     $command = @(COMMAND)
         aws ssm get-parameters \
         --region REGION \
         --names puppet_user_pk \
         --query "Parameters[0].Value" \
         --output text >| /etc/puppetlabs/puppetserver/ssh/codecommit.rsa
         | COMMAND
   
     $dirs = [
               '/opt/puppetlabs/server/data/puppetserver/.ssh',
               '/etc/puppetlabs/puppetserver/ssh',
             ]
   
     file { $dirs:
       ensure => 'directory',
       group  => 'pe-puppet',
       owner  => 'pe-puppet',
       mode   => '0750',
     }
   
     file { 'ssh-config':
       path    => '/opt/puppetlabs/server/data/puppetserver/.ssh/config',
       require => File[$dirs],
       content => $configfile,
       group   => 'pe-puppet',
       owner   => 'pe-puppet',
       mode    => '0600',
     }
   
     exec { 'download-codecommit-certificate':
       command => $command,
       require => File[$dirs],
       creates => '/etc/puppetlabs/puppetserver/ssh/codecommit.rsa',
       path    => '/bin',
       cwd     => '/etc/puppetlabs',
     }
   
     file { 'private-key-permissions':
       subscribe => Exec['download-codecommit-certificate'],
       path      => '/etc/puppetlabs/puppetserver/ssh/codecommit.rsa',
       group     => 'pe-puppet',
       owner     => 'pe-puppet',
       mode      => '0600',
     }
   }
   ```

1. Invia il tuo repository di controllo a. CodeCommit Eseguire i comandi seguenti per inviare il nuovo file manifest al repository.

   ```
   git add ./site/profile/manifests/codecommit.pp
   git commit -m 'Configuring for SSH connection to CodeCommit'
   git push origin production
   ```

1. Distribuire i file manifest. Esegui i seguenti comandi per distribuire la configurazione aggiornata sul tuo server OpsWorks for Puppet Enterprise. Sostituisci *STARTER\$1KIT\$1DIRECTORY* con il percorso dei file di configurazione di Puppet.

   ```
   cd STARTER_KIT_DIRECTORY
   
   puppet-access login --config-file .config/puppetlabs/client-tools/puppet-access.conf
   
   puppet-code deploy --all --wait \
   --config-file .config/puppet-code.conf \
   --token-file .config/puppetlabs/token
   ```

1. Aggiorna OpsWorks la classificazione del server Puppet Enterprise. Per impostazione predefinita, l'agente Puppet viene eseguito sui nodi (tra cui il master) ogni 30 minuti. Per evitare l'attesa, è possibile eseguire manualmente l'agente sul Puppet master. L'esecuzione dell'agente preleva il nuovo file manifest.

   1. Effettuare l'accesso alla console Puppet Enterprise.

   1. Scegliere **Classification (Classificazione)**.

   1. Espandere **PE Infrastructure (Infrastruttura PE)**.

   1. Scegliere **PE Master (Master PE)**.

   1. Nella scheda **Configuration (Configurazione)** immettere **profile::codecommit** in **Add new class (Aggiungi nuova classe)**.

      La nuova classe, `profile::codecommit`, potrebbe non essere visualizzata immediatamente dopo l'esecuzione di `puppet-code deploy`. Scegliere **Refresh (Aggiorna)** in questa pagina se non viene visualizzata.

   1. Scegliere **Add class (Aggiungi classe)**, quindi scegliere **Commit 1 change (Modifica commit 1)**.

   1. Esegui manualmente l'agente Puppet sul server OpsWorks for Puppet Enterprise. Scegliere **Nodes (Nodi)**, scegliere il server nell'elenco, scegliere **Run Puppet (Esegui Puppet)**, quindi scegliere **Run (Esegui)**.

1. Nella console Puppet Enterprise modificare l'URL del repository per l'utilizzo di SSH anziché di HTTPS. La configurazione eseguita in questi passaggi viene salvata durante il processo di backup e ripristino di OpsWorks for Puppet Enterprise, quindi non è necessario modificare manualmente la configurazione del repository dopo le attività di manutenzione.

   1. Scegliere **Classification (Classificazione)**.

   1. Espandere **PE Infrastructure (Infrastruttura PE)**.

   1. Scegliere **PE Master (Master PE)**.

   1. Nella scheda **Configuration (Configurazione)** individuare la classe `puppet_enterprise::profile::master`.

   1. Scegliere **Edit (Modifica)** accanto al parametro `r10k_remote`.

   1. Sostituire l'URL HTTPS con l'URL SSH per il repository e scegliere **Commit 1 change (Modifica commit 1)**.

   1. Esegui manualmente l'agente Puppet sul server OpsWorks for Puppet Enterprise. Scegliere **Nodes (Nodi)**, scegliere il server nell'elenco, scegliere **Run Puppet (Esegui Puppet)**, quindi scegliere **Run (Esegui)**.