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
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
Per configurare il libro di ricette
-
Creare una sottodirectory di
opsworks_cookbooks
denominataprintjson
e accedervi. -
Inizializzare e configurare Test Kitchen, come descritto in Esempio 1: installazione di pacchetti.
-
Aggiungere due sottodirectory a
printjson
:recipes
edenvironments
.
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
-
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.
-
Se non l'hai ancora fatto, avvia l'
php-app1
istanza, quindi accedi con SSH. -
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.
-
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 ilCopy 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. -
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
-
Creare un file di ambiente denominato
test.json
con il seguente contenuto e salvarlo nella cartellaenvironments
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
.
-
-
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 dakitchen 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 elementienvironment
al nome del file di ambiente, eliminando l'estensione .json. Questo esempio impostaenvironment
sutest
.
-
Creare un file di ricetta denominato
default.rb
con il seguente contenuto e salvarlo nella directoryrecipes
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.
-
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 ...