La documentazione per questo prodotto è stata redatta cercando di utilizzare un linguaggio senza pregiudizi. Ai fini di questa documentazione, per linguaggio senza di pregiudizi si intende un linguaggio che non implica discriminazioni basate su età, disabilità, genere, identità razziale, identità etnica, orientamento sessuale, status socioeconomico e intersezionalità. Le eventuali eccezioni possono dipendere dal linguaggio codificato nelle interfacce utente del software del prodotto, dal linguaggio utilizzato nella documentazione RFP o dal linguaggio utilizzato in prodotti di terze parti a cui si fa riferimento. Scopri di più sul modo in cui Cisco utilizza il linguaggio inclusivo.
Cisco ha tradotto questo documento utilizzando una combinazione di tecnologie automatiche e umane per offrire ai nostri utenti in tutto il mondo contenuti di supporto nella propria lingua. Si noti che anche la migliore traduzione automatica non sarà mai accurata come quella fornita da un traduttore professionista. Cisco Systems, Inc. non si assume alcuna responsabilità per l’accuratezza di queste traduzioni e consiglia di consultare sempre il documento originale in inglese (disponibile al link fornito).
In questo documento vengono descritti i passaggi necessari per creare ed eseguire una macchina virtuale Windows (VM) nel modulo Connected Grid Module (CGM) - System Server (SRV).
Cisco raccomanda la conoscenza dei seguenti argomenti:
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Per eseguire applicazioni IOx o VM sulla piattaforma CGR1000, è possibile utilizzare il modulo di calcolo CGM-SRV. Il modulo CGM-SRV è in realtà un piccolo server che contiene una CPU x86 multi-core, memoria e storage. Sia CGR1120 che CGR1240 possono includere uno di questi moduli per aggiungere funzionalità IOx.
Al momento della stesura del presente documento sono disponibili due tipi di file:
SKU (Stock Keep Unit) | Unità a stato solido (SSD) | RAM | CPU |
CGM-SRV-64 | 64 GB (50 GB utilizzabili) | 4 GB | 4 core da 800 MHz |
CGM-SRV-128 | 128 GB (100 GB utilizzabili) | 4 GB | 4 core da 800 MHz |
Ogni modulo è inoltre dotato di due porte USB per lo storage e di una propria interfaccia Gigabit Ethernet esterna.
Come qualsiasi altro dispositivo compatibile con IOx, il modulo può ospitare diversi tipi di applicazioni IOx ma, a causa della maggiore capacità del modulo CGM-SRV, può anche eseguire una distribuzione Windows o Linux standard completamente configurata (ad esempio Ubuntu o CentOS).
Per distribuire una VM Windows sul modulo CGM-SRV, è necessario innanzitutto creare un'immagine in formato QEMU QCOW contenente l'installazione di Windows. Un modo per creare un'immagine di questo tipo consiste nell'utilizzare KVM e virsh su un computer Linux.
Le operazioni descritte più avanti non riguardano affatto il CGR1xxx o il CGM-SRV, sono solo passaggi necessari per creare un'immagine QCOW di Windows 7 VM di base che è possibile installare nella fase successiva del CGM-SRV.
Per questa guida, è possibile iniziare con una nuova installazione minima di CentOS7. I passaggi per le altre distribuzioni Linux devono essere simili, ma possono essere leggermente diversi.
Passaggio 1. È innanzitutto necessario verificare se il computer host supporta le estensioni VM. Sulla piattaforma x86, questi sono AMD-V o Intel VT-X. La maggior parte, se non tutte, le moderne CPU x86 supportano queste estensioni. Anche quando si esegue una VM, la maggior parte degli hypervisor fornisce l'opzione per passare/emulare queste estensioni.
Per verificare se la CPU installata supporta tali estensioni, è necessario verificare se il flag vmx (per VT-X) o svm (per AMD-V) esiste nell'output cpuinfo.
[root@cen7 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo 2
Se l'output di questo comando è 0, significa che nessuna CPU trovata supporta le estensioni della VM. In tal caso, è possibile verificare se tali estensioni sono abilitate nel BIOS o nell'hypervisor quando si utilizza una VM per eseguire questo computer.
Passaggio 2. Il passaggio successivo consiste nella creazione di un bridge per fornire una rete per la macchina virtuale che è possibile eseguire su KMV.
Innanzitutto, è necessario abilitare gli inoltri IP nel kernel:
[root@cen7 ~]# echo "net.ipv4.ip_forward = 1"|sudo tee /etc/sysctl.d/99-ipforward.conf net.ipv4.ip_forward = 1 [root@cen7 ~]# sysctl -p /etc/sysctl.d/99-ipforward.conf net.ipv4.ip_forward = 1
Per creare il bridge, la configurazione IP deve spostarsi dall'interfaccia reale al bridge stesso, in quanto questa è l'interfaccia a cui appartiene l'indirizzo IP.
Dopo aver completato un'installazione standard, la configurazione di rete è in /etc/sysconfig/network-scripts:
[root@cen7 ~]# ls -1 /etc/sysconfig/network-scripts/ifcfg-* /etc/sysconfig/network-scripts/ifcfg-eno16777736 /etc/sysconfig/network-scripts/ifcfg-lo
Passaggio 3. Come si può vedere, esiste attualmente un'interfaccia (oltre all'interfaccia di loopback), chiamata eno16777736. È necessario spostare la configurazione relativa all'IP su un'interfaccia bridge che può essere chiamata virbr0:
[root@cen7 ~]# vi /etc/sysconfig/network-scripts/ifcfg-virbr0 [root@cen7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-virbr0 DEVICE=virbr0 TYPE=BRIDGE ONBOOT=yes BOOTPROTO=static IPADDR=172.16.245.162 NETMASK=255.255.255.0 GATEWAY=172.16.245.2 DNS1=8.8.8.8
Passaggio 4. Quindi, pulire la configurazione IP dall'interfaccia reale e collegarla al bridge virbr0:
[root@cen7 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 [root@cen7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 UUID=46f0f247-e164-40cc-866b-9133458d9df8 DEVICE=eno16777736 ONBOOT=yes BRIDGE=virbr0 HWADDR=00:0c:29:ce:96:38
Passaggio 5. Una volta completata la configurazione della rete, è possibile procedere all'installazione di KVM:
[root@cen7 ~]# sudo yum install kvm virt-manager libvirt virt-install qemu-kvm xauth dejavu-lgc-sans-fonts -y ... Complete!
Passaggio 6. Al termine dell'installazione, la soluzione migliore consiste nel riavviare il computer per applicare i moduli appena installati e la configurazione di rete:
[root@cen7 ~]# init 6
Passaggio 7. Al termine del riavvio, dovrebbe essere possibile accedere al computer con lo stesso indirizzo IP configurato sull'interfaccia del bridge. È necessario verificare se il modulo del kernel KVM è caricato:
root@cen7 ~]# lsmod|grep kvm kvm_intel 200704 0 kvm 589824 1 kvm_intel irqbypass 16384 1 kvm
Passaggio 8. Se il problema persiste, è possibile provare a connettersi a virsh:
[root@cen7 ~]# sudo virsh -c qemu:///system list Id Name State ----------------------------------------------------
Passaggio 9. Un ultimo passaggio consiste nell'aprire la porta 5900 sul firewall del computer per l'accesso VNC all'installazione di Windows:
[root@cen7 ~]# firewall-cmd --zone=public --add-port=5900/tcp --permanent success [root@cen7 ~]# firewall-cmd --reload success
Ora che si dispone di un sistema che funziona con l'installazione KVM, è possibile attivare una nuova VM su KVM ed eseguire attraverso le finestre di dialogo di installazione di Windows.
Passaggio 1. Copiare l'ISO di installazione di Windows 7 nella macchina virtuale (o renderlo accessibile in rete):
[root@cen7 ~]# scp jedepuyd@172.16.X.X:/home/jedepuyd/win7install.iso /var jedepuyd@172.16.X.X's password: win7install.iso 100% 4546MB 62.1MB/s 01:13
Passaggio 2. Creare una nuova VM KVM e avviarla dall'ISO di Windows 7:
root@cen7 ~]# virt-install --connect qemu:///system -n win7 -r 1024 --vcpus=2 --disk path=/var/lib/libvirt/images/win7.img,size=9 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type windows --os-variant win7 --accelerate --network=bridge:virbr0 --hvm --cdrom /var/win7install.iso Starting install... Allocating win7.img | 9.0 GB 00:00:00 Creating domain... | 0 B 00:00:00 Domain installation still in progress. You can reconnect to the console to complete the installation process.
Passaggio 3. Una volta avviata la VM, è possibile connettersi con l'utilizzo del visualizzatore VNC all'indirizzo IP del computer host sulla porta 5900 e completare l'installazione standard di Windows come mostrato nell'immagine:
Se Windows viene riavviato al momento dell'installazione, potrebbe essere necessario riavviare la VM con virsh se questa operazione non viene eseguita automaticamente:
[root@cen7 ~]# virsh start win7 Domain win7 started
Passaggio 4. Al termine dell'installazione, arrestare la VM. È ora disponibile un'immagine QCOW di questa installazione nel percorso fornito al momento della creazione della VM: /var/lib/libvirt/images/win7.img. Questo tipo di immagine può essere implementato sul CGM-SRV per eseguire Windows.
Ora che si dispone del tipo corretto di immagine da eseguire su CGM-SRV, è possibile iniziare a distribuirla.
Passaggio 1. Impostare un profilo per ioxlcient corrispondente alla configurazione:
[root@cen7 ~]# ./ioxclient profiles create Enter a name for this profile : CGR1120_20 Your IOx platform's IP address[127.0.0.1] : 10.X.X.X.X Your IOx platform's port number[8443] : Authorized user name[root] : admin Password for admin : Local repository path on IOx platform[/software/downloads]: URL Scheme (http/https) [https]: API Prefix[/iox/api/v2/hosting/]: Your IOx platform's SSH Port[2222]: Your RSA key, for signing packages, in PEM format[]: Your x.509 certificate in PEM format[]: Activating Profile CGR1120_20 Saving current configuration
Nell'esempio, 10.X.X.X corrisponde all'interfaccia in uscita del CGR1000 su cui Network Address Translation (NAT) è stato configurato per l'inoltro alla porta 8443 sul CGM-SRV.
Passaggio 2. Ora che ioxclient è configurato, rinominare l'immagine creata in precedenza in vm.img per semplificare un bit e copiarla con l'uso di Secure Copy (SCP) con ioxclient in CGM-SRV.
Opzionalmente, convertire l'immagine del disco nel formato QCOW2 come previsto da CGM-SRV. Le versioni più recenti di virt-manager sembrano creare le immagini disco per impostazione predefinita nel formato QCOW3.
È possibile convertire facilmente l'immagine utilizzando questo comando:
[root@cen7 ~]# qemu-img convert -f qcow2 -O qcow2 /var/lib/libvirt/images/win7.img /var/lib/libvirt/images/win7.img
Dopo aver verificato che il formato dell'immagine sia corretto, procedere con la ridenominazione e la copia:
[root@cen7 ~]# mv /var/lib/libvirt/images/win7.img /root/vm.img [root@cen7 ~]# ./ioxclient platform scp /root/vm.img Currently active profile : CGR1120_20 Command Name: plt-scp Saving current configuration Downloaded scp keys to pscp.pem Running command : [scp -P 2222 -r -i pscp.pem /root/vm.img scpuser@10.50.215.246:/]
Il trasferimento potrebbe richiedere alcuni minuti, con velocità di trasferimento da circa 3-4 MB/s al CGM-SRV attraverso Cisco IOS®. Il file viene copiato in /mnt/data/vm/vm.img sul modulo CGM-SRV.
Passaggio 3. Mentre il trasferimento è in corso (o completato), è possibile creare il file package.yaml. In questo file viene descritto a IOx cosa si desidera distribuire e come creare il pacchetto.
[root@cen7 ~]# vi package.yaml [root@cen7 ~]# cat package.yaml descriptor-schema-version: 2.2 info: author-link: http://www.cisco.com/ author-name: Jens Depuydt description: Windows 7 VM for CSR-SRV name: win7 version: 1.0 app: type: vm cpuarch: x86_64 resources: profile: custom cpu: 600 disk: 10 memory: 3072 network: - interface-name: eth0 - interface-name: eth1 graphics: vnc: true startup: ostype: windows qemu-guest-agent: false disks: - target-dev: hda file: file://vm.img
Come si può vedere in questo package.yaml, si fa riferimento a file://vm.img, che corrisponde alla posizione reale di mnt/data/vm/vm.img sul modulo CGM-SRV.
Passaggio 4. Il passaggio successivo consiste nel creare un pacchetto con l'utilizzo di ioxclient:
[root@cen7 ~]# ./ioxclient pkg . Currently active profile : default Command Name: package No rsa key and/or certificate files to sign the package Checking if package descriptor file is present.. Validating descriptor file /root/package.yaml with package schema definitions Parsing descriptor file.. Found schema version 2.2 Loading schema file for version 2.2 Validating package descriptor file.. File /root/package.yaml is valid under schema version 2.2 Created Staging directory at : /var/folders/sp/f9qn2fsn0d5fkj7szps6qvvr0000gn/T/638513626 Copying contents to staging directory Checking for application runtime type Couldn't detect application runtime type Creating an inner envelope for application artifacts Excluding .DS_Store Generated /var/folders/sp/f9qn2fsn0d5fkj7szps6qvvr0000gn/T/638513626/artifacts.tar.gz Calculating SHA1 checksum for package contents.. Package MetaData file was not found at /private/var/folders/sp/f9qn2fsn0d5fkj7szps6qvvr0000gn/T/638513626/.package.metadata Wrote package metadata file : /private/var/folders/sp/f9qn2fsn0d5fkj7szps6qvvr0000gn/T/638513626/.package.metadata Root Directory : /private/var/folders/sp/f9qn2fsn0d5fkj7szps6qvvr0000gn/T/638513626 Output file: /var/folders/sp/f9qn2fsn0d5fkj7szps6qvvr0000gn/T/559089521 Path: .package.metadata SHA1 : 262f763740c182f95358be84514a76ac11e37012 Path: artifacts.tar.gz SHA1 : 3d89ccd35fe5318dd83a249a26cb8140d98d15bb Path: package.yaml SHA1 : aa42f949b707df07a83a17344e488c44eb585561 Generated package manifest at package.mf Generating IOx Package.. Package generated at /root/package.tar
Passaggio 5. Dopo aver creato il pacchetto, è possibile installarlo sul nostro CGM-SRV. In questo esempio, l'applicazione/macchina virtuale IOx è denominata win7:
[root@cen7 ~]# ./ioxclient app install win7 package.tar Currently active profile : default Command Name: application-install Saving current configuration Installation Successful. App is available at : https://10.X.X.X:8443/iox/api/v2/hosting/apps/win7 Successfully deployed
Passaggio 6. Prima di poter attivare la macchina virtuale Win7 IOx, è necessario creare un file JSON di payload che imposti la password VNC per questa macchina virtuale:
[root@cen7 ~]# vi vnc.json [root@cen7 ~]# cat vnc.json { "resources": { "graphics": {"vnc-password": "password"} } }
Passaggio 7. Utilizzando il payload vnc.json, è possibile attivare la VM Win7 IOx:
[root@cen7 ~]# ./ioxclient app activate win7 --payload vnc.json Currently active profile : default Command Name: application-activate Payload file : vnc.json. Will pass it as application/json in request body.. App win7 is Activated
Passaggio 8. L'ultimo passaggio con ioxclient consiste nell'avviare la macchina virtuale:
[root@cen7 ~]# ./ioxclient app start win7 Currently active profile : default Command Name: application-start App win7 is Started
A questo punto, la VM Windows viene eseguita su CGM-SRV e si può iniziare a utilizzarla.
Per accedere alla console del computer Windows, è possibile utilizzare il visualizzatore VNC sull'interfaccia in uscita del CGR1000 e sulla porta 5900, come mostrato nell'immagine:
Dal punto di vista della rete, si è scelto di assegnare eth0 e eth1 alla VM Win7 IOx con l'uso del file package.yaml come mostrato nell'immagine:
Come si può vedere, queste interfacce hanno un indirizzo IP dal server DHCP che funziona su Cisco IOS® e può essere usato senza ulteriori configurazioni.
Fare riferimento a questa sezione per verificare che la configurazione funzioni correttamente.
Per verificare se la VM è in esecuzione:
[root@cen7 ~]# ./ioxclient app list Currently active profile : CGR1120_20 Command Name: application-list Saving current configuration List of installed App : 1. win7 ---> RUNNING
È inoltre possibile controllare lo stato da Gestione locale, come mostrato nell'immagine:
Le informazioni contenute in questa sezione permettono di risolvere i problemi relativi alla configurazione.
Per risolvere i problemi relativi all'installazione, controllare l'output di ioxclient o /var/log/caf.log sul sistema operativo host CGM-SRV.
Verificare che NAT sia configurato correttamente per accedere a tutte le risorse (Cisco Application-Hosting Framework (CAF), Secure Shell (SSH), VNC).