Durante il test la nuova funzionalità kickstart in ESXi 4.1, mi sono imbattuto in alcuni problemi cercando di convertire una distribuzione classica ESX 4.x per ESXi 4.1. Ho pensato di condividere alcuni dei suggerimenti e trucchi che ho imparato, in modo che altri non voglio incontrare gli stessi problemi.
Prima di tuffarsi in e creando un 4.1 configurazione kickstart ESXi, assicuratevi di trascorrere qualche ora di andare oltre la documentazione fornita da VMware, in particolare il ESXi installabile e Guida di installazione vCenter Server.
UPDATE: Per ESXi 5, Partenza ESXi5 Kickstart Tips & Tricks
Suggerimento # 1
Se avete intenzione di specificare un ks.cfg (file di configurazione kickstart) nel file pxelinux, assicurarsi che la voce kickstart viene aggiunto dopo l'* vmkboot.gz * ma prima * vmkernel.gz * voce come evidenziato in verde nella schermata . Se lo si inserisce in qualsiasi altra parte l'opzione della riga di boot, si riceverà un errore che non è facile da diagnosticare. Inoltre, si vuole fare in modo di aggiungere trattini triple ( - ) dopo la linea di kickstart seguendo la sintassi richiesta per le opzioni di avvio come evidenziato in arancione nello screenshot.
Suggerimento # 2
Durante lo sviluppo e il test ks.cfg, si consiglia di utilizzare il nuovo DryRun parametro che analizza il file di configurazione kickstart alla ricerca di errori di sintassi e di formattazione. In modalità DryRun, nessuna installazione verrà eseguita, ma vi verrà fornito con un log di se il vostro ks.cfg avesse eventuali errori, avvisi o ha avuto successo in fase di convalida.
La seguente immagine mostra un messaggio di avviso in cui ho volutamente lasciato fuori -hostname voce che viene generalmente raccomandato all'interno della porzione di "rete" del ks.cfg:
Se ci sono altri errori o avvisi, verranno visualizzati all'interno di questa schermata e si può accedere all'host per visualizzare il registro per maggiori dettagli ( esxi_install.log ):
Per accedere all'host, potrete premere il tasto "invio" e verrà richiesto per il login (premere Alt + F1 per passare alla schermata di accesso). Il nome utente di default sarà "root" e la password è vuota, basta premere Invio per la password:
Una volta effettuato il login, si vuole dare un'occhiata al esxi_install.log per maggiori dettagli su come il vostro ks.cfg viene elaborato e se ci sono eventuali errori o avvisi rilevati dal parser:
Suggerimento # 3
Se si desidera attivare sia locale che remoto (accesso SSH) Modalità di supporto tecnico sul vostro host ESXi, ora avete la possibilità di farlo tramite i servizi di accoglienza. È possibile utilizzare il vim-cmd utility (vimsh) per attivare questi servizi e sia TSM locale e remoto è disabilitato per impostazione predefinita.
Nota: Se si desidera attivare o locale e / o remoto TSM, è necessario assicurarsi di attivare e avviare il servizio per voi di essere effettivamente in grado di SSH nel vostro host ESXi.
Suggerimento # 4
Con ESX classico, se avete bisogno di trasferire pacchetti aggiuntivi o file al vostro ospite, si potrebbe facilmente montare un volume NFS, con ESXi, un client NFS non è disponibile. Se il bisogno di trasferire i file per la configurazione, è possibile utilizzare il wget utilità.
La sintassi per wget è il seguente:
wget http://webserver/file-O / tmp / file di
Suggerimento # 5
Mi è stato detto da un sostegno che non si poteva configurare syslog per il vostro host ESXi senza affidarsi a strumenti esterni come vCLI, PowerCLI o vSphere Client. Ho scoperto che in realtà si può configurare configurazioni syslog, anche se bisogna scavare un po 'in vim-cmd (vimsh) in quanto non è disponibile utilizzando uno qualsiasi dei comandi esxcfg-* locali. C'è solo tre opzioni syslog come forniti tramite vSphere Client Configurazioni Advanced Host: Syslog.Remote.Hostname , Syslog.Remote.Port e Syslog.Local.DatastorePath
Ecco la sintassi per le opzioni syslog:
vim-cmd hostsvc / advopt / aggiornare stringa Syslog.Remote.Hostname syslog.primp-industries.com
vim-cmd hostsvc / advopt / aggiornare Syslog.Remote.Port int 514
vim-cmd hostsvc / advopt / aggiornare stringa Syslog.Local.DatastorePath "[DataStoreName] / logfiles / hostName.log"
Nota: Attualmente è possibile configurare un solo server syslog per il vostro host ESXi di trasmettere registri per.
Suggerimento # 6
Un altro nuovo nuovo parametro kickstart introdotta con ESXi 4.1 è di livello che viene utilizzato in combinazione con% firstboot strofa. Questo parametro specifica l'ordine specifico in cui le configurazioni firstboot kickstart dovrebbero correre rispetto agli altri script di avvio quando i tuoi ESXi ospitano primi stivali. Per impostazione predefinita, se si lascia questo fuori, VMware creerà automaticamente uno script chiamato firstboot_001 e il numero è 999, che sarà l'ultimo script da eseguire. E 'una buona idea per spostare tutte le configurazioni postali fino alla fine, poiché la maggior parte di configurazione post possono contare su specifici CLI e servizi che devono essere avviati prima di eseguire VMware. È ovviamente possibile modificare il livello, ma attenzione sullo spostamento troppo presto nel processo di avvio.
Ecco un esempio di cambiare il livello di 998:
Una volta che l'host ha avviato, è possibile accedere per vedere lo script che è stato creato dal tuo% firstboot strofa in / etc / vmware / init / init.d
Nota: Come potete vedere, lo script firstboot ora è cambiato a 998. Noterete anche altri due script fissati a livello 999 che gestisce l'aggiornamento della password se si decide di impostare una password di root dal default vuoto, che si dovrebbe. Questi script personalizzati vengono generati dopo la generazione iniziale e al successivo riavvio, questi verranno automaticamente rimossi.
Suggerimento # 7
Si sarà notato in Tip # 6, abbiamo cambiato il livello di 998, per impostazione predefinita, tutti e tre questi init script sono impostati per l'avvio ordine 999. Questo in realtà è stato fatto di proposito, la ragione è come descritto in precedenza, la password di root è vuota per impostazione predefinita. Un problema che ho trovato durante il test è l'incapacità di attivare "Traffic Management" per un'interfaccia VMkernel. Si può facilmente attivare vMotion e FT traffico per un'interfaccia VMkernel utilizzando vim-cmd (vimsh), ma non è possibile per la gestione del traffico. Un modo ho risolto questo problema è la creazione di uno script python che si collega alla ESXi locale MOB e consente di gestione del traffico su una particolare interfaccia VMkernel. Ho condiviso questo script specifico sulla sulle comunità VMTN che possono essere trovati qui . Lo script è in realtà basata sulla versione modificata che è stato inizialmente creato da Justin Guidroz che bloggato su di esso qui .
Ecco il frammento che dovrebbe essere incluso nel firstboot% in cui non richiede di esporre la password di root in quanto è vuota di default:
ESXi 4.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import sys,re,os,urllib,urllib2
# connection info to MOB
url = "https://localhost/mob/?moid=ha-vnic-mgr&method=selectVnic"
username = "root"
password = ""
#auth
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None,url,username,password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)
#execute method
params = {'nicType':'management','device':'vmk0'}
e_params = urllib.urlencode(params)
req = urllib2.Request(url, e_params)
page = urllib2.urlopen(req).read()
__ENABLE_MGMT_INT__
python /tmp/enableVmkInterface.py
|
ESXi 4.1 Update 1 (Richiede CSRF aggiornamento del codice)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
cat > /tmp/enableVmkInterface.py << __ENABLE_MGMT_INT__
import sys,re,os,urllib,urllib2
# connection info to MOB
url = "https://localhost/mob/?moid=ha-vnic-mgr&method=selectVnic"
username = "root"
password = ""
# Create global variables
global passman,authhandler,opener,req,page,page_content,nonce,headers,cookie,params,e_params
#auth
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None,url,username,password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)
# Code to capture required page data and cookie required for post back to meet CSRF requirements ###
req = urllib2.Request(url)
page = urllib2.urlopen(req)
page_content= page.read()
# regex to get the vmware-session-nonce value from the hidden form entry
reg = re.compile('name="vmware-session-nonce" type="hidden" value="?([^\s^"]+)"')
nonce = reg.search(page_content).group(1)
# get the page headers to capture the cookie
headers = page.info()
cookie = headers.get("Set-Cookie")
#execute method
params = {'vmware-session-nonce':nonce,'nicType':'management','device':'vmk0'}
e_params = urllib.urlencode(params)
req = urllib2.Request(url, e_params, headers={"Cookie":cookie})
page = urllib2.urlopen(req).read()
__ENABLE_MGMT_INT__
python /tmp/enableVmkInterface.py
|
Come potete vedere, abbiamo prima creato lo script python e poi eseguirlo. Questo ci permette di chiamare altre utilità all'interno della console Busybox senza dover specificare l'interprete ad essere python, possiamo semplicemente usare busybox come interprete.
Tip # 7a Ecco una soluzione alternativa per consentire la gestione tipo di traffico su ESXi - Un altro modo per abilitare la gestione del traffico su ESXi
Suggerimento # 8
Se si è tentato di configurare NTP ribadendo i server NTP in / etc / ntpd.conf e riavviare ntpd, si noterà che le modifiche non hanno effetto. L'unico modo che ho potuto ottenere questo lavoro è mediante l'emissione di un altro riavvio che è specificato alla fine del firstboot% che verrà poi raccolto su di avvio dall'host.
Suggerimento # 9
Se volete personalizzare la schermata iniziale DCUI, dare un'occhiata al mio post sul blog Come aggiungere un tocco di colore a ESXi DCUI Schermata di benvenuto .
Suggerimento # 10
Se si desidera aggiornare il nome datastore predefinito da "Datastore1" per qualcosa di più utile, come [hostname]-local-storage-1, è possibile utilizzare vim-cmd (vimsh) per farlo. Ecco la sintassi del comando, se si desidera utilizzare il nome host breve e aggiungere "-local-storage-1" (questo dovrebbe essere fatto nella sezione firstboot% del ks.cfg): hostsvc vim-cmd / datastore / rinominare Datastore1 "$ (hostname-S)-local-storage-1"
Tip # 11
SNMP è un'altra di quelle configurazioni che non può essere configurato e avviato tramite normali servizi come avresti fatto in classico ESX. È possibile apportare le modifiche necessarie al file di configurazione e sarà necessario riavviare l'host per le modifiche abbiano effetto, proprio come configurazioni NTP. Avrete bisogno di editare / etc / vmware / snmpd.xml e aggiungere che alla vostra sezione firstboot . Ecco un esempio di file di snmpd.xml:
|
<config>
<snmpsettings>
<communities>public1;private1</communities>
<enable>true</enable>
<port>163</port>
<targets>192.168.1.5 public1;192.168.1.6@163 private1</targets
</snmpsettings>
</config>
|
Suggerimento # 12