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 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 AWS Support Team su AWS re:post o tramite Premium AWS Support.

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 istanze Stacks.

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 tramite qualsiasi ricetta; la maggior parte delle ricette per le istanze AWS OpsWorks Stacks utilizza 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'istanza Stacks. AWS OpsWorks

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 metodo alternativo per simulare il JSON di configurazione e distribuzione dello stack.

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 gli attributi di configurazione e distribuzione dello stack poiché il file di ambiente è già in formato JSON. Puoi ottenere una copia degli attributi in formato JSON da un'istanza AWS OpsWorks Stacks adatta e incollarla. Tutti gli esempi utilizzano un file di ambiente.

Il modo più semplice per creare attributi di configurazione e distribuzione di uno stack per il tuo libro di ricette è realizzare uno stack configurato correttamente e copiare gli attributi risultanti da un'istanza come JSON. Per mantenere il tuo file di ambiente Test Kitchen gestibile, puoi modificare tale JSON in modo da avere solo gli attributi necessari alle tue ricette. Gli esempi in questo capitolo sono basati sullo stack di Nozioni di base sugli stack Linux Chef 11, ovvero lo stack di un server di applicazioni PHP semplice con sistema di bilanciamento del carico, server di applicazioni PHP e server di database MySQL.

Per creare un JSON di configurazione e distribuzione dello stack
  1. Crea MyStack come descritto in, inclusa la distribuzione di Nozioni di base sugli stack Linux Chef 11 SimplePHPApp. Se preferisci, puoi omettere la seconda istanza di PHP App Server richiestaFase 4: Scalabilità orizzontale MyStack; gli esempi non usano questi attributi.

  2. Se non è già stato fatto, avviare l'istanza php-app1, quindi accedere 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 visualizza i più recenti attributi di configurazione e distribuzione dello stack più recente dell'istanza nella finestra del terminale in formato JSON.

  4. Copiare il JSON in un file .json e salvarlo in una posizione comoda sulla workstation. I dettagli dipendono dal client SSH. Ad esempio, se si sta utilizzando PuTTY su Windows, è possibile eseguire il comando Copy All to Clipboard, 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. Modifica MyStack JSON in base alle esigenze. 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, è possibile modificare il JSON in modo che conservi la struttura originale ma contenga solo gli attributi che il libro di ricette effettivamente utilizza.

    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 simile alla seguente:

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

Per ottenere questo JSON nell'oggetto nodo dell'istanza, è necessario 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 in formato JSON.

      Questi attributi vengono aggiunti all'oggetto nodo con il tipo di attributo default, ovvero il tipo utilizzato da tutti gli attributi JSON di configurazione e distribuzione dello stack. In questo esempio viene utilizzata la versione modificata del JSON di configurazione e distribuzione dello stack illustrata 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 più fedelmente l'ambiente AWS OpsWorks Stacks, puoi utilizzare la modalità locale del client Chef anziché 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 sia eseguita localmente in Virtual Box, fai riferimento a tali attributi utilizzando la stessa sintassi del nodo che faresti 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 ...