Simulazione degli attributi di configurazione e distribuzione dello stack su Vagrant - 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à.

Simulazione degli attributi di configurazione e distribuzione dello stack su Vagrant

Importante

Il AWS OpsWorks Stacks il servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disabilitato 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 AWS Support Squadra su AWS Re:post o tramite AWS Supporto Premium.

Nota

Questo argomento si applica solo alle istanze Linux. Test Kitchen non supporta ancora Windows, quindi eseguirai tutti gli esempi di Windows su AWS OpsWorks Impila le istanze.

AWS OpsWorks Stacks aggiunge gli attributi di configurazione e distribuzione dello stack all'oggetto nodo per ogni istanza dello stack per ogni evento del ciclo di vita. Questi attributi forniscono una snapshot della configurazione dello stack, inclusa la configurazione di ogni livello e le relative istanze online, la configurazione di ogni app distribuita e così via. Poiché questi attributi si trovano nell'oggetto nodo, è possibile accedervi con qualsiasi ricetta; la maggior parte delle ricette per AWS OpsWorks Le istanze Stacks utilizzano uno o più di questi attributi.

Un'istanza in esecuzione in una casella Vagrant non è gestita da AWS OpsWorks Stacks, quindi il suo oggetto nodo non include alcun attributo di configurazione e distribuzione dello stack per impostazione predefinita. Tuttavia, puoi aggiungere una serie di attributi idonei all'ambiente Test Kitchen. Test Kitchen aggiunge quindi gli attributi all'oggetto nodo dell'istanza e le tue ricette possono accedere agli attributi proprio come farebbero su un AWS OpsWorks Istanza Stacks.

In questo argomento viene illustrato come ottenere una copia degli attributi di configurazione e distribuzione di uno stack idoneo, come installare gli attributi in un'istanza e come accedervi.

Nota

Se utilizzi Test Kitchen per eseguire test sulle tue ricette, fauxhai fornisce un modo alternativo per simulare la configurazione e l'implementazione dello stack. JSON

Per configurare il libro di ricette
  1. Creare una sottodirectory di opsworks_cookbooks denominata printjson e accedervi.

  2. Inizializzare e configurare Test Kitchen, come descritto in Esempio 1: installazione di pacchetti.

  3. Aggiungere due sottodirectory a printjson: recipes ed environments.

Puoi simulare gli attributi di configurazione e distribuzione dello stack aggiungendo un file di attributi al libro di ricette con le definizioni appropriate, tuttavia un approccio migliore consiste nell'utilizzare l'ambiente Test Kitchen. Sono disponibili due approcci di base:

  • Aggiungere definizioni degli attributi a .kitchen.yml.

    Questo approccio è particolarmente utile se disponi di alcuni attributi. Per ulteriori informazioni, vedi kitchen.yml.

  • Definire gli attributi in un file di ambiente e fare riferimento al file in .kitchen.yml.

    Questo approccio è generalmente preferibile per la configurazione dello stack e gli attributi di distribuzione perché il file di ambiente è già in formato. JSON È possibile ottenere una copia degli attributi in JSON formato da un apposito AWS OpsWorks Impila l'istanza e basta incollarla. Tutti gli esempi utilizzano un file di ambiente.

Il modo più semplice per creare una configurazione dello stack e degli attributi di distribuzione per il tuo libro di cucina consiste nel creare uno stack configurato in modo appropriato e copiare gli attributi risultanti da un'istanza come. JSON Per mantenere gestibile il file dell'ambiente Test Kitchen, puoi quindi modificarlo in modo che abbia solo gli attributi necessari JSON alle tue ricette. Gli esempi in questo capitolo si basano sullo stack fromNozioni di base sugli stack Linux Chef 11, che è un semplice stack di server di PHP applicazioni con un sistema di bilanciamento del carico, server di PHP applicazioni e un server di database My. SQL

Per creare una configurazione e una distribuzione dello stack JSON
  1. Crea MyStack come descritto inNozioni di base sugli stack Linux Chef 11, inclusa la distribuzione di S. implePHPApp Se preferisci, puoi omettere la seconda istanza di PHP App Server richiesta inFase 4: Scalare Out MyStack; gli esempi non utilizzano questi attributi.

  2. Se non l'hai ancora fatto, avvia l'php-app1istanza, quindi accedi con SSH.

  3. Nella finestra del terminale, eseguire il seguente comando dell'interfaccia a riga di comando dell'agente:

    sudo opsworks-agent-cli get_json

    Questo comando stampa gli attributi di configurazione e distribuzione dello stack più recenti dell'istanza nella finestra del terminale in JSON formato.

  4. Copiali JSON in un .json file e salvalo in una posizione comoda sulla workstation. I dettagli dipendono dal SSH cliente. Ad esempio, se si utilizza Pu TTY su Windows, è possibile eseguire il Copy All to Clipboard comando, che copia tutto il testo nella finestra del terminale negli Appunti di Windows. È quindi possibile incollare i contenuti in un file .json e modificare il file per rimuovere testo estraneo.

  5. Eseguite le modifiche MyStack JSON necessarie. Gli attributi di configurazione e distribuzione dello stack sono numerosi e i libri di ricette utilizzano generalmente solo una piccola parte di essi. Per mantenere gestibile il file di ambiente, puoi modificarlo JSON in modo che mantenga la struttura originale ma contenga solo gli attributi effettivamente utilizzati dai tuoi libri di cucina.

    Questo esempio utilizza una versione fortemente modificata di MyStack JSON che include solo due ['opsworks']['stack'] attributi, e. ['id] ['name'] Crea una versione modificata di MyStack JSON che assomigli alla seguente:

    { "opsworks": { "stack": { "name": "MyStack", "id": "42dfd151-6766-4f1c-9940-ba79e5220b58", }, }, }

Per JSON inserirlo nell'oggetto nodo dell'istanza, devi aggiungerlo a un ambiente Test Kitchen.

Per aggiungere gli attributi di configurazione e distribuzione dello stack all'ambiente Test Kitchen
  1. Creare un file di ambiente denominato test.json con il seguente contenuto e salvarlo nella cartella environments del libro di ricette.

    { "default_attributes": { "opsworks" : { "stack" : { "name" : "MyStack", "id" : "42dfd151-6766-4f1c-9940-ba79e5220b58" } } }, "chef_type" : "environment", "json_class" : "Chef::Environment" }

    Il file di ambiente presenta gli elementi seguenti:

    • default_attributes— Gli attributi predefiniti nel JSON formato.

      Questi attributi vengono aggiunti all'oggetto nodo con il tipo di default attributo, che è il tipo utilizzato da tutti gli JSON attributi di configurazione e distribuzione dello stack. Questo esempio utilizza la versione modificata della configurazione e della distribuzione dello stack JSON mostrata in precedenza.

    • chef_type— Imposta questo elemento su. environment

    • json_class— Imposta questo elemento suChef::Environment.

  2. Modificare .kitchen.yml per definire l'ambiente Test Kitchen, come segue.

    --- driver: name: vagrant provisioner: name: chef_solo environments_path: ./environments platforms: - name: ubuntu-12.04 suites: - name: printjson provisioner: solo_rb: environment: test run_list: - recipe[printjson::default] attributes:

    È possibile definire l'ambiente aggiungendo i seguenti elementi al .kitchen.yml predefinito creato da kitchen init.

    provisioner

    Aggiungere gli elementi seguenti.

    • name— Imposta questo elemento suchef_solo.

      Per replicare il AWS OpsWorks Impila più da vicino l'ambiente, puoi usare la modalità locale del client Chef invece di Chef solo. La modalità locale è un'opzione del client Chef che utilizza una versione ridotta del server Chef (Chef Zero), eseguita in locale sull'istanza anziché su un server remoto. Questo consente alle ricette di utilizzare funzioni del server Chef, come la ricerca o i contenitori di dati, senza connettersi a un server remoto.

    • environments_path— La sottodirectory cookbook che contiene il file di ambiente, ./environments per questo esempio.

    suites:provisioner

    Aggiungi un elemento solo_rb con una serie di elementi environment al nome del file di ambiente, eliminando l'estensione .json. Questo esempio imposta environment su test.

  3. Creare un file di ricetta denominato default.rb con il seguente contenuto e salvarlo nella directory recipes del libro di ricette.

    log "Stack name: #{node['opsworks']['stack']['name']}" log "Stack id: #{node['opsworks']['stack']['id']}"

    Questa ricetta registra semplicemente i due valori di configurazione e distribuzione dello stack aggiunti all'ambiente. Sebbene la ricetta venga eseguita localmente in Virtual Box, si fa riferimento a tali attributi utilizzando la stessa sintassi del nodo che si farebbe se la ricetta fosse in esecuzione su un AWS OpsWorks Istanza Stacks.

  4. Esegui kitchen converge. Dovrebbe essere visualizzato un output del log simile al seguente.

    ... Converging 2 resources Recipe: printjson::default * log[Stack name: MyStack] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack name: MyStack] action write (printjson::default line 1) [2014-07-01T23:14:09+00:00] INFO: Stack name: MyStack * log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write (printjson::default line 2) [2014-07-01T23:14:09+00:00] INFO: Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58 ...