martedì 26 gennaio 2016

Cheatsheet per l'intero VMware AppCatalyst API utilizzando cURL

Ci sono state un paio di domande di recente circa la sintassi richiesta per specifiche operazioni di VMware AppCatalyst quando si consumano l'API REST con cURL. Ho pensato che ho messo insieme un rapido "bigino" che contiene gli esempi Curl per l'intera API VMware AppCatalyst che non solo sarebbe aiutarmi in futuro, ma potrebbe anche beneficiare gli altri. Come molti, ho imparato anche con l'esempio e con i campioni esplicite per iniziare è un ottimo modo per prendere confidenza con una nuova tecnologia o prodotto. Se siete nuovi a VMware AppCatalyst e vorrebbe un breve riassunto su come iniziare rapidamente, assicurati di aver letto il mio articolo arrivare iniziato qui per ulteriori dettagli.

Mentre passa attraverso l'API AppCatalyst, ho trovato un paio di operazioni API che aveva alcune incoerenze e non rispettare rigorosamente il formato JSON. Grazie a Roman Tarnvski per fornire la soluzione. Mi auguro che questi problemi saranno risolti in un futuro aggiornamento AppCatalyst come mi piace la facilità d'uso del loro API. Per la maggior parte delle API, la documentazione di sé tramite l'AppCatalyst API Explorer  è accurata, che potete vedere dalla schermata qui sotto.

appcatalyst-api-explorer
Prima di poter interagire con le API REST AppCatalyst, è necessario avviare il AppCatalyst Daemon eseguendo il seguente comando:

/ opt / vmware / appcatalyst / bin / appcatalyst-daemon

Una volta che il AppCatalyst Daemon è in esecuzione, è possibile aprire un nuovo terminale e iniziare a lavorare con la REST API via cURL o qualsiasi altro strumento di scelta.

1. Creare una nuova VM dal modello Photon operativo VM predefinito:

È tecnicamente sufficiente specificare l'unico "id proprietà", ma si può anche dare un nome visualizzato per la VM utilizzando il "nome proprietà".

ricciolo -d '{"id": "VM1", "name": "MyAppCat-VM1"}' -X POST localhost: 8080 / api / vms

1. CreateVM
2. Clone una VM da una VM esistente:

Simile alla creazione di una nuova VM, avete anche possibilità di utilizzare il "tag proprietà" per associare metadati aggiuntivi con la VM.

ricciolo -d '{"id": "VM2", "parentid": "VM1", "name": "MyAppCat-VM2", "tag": "Sviluppo"}' -X POST localhost: 8080 / api / vms

2. Clone VM
3. Elenco tutte le macchine virtuali

ricciolo -X GET localhost: 8080 / api / vms

3. Elenco VM
4. Ottenere una specifica VM:

Per recuperare una specifica VM, è necessario accendere il VM prima è consentita questa operazione. Ho trovato strano che questo era il caso, ma forse questo potrebbe essere migliorato in futuro, di non avere questo requisito, soprattutto se si vuole tirare fuori i dettagli, come la proprietà "tag".

arricciatura -X GET localhost: 8080 / API / VMS / VM1

4. Ottenere specifica VM
5. Accendere un VM:

ricciolo -d 'su' -X PATCH localhost: 8080 / api / VMS / potere / VM1

Nota: Altri VM Filiera Energia: off, arresto, sospensione, mettere in pausa e Riattiva

5. Alimentazione VM
6. Ottenere lo stato di alimentazione di una macchina virtuale:

ricciolo -X GET localhost: 8080 / api / VMS / potere / VM1

6. Ottenere statale
7. Prendi l'indirizzo IP di una macchina virtuale:

ricciolo -X GET localhost: 8080 / api / VMS / VM1 / ipaddress

7. Ottieni indirizzo IP
8. Abilitare la condivisione delle cartelle per una macchina virtuale:

ricciolo -d "vero" -X PATCH localhost: 8080 / API / VMS / VM1 / cartelle

8. Abilitare cartelle condivise
9. Creare una mappatura cartella condivisa per una macchina virtuale:

La "guestPath proprietà" non è un percorso assoluto all'interno del GuestOS, ma piuttosto un nome logico. Per ulteriori dettagli sulle cartelle condivise in AppCatalyst, si prega di dare un'occhiata a questo articolo qui. Attualmente c'è un solo "bandiere proprietà" con il valore di 4, che abilita di lettura / scrittura, consultare l'articolo del link qui sopra per maggiori dettagli sulla condivisione delle cartelle in AppCatalyst.

ricciolo -d '{"guestPath": "-cartella condivisa", "HostPath": "/ Users / WLAM / git", "bandiere": 4}' -X POST localhost: 8080 / API / VMS / VM1 / cartelle

9. Creare cartella condivisa
10. Elenco tutte le cartelle condivise di una VM:

ricciolo -X GET localhost: 8080 / API / VMS / VM1 / cartelle

10. Elenco tutte le cartelle condivise
11. Elenco una cartella condivisa specifica per un VM:

ricciolo -X GET localhost: 8080 / api / VMS / VM1 / cartelle /-cartella condivisa

11. Lista cartella condivisa specifica
12. Eliminare una cartella condivisa per una macchina virtuale:

ricciolo -X DELETE localhost: 8080 / API / VMS / VM1 / cartelle /-cartella condivisa

12. Elimina cartella condivisa
13. Elimina VM:

ricciolo -X DELETE localhost: 8080 / API / VMS / VM1

13. Elimina VM

martedì 5 gennaio 2016

Come bootstrap del VCSA utilizzando il client incorporato ESXi host?

In passato, ho scritto sui vari modi di "bootstrapping" vCenter Server (qui e qui), che può essere utile per la creazione di distribuzioni vSphere greenfield. Questo argomento è sempre stato di interesse per me, perché può essere il più difficile da risolvere, soprattutto quando si inizia solo con un singolo host ESXi. Storicamente, queste opzioni "bootstrap" sono per lo più stati cacciati da un punto di vista CLI che non è una brutta cosa quando si pensa a questo proposito dal punto di vista di automazione e che hanno bisogno di replicare questo un paio dozzina di volte. Tuttavia, dal punto di vista dell'utente esperienza, potrebbe non essere così ideale, soprattutto se questo è un compito frequente. Una delle altre funzioni interessanti del Cliente ESXi host incorporato (EHC)  che recentemente ha avuto il suo rilascio v4 è che può essere utilizzato per distribuire appliance virtuali memorizzati in formato OVF.

Distribuzione OVF era stato intorno dal v2 di EHC se non ricordo male, ma non ha sostenuto tutti i diversi tipi di funzionalità OVF, come opzione di distribuzione come un esempio fino a più di recente. Una delle difficoltà con il supporto OVF su ESXi non è solo sostenendo la possibilità di importare / esportare ma è anche sostenendo la specifica completa OVF che ESXi attualmente non supporta oggi. Ciò significa, per fornire il pieno supporto OVF attraverso EHC, avrebbe dovuto implementare una funzionalità simile a quello che fa ovftool oggi con l'opzione di --injectOvfEnv. Per fortuna, questo era qualcosa che è stato aggiunto molto presto in base alla mia retroazione che a mio parere è fondamentale quando si tratta di greenfield implementazioni e uno dei casi d'uso di base che vedo per EHC.

Senza ulteriori indugi, di seguito le istruzioni per il bootstrap Appliance vCenter Server (VCSA) utilizzando il client di Host incorporato.

Fase 1 - Scarica il VCSA OVA e quindi convertirlo in un OVF utilizzando 7zip o ovftool. Il motivo è necessario convertirlo in un OVF è che c'è attualmente un problema noto quando si cerca di estrarre OAV più grandi all'interno del EHC. In questo modo, è anche accelerare il tempo necessario per eseguire l'upload e non dover aspettare per l'interfaccia utente per estrarlo nel formato attuale di consumo, che è la OVF e VMDK.

Fase 2 - Fare clic sull'opzione "Crea / Registrati VM" e quindi scegliere "Distribuire una macchina virtuale da un OVF o OVA file". È necessario specificare il nome per il VCSA insieme al OVF e le 3 VMDK che è incluso se si utilizza vSphere 6.0 / 6.0 Update 1.

implementare-vcsa-con-embedded-host-client-1
Fase 3 - Successivamente sarà configurare la rete VM e l'opzione del disco di provisioning. Vi verrà anche richiesto di selezionare il "Tipo di distribuzione", che è un'opzione in vSphere 6.0 / 6.0 Update 1 che permette di specificare se si distribuisce un VCSA incorporato, vCenter Server esterno o esterno Piattaforma di servizi Controller (PSC). Si può notare il menu comprende giù le voci duplicate e la ragione di questo è come il VCSA OVA stato costruito, che ri-utilizza la stessa descrizione di ciascuna delle etichette, ma che in realtà hanno significati diversi. Qui di seguito un breve tabella dei mapping corrette l'ordinamento corrente analizzato da EHC ai diversi tipi di VCSA di distribuzione:

Etichetta Actual tipo di distribuzione
Piccoli (fino a 10 host 100 VM) Incorporato Nodo VCSA
I piccoli (fino a 100 host 1K VM) Incorporato Nodo VCSA
Medie (fino a 400 host 4K VM) Incorporato Nodo VCSA
Grandi (fino a 1K host 10K VM) Incorporato Nodo VCSA
Piccoli (fino a 10 host 100 VM) Nodo vCenter server esterno
I piccoli (fino a 100 host 1K VM) Nodo vCenter server esterno
Medie (fino a 400 host 4K VM) Nodo vCenter server esterno
Grandi (fino a 1K host 10K VM) Nodo vCenter server esterno
implementare-vcsa-con-embedded-host-client-2
Fase 4 - Sarà necessario compilare le proprietà OVF che sono necessari per configurare correttamente il VCSA. Le 3 sezioni seguenti sono SOLO quelli è necessario modificare per l'installazione:

Configurazione di rete
Configurazione SSO
Configurazione di sistema
Passo 4a - La sezione Configurazione di rete richiederà di specificare quanto segue:

Host IP Network Address Family - IPv4 o IPv6
Host Modalità di rete - statico o DHCP
Indirizzo Host IP Network - indirizzo IP del VCSA
Host prefisso di rete - Questa è la notazione CIDR della rete si prevede di collocare la VCSA su. Esempio potrebbe essere / 24 (255.255.255.0), che è necessario specificare come solo 24
Host Rete Default Gateway - Gateway da utilizzare
Host server DNS di rete - server DNS da utilizzare
Host Network Identity (opzionale) - Questo è il nome di dominio completo del VCSA. Se siete in un ambiente abilitato DHCP, è possibile lasciare questo vuoto che si utilizza automaticamente localhost.localdomain
implementare-vcsa-con-embedded-host-client-3
Fase 4b - La sezione Configurazione SSO richiederà di specificare quanto segue:

Directory Password - SSO password di amministratore
Elenco password conferma - SSO password di amministratore
Directory Domain Name - SSO Dominio (selezionare vsphere.local se si desidera che il difetto che consiglio)
Nome sito - Nome SSO sito
Nuova identità Dominio - Ciò è necessario se si tratta di una nuova messa a punto e non si sta impostando la replica SSO con un PSC esistente
implementare-vcsa-con-embedded-host-client-4
Fase 4c - La sezione di configurazione di sistema richiederà di specificare quanto segue:

Root Password - La password di root per il sistema operativo
Password di root conferma - La password di root per il sistema operativo
SSH abilitato (opzionale) - Se si desidera per SSH sia abilitato dopo la distribuzione
Strumenti basati su Time Sync Abilitato - Se non si dispone di un server NTP, è necessario selezionare questa opzione
I server NTP (opzionale) - Specificare un server NTP valido che si desidera utilizzare
implementare-vcsa-con-embedded-host-client-5
Fase 5 - Avrete la possibilità di rivedere le configurazioni prima di iniziare la distribuzione. Si dovrebbe controllare due volte a garantire che tutte le proprietà OVF sono corrette, altrimenti si può ottenere una distribuzione non riuscita.

implementare-vcsa-con-embedded-host-client-6
Fase 6 - Una volta pronti, andare avanti e fare clic sul pulsante "Fine". Verrà avviata l'importazione OVF quale è possibile monitorare utilizzando il riquadro Attività recenti. Come parte del flusso di lavoro OVF / OVA, una volta che l'importazione è stata completata, esso si accenderà automaticamente la VM per voi. Si prega di non interrompere questo processo come EHC sarà iniettando le proprietà OVF si era specificato in precedenza al VM per garantire la VCSA sarà configurato correttamente.

implementare-vcsa-con-embedded-host-client-7
Una volta che la VM è stato acceso, è possibile fare clic nella console VM per visualizzare lo stato della fase costitutiva e si spera in un paio di minuti, si avrà una configurazione completa e funzionale VCSA pronto per l'uso!

implementare-vcsa-con-embedded-host-client-8
Anche se EHC oggi ha messo in atto una bella interfaccia generica / OVA OVF nell'interfaccia utente per supportare quasi tutte le OVF / OVA, si può vedere come questo potrebbe essere ulteriormente migliorata specificatamente per le distribuzioni VCSA dal punto di vista l'esperienza degli utenti. Chi lo sa, questo potrebbe ottenere ancora più semplice in futuro:)