Esempio 9: utilizzo di Amazon EC2 Instances - AWS OpsWorks

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

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 o tramite Premium AWS 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 è 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.

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

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.

  2. Segui le istruzioni online.

    Parte della procedura di registrazione prevede la ricezione di una telefonata o di un messaggio di testo e l'immissione di un codice di verifica sulla tastiera del telefono.

    Quando ti iscrivi a un Account AWS, Utente root dell'account AWSviene 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.

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/e scegliendo Il mio account.

Crea un utente con accesso amministrativo

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 AWS Management Consolecome 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 Signing in as the root user della Guida per l'utente di Accedi ad AWS .

  2. 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) nella Guida per l'utente IAM.

Crea un utente con accesso amministrativo
  1. Abilita Centro identità IAM.

    Per istruzioni, consulta Abilitazione di AWS IAM Identity Center nella Guida per l'utente di AWS IAM Identity Center .

  2. In IAM Identity Center, 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 nella Guida per l'AWS IAM Identity Center utente.

Accesso come utente amministratore
  • Per accedere con l'utente IAM Identity Center, utilizza l'URL di accesso che è stato inviato al tuo indirizzo e-mail quando hai creato l'utente IAM Identity Center.

    Per informazioni sull'accesso utilizzando un utente IAM Identity Center, consulta AWS Accedere al portale di accesso nella Guida per l'Accedi ad AWS utente.

Assegna l'accesso a ulteriori utenti
  1. In IAM Identity Center, crea un set di autorizzazioni conforme alla best practice dell'applicazione di autorizzazioni con il privilegio minimo.

    Segui le istruzioni riportate nella pagina Creazione di un set di autorizzazioni nella Guida per l'utente di AWS IAM Identity Center .

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

    Per istruzioni, consulta Aggiungere gruppi nella Guida per l'utente di AWS IAM Identity Center .

Dovresti creare un utente IAM 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_ACCESS_KEY — la chiave di accesso dell'utente, che avrà un aspetto simile. AKIAIOSFODNN7EXAMPLE

  • AWS_SECRET_KEY — 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
  2. 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. Questa procedura è stata testata con versione 0.8.0 del driver kitchen-ec2, ma sono disponibili versioni più recenti. Per installare una versione specifica, eseguire gem install kitchen-ec2 -v <version number>.

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

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

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

    name "createdir-ec2" version "0.1.0"
  6. Inizializzare Test Kitchen, come descritto in Esempio 1: installazione di pacchetti. La sezione seguente descrive come eseguire la configurazione.kitchen.yml, che è molto più complicata per EC2 le istanze Amazon.

  7. Aggiungere la sottodirectory recipes a createdir-ec2.

Configurazione di .kitchen.yml per Amazon EC2

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

(Obbligatorio) Il nome della coppia di chiavi Amazon EC2 SSH, denominato US-East1 in questo esempio.

transport.ssh_key

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

Regione

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

availability_zone

(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_chef_omnibus

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_group_ids

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

subnet_id

L'ID della sottorete di destinazione per l'istanza, se applicabile.

associate_public_ip

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

  2. Indirizzo IP pubblico

  3. Indirizzo IP privato

  4. Nome DNS privato

Importante

Invece di 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.

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

In questo esempio viene utilizzata la ricetta contenuta in Iterazione.

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

  3. Vai alla EC2console Amazon, seleziona la regione Stati Uniti occidentali (California settentrionale) e fai clic su Istanze nel riquadro di navigazione. La nuova istanza sarà visualizzata nell'elenco.

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