Configura il server Chef utilizzando lo Starter Kit - 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à.

Configura il server Chef utilizzando lo Starter Kit

Importante

AWS OpsWorks for Chef Automate ha raggiunto la fine del ciclo di vita il 5 maggio 2024 ed è stato disabilitato sia per i clienti nuovi che per quelli esistenti. Consigliamo ai clienti esistenti di migrare a Chef SaaS o a una soluzione alternativa. Se hai domande, puoi contattare il AWS Support team su AWS re:POST o tramite Premium AWS Support.

Mentre la creazione del server Chef è ancora in corso, apri la relativa pagina Proprietà nella console AWS OpsWorks for Chef Automate . La prima volta che utilizzi un nuovo server Chef, la pagina Proprietà chiede di scaricare due elementi necessari. Scarica questi elementi prima che il server Chef sia online; i pulsanti del download non sono disponibili dopo che un nuovo server è online.

AWS OpsWorks for Chef Automate nuova pagina delle proprietà del server
  • Sign-in credentials for the Chef server. (Credenziali di accesso per il server Chef) Utilizzerai queste credenziali per accedere alla dashboard di Chef Automate, dove lavori con le funzionalità premium di Chef Automate, come il flusso di lavoro e le scansioni di conformità. AWS OpsWorks non salva queste credenziali; questa è l'ultima volta che sono disponibili per la visualizzazione e il download. Se necessario, puoi modificare la password che viene fornita con queste credenziali dopo aver eseguito l'accesso.

  • Starter Kit. Lo Starter Kit contiene un file README con esempi, un file di configurazione knife.rb e una chiave di accesso privata per l'utente primario o pivotal. Ogni volta che scarichi lo Starter Kit, viene generata una nuova coppia di chiavi (la vecchia chiave viene reimpostata).

Oltre alle credenziali che funzionano solo con il nuovo server, il file.zip dello Starter Kit include un semplice esempio di repository Chef che funziona con qualsiasi server. AWS OpsWorks for Chef Automate Nell'archivio di Chef, puoi archiviare libri di ricette, ruoli, file di configurazione e altri artefatti per la gestione dei nodi tramite Chef. Consigliamo di archiviare questo archivio in un sistema di controllo della versione (ad esempio Git) e di trattarlo come un codice sorgente. Per informazioni ed esempi che mostrano come impostare un archivio di Chef gestito su Git, consulta l'articolo relativo alle informazioni sull'archivio di Chef nella documentazione di Chef.

Prerequisiti

  1. Durante la creazione del server, scarica le credenziali di accesso per il server Chef e salvale in una posizione comoda e sicura.

  2. Scarica lo Starter Kit e decomprimi il suo file .zip nella directory del tuo WorkSpace. Non condividere la chiave privata dello Starter Kit. Se altri utenti gestiranno il server Chef, aggiungili in seguito come amministratori del pannello di controllo di Chef Automate.

  3. Scarica e installa Chef Workstation (precedentemente noto come Chef Development Kit o Chef DK) sul computer che utilizzerai per gestire il server e i nodi Chef. L'knifeutilità fa parte di Chef Workstation. Per istruzioni, consulta Installa Chef Workstation sul sito Web di Chef.

Esplorare i contenuti dello starter kit

Lo starter kit ha i seguenti contenuti.

  • cookbooks/ - Una directory per i libri di ricette creati. La cookbooks/ cartella contiene il opsworks-webserver ricettario, un ricettario incartato che dipende dal ricettario del sito web di Chef nginx Supermarket. Policyfile.rbil valore predefinito è Chef supermarket come fonte secondaria se le dipendenze del ricettario non sono disponibili nella directory. cookbooks/

  • Policyfile.rb - Un file di policy basato su Ruby che definisce i libri di ricette, le dipendenze e gli attributi che diventano la policy per i nodi.

  • userdata.sh e userdata.ps1 - Puoi utilizzare i file di dati dell'utente per associare i nodi automaticamente dopo l'avvio del server Chef Automate. userdata.sh viene usato per il bootstrap dei nodi basati su Linux e userdata.ps1 per i nodi basati su Windows.

  • Berksfile - Puoi usare questo file se preferisci utilizzare Berkshelf e i comandi berks per il caricamento dei libri di ricette e relative dipendenze. In questo scenario, utilizziamo Policyfile.rb e i comandi Chef per i libri di ricette, le dipendenze e gli attributi.

  • README.md, un file basato su Markdown che descrive come utilizzare lo starter kit per configurare il server Chef Automate per la prima volta.

  • .chef è una directory nascosta che contiene un file di configurazione knife (knife.rb) e un file di chiave di autenticazione segreta (.pem).

    • .chef/knife.rb - Un file di configurazione knife (knife.rb). Il knife.rbfile è configurato in modo che le operazioni degli knifestrumenti di Chef vengano eseguite sul server. AWS OpsWorks for Chef Automate

    • .chef/ca_certs/opsworks-cm-ca-2020-root.pem - Una chiave privata SSL firmata da un'autorità di certificazione (CA) fornita da AWS OpsWorks. Questa chiave consente al server di identificarsi all'agente client Chef Infra sui nodi gestiti dal server.

Configurazione dell'archivio di Chef

Un archivio di Chef contiene più directory. Ogni directory nello Starter Kit contiene un file README, il quale descrive lo scopo della directory e illustra come utilizzarla per gestire i tuoi sistemi con Chef. Sono disponibili due modi per installare i libri di ricette sul server Chef: esegui i comandi knife o un comando Chef per caricare un file di policy (Policyfile.rb) nel server che scarica e installa i libri di ricette specificati. In questo scenario vengono utilizzati i comandi Chef e Policyfile.rb per l'installazione dei libri di ricette sul server.

  1. Crea una directory sul computer locale per l'archivio dei libri di ricetta, ad esempio chef-repo. Dopo aver aggiunto libri di cucina, ruoli e altri file a questo repository, ti consigliamo di caricarlo o archiviarlo in un sistema sicuro con versioni diverse, come CodeCommit Git o Amazon S3.

  2. Nella directory chef-repo crea le directory seguenti:

    • cookbooks/- Memorizza libri di cucina.

    • roles/ - Archivia i ruoli nei formati .rb o .json.

    • environments/ - Archivia gli ambienti nei formati .rb o .json.

Utilizzare Policyfile.rb per ottenere i libri di ricette da un'origine remota

In questa sezione, modifichi Policyfile.rb per specificare i libri di ricette, quindi esegui un comando Chef per caricare il file sul server e installare i libri di ricette.

  1. Visualizzare Policyfile.rb nello starter kit. Per impostazione predefinita, Policyfile.rb include il libro di ricette per il wrapper opsworks-webserver che dipende dal libro di ricette nginx disponibile nel sito Web Chef Supermarket. Il libro di ricette nginx consente di installare e configurare un server Web sui nodi gestiti. Viene anche specificato il libro di ricette chef-client richiesto, che consente di installare l'agente client Chef Infra sui nodi gestiti.

    Policyfile.rb indica anche il libro di ricette opzionale Chef Audit, che è possibile utilizzare per configurare le scansioni di conformità sui nodi. Per ulteriori informazioni sulla configurazione delle scansioni di conformità e sul recupero dei risultati di conformità per i nodi gestiti, consultare Scansioni di conformità in AWS OpsWorks for Chef Automate. Se non si desidera configurare le scansioni di conformità e l'audit in questo momento, eliminare 'audit' dalla sezione run_list e non specificare gli attributi del libro di ricette audit alla fine del file.

    # Policyfile.rb - Describe how you want Chef to build your system. # # For more information about the Policyfile feature, visit # https://docs.chef.io/policyfile.html # A name that describes what the system you're building with Chef does. name 'opsworks-demo-webserver' # The cookbooks directory is the preferred source for external cookbooks default_source :chef_repo, "cookbooks/" do |s| s.preferred_for "nginx", "windows", "chef-client", "yum-epel", "seven_zip", "build-essential", "mingw", "ohai", "audit", "logrotate", "cron" end # Alternative source default_source :supermarket # run_list: chef-client runs these recipes in the order specified. run_list 'chef-client', 'opsworks-webserver', 'audit' # add 'ssh-hardening' to your runlist to fix compliance issues detected by the ssh-baseline profile # Specify a custom source for a single cookbook: cookbook 'opsworks-webserver', path: 'cookbooks/opsworks-webserver' # Policyfile defined attributes # Define audit cookbook attributes default["opsworks-demo"]["audit"]["reporter"] = "chef-server-automate" default["opsworks-demo"]["audit"]["profiles"] = [ { "name": "DevSec SSH Baseline", "compliance": "admin/ssh-baseline" } ]

    Di seguito è riportato un esempio di Policyfile.rb senza il libro di ricette audit e gli attributi, se si desidera configurare solo i server Web nginx per il momento.

    # Policyfile.rb - Describe how you want Chef to build your system. # # For more information on the Policyfile feature, visit # https://docs.chef.io/policyfile.html # A name that describes what the system you're building with Chef does. name 'opsworks-demo-webserver' # Where to find external cookbooks: default_source :supermarket # run_list: chef-client will run these recipes in the order specified. run_list 'chef-client', 'opsworks-webserver' # Specify a custom source for a single cookbook: cookbook 'opsworks-webserver', path: 'cookbooks/opsworks-webserver'

    Se si modifica Policyfile.rb, assicurarsi di salvare il file.

  2. Scaricare e installare i libri di ricette definiti in Policyfile.rb.

    chef install

    La versione di tutti i libri di ricette è indicata nel file metadata.rb del libro di ricette. A ogni modifica di un libro di ricette, è necessario aumentare la versione del libro di ricette all'interno del file metadata.rb.

  3. Se si è scelto di configurare le scansioni di conformità e conservare le informazioni del libro di ricette audit nel file di policy, eseguire il push della policy opsworks-demo sul server.

    chef push opsworks-demo
  4. Se è stato completata la fase 3, verificare l'installazione della policy. Esegui il comando seguente.

    chef show-policy

    Il risultato deve essere simile al seguente:

    opsworks-demo-webserver ======================= * opsworks-demo: ec0fe46314
  5. È ora possibile aggiungere o eseguire il bootstrap dei nodi al server Chef Automate. È possibile automatizzare l'associazione di nodi completando la procedura in Aggiungi nodi automaticamente in AWS OpsWorks for Chef Automate o aggiungendo un nodo alla volta completando la procedura in Aggiungi nodi singolarmente.

(Alternativa) Utilizzare Berkshelf per ottenere libri di ricette da un'originen remota

Berkshelf è uno strumento per la gestione dei libri di ricette e delle loro dipendenze. Se preferisci utilizzare Berkshelf invece di Policyfile.rb per installare i libri di ricette nella memoria locale, utilizza la procedura presente in questa sezione anziché quella della sezione precedente. Puoi specificare quali libri di ricette e quali versioni utilizzare con il tuo server Chef e caricarli. Lo starter kit contiene un file denominato Berksfile che è possibile utilizzare per elencare i libri di ricette.

  1. Per iniziare, aggiungere il libro di ricette chef-client al Berksfile incluso. Il libro di ricette chef-client configura il software dell'agente client Chef Infra in ogni nodo che si connette al server Chef Automate. Per ulteriori informazioni su questo libro di ricette, consulta l'articolo relativo al libro di ricette del client Chef su Chef Supermarket.

  2. Usando un editor di testo, aggiungere un altro libro di ricette al Berksfile che installa un'applicazione server Web, ad esempio il libro di ricette apache2 che installa il server Web Apache. Il file Berksfile dovrebbe essere simile al seguente.

    source 'https://supermarket.chef.io' cookbook 'chef-client' cookbook 'apache2'
  3. Scarica e installa il libro di ricette sul computer locale.

    berks install
  4. Carica il libro di ricette sul server Chef.

    Su Linux, esegui quanto segue.

    SSL_CERT_FILE='.chef/ca_certs/opsworks-cm-ca-2020-root.pem' berks upload

    Su Windows, esegui il seguente comando Chef Workstation in una PowerShell sessione. Prima di eseguire il comando, assicurati di impostare la politica di esecuzione PowerShell suRemoteSigned. Aggiungi chef shell-init per rendere disponibili i comandi di utilità di Chef Workstation a PowerShell.

    $env:SSL_CERT_FILE="ca_certs\opsworks-cm-ca-2020-root.pem" chef shell-init berks upload Remove-Item Env:\SSL_CERT_FILE
  5. Verifica di aver installato il libro di ricette, visualizzando un elenco di libri di ricette attualmente disponibili sul server Chef Automate. Per aggiungerlo, eseguire il comando knife seguente:

    Sei pronto per aggiungere nodi da gestire con il AWS OpsWorks for Chef Automate server.

    knife cookbook list

(Opzionale) Configurare knife per l'utilizzo di un dominio personalizzato

Se il server Chef Automate utilizza un dominio personalizzato, potrebbe essere necessario aggiungere il certificato PEM della CA root che ha firmato la catena di certificati del server o il certificato PEM del server se il certificato è autofirmato. ca_certs è una sottodirectory in chef/ che contiene le autorità di certificazione (CA) considerate attendibili dalla utility knife.

È possibile ignorare questa sezione se non si utilizza un dominio personalizzato o se il certificato personalizzato è firmato da un'autorità di certificazione (CA) root considerata attendibile dal sistema operativo in uso. In caso contrario, configurare knife per l'attendibilità del certificato SSL del server Chef Automate, come descritto nelle fasi seguenti.

  1. Esegui il comando seguente.

    knife ssl check

    Se i risultati sono simili ai seguenti, ignorare il resto della procedura e passare a Aggiungere nodi da gestire con il server Chef.

    Connecting to host my-chef-automate-server.my-corp.com:443 Successfully verified certificates from 'my-chef-automate-server.my-corp.com'

    Se viene visualizzato un messaggio di errore simile al seguente, passare alla fase successiva.

    Connecting to host my-chef-automate-server.my-corp.com:443 ERROR: The SSL certificate of my-chef-automate-server.my-corp.com could not be verified. ...
  2. Eseguire knife ssl fetch per l'attendibilità dei certificati del server AWS OpsWorks for Chef Automate . In alternativa, è possibile copiare manualmente il certificato CA root in formato PEM del server nella directory che è il valore di trusted_certs_dir nell'output di knife ssl check. Per impostazione predefinita, questa directory si trova in .chef/ca_certs/ nello Starter Kit. L'output visualizzato dovrebbe essere simile al seguente:

    WARNING: Certificates from my-chef-automate-server.my-corp.com will be fetched and placed in your trusted_cert directory (/Users/username/starterkit/.chef/../.chef/ca_certs). Knife has no means to verify these are the correct certificates. You should verify the authenticity of these certificates after downloading. Adding certificate for my-chef-automate-server in /Users/users/starterkit/.chef/../.chef/ca_certs/servv-aqtswxu20swzkjgz.crt Adding certificate for MyCorp_Root_CA in /Users/users/starterkit/.chef/../.chef/ca_certs/MyCorp_Root_CA.crt
  3. Eseguire nuovamente knife ssl check. L'output visualizzato dovrebbe essere simile al seguente:

    Connecting to host my-chef-automate-server.my-corp.com:443 Successfully verified certificates from 'my-chef-automate-server.my-corp.com'

    Ora è possibile utilizzare knife con il server Chef Automate.